Created
February 28, 2013 05:36
-
-
Save blah238/5054488 to your computer and use it in GitHub Desktop.
LINQPad ITopologicalOperator.Intersect test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Query Kind="Program"> | |
<Reference>C:\CSProjects\DnrGps_Wkt\bin\Release\DnrGps_Wkt.dll</Reference> | |
<GACReference>ESRI.ArcGIS.Framework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86</GACReference> | |
<GACReference>ESRI.ArcGIS.Geometry, Version=10.1.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86</GACReference> | |
<GACReference>ESRI.ArcGIS.System, Version=10.1.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86</GACReference> | |
<GACReference>ESRI.ArcGIS.Version, Version=10.1.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86</GACReference> | |
<Namespace>DnrGps_Wkt</Namespace> | |
<Namespace>ESRI.ArcGIS.esriSystem</Namespace> | |
<Namespace>ESRI.ArcGIS.Framework</Namespace> | |
<Namespace>ESRI.ArcGIS.Geometry</Namespace> | |
</Query> | |
void Main() | |
{ | |
if (ESRI.ArcGIS.RuntimeManager.ActiveRuntime == null) | |
ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.EngineOrDesktop); | |
var geom1 = "LINESTRING (0 0, 2 2)".ToGeometry(); | |
var geom2 = "POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))".ToGeometry(); | |
var geom3 = "LINESTRING (0 1, 1 0)".ToGeometry(); | |
var overlapped1 = GetOverlappedGeometry(geom1, geom2, esriGeometryDimension.esriGeometry1Dimension); | |
overlapped1.ToWellKnownText().Dump(); | |
var overlapped2 = GetOverlappedGeometry(geom3, overlapped1, esriGeometryDimension.esriGeometry0Dimension); | |
overlapped2.ToWellKnownText().Dump(); | |
} | |
public IGeometry GetOverlappedGeometry(IGeometry sourceGeometry, IGeometry targetGeometry, esriGeometryDimension dimension) | |
{ | |
IGeometry overlappedGeometry = null; | |
IGeometry localSourceGeometry; | |
IGeometry localTargetGeometry; | |
if (sourceGeometry.GeometryType > targetGeometry.GeometryType) | |
{ | |
localSourceGeometry = targetGeometry; | |
localTargetGeometry = sourceGeometry; | |
} | |
else | |
{ | |
localSourceGeometry = sourceGeometry; | |
localTargetGeometry = targetGeometry; | |
} | |
var targetOperator = (ITopologicalOperator)localTargetGeometry; | |
if (targetOperator != null) | |
{ | |
targetOperator.Simplify(); | |
IGeometry intersectGeometry = targetOperator.Intersect(localSourceGeometry, dimension); | |
overlappedGeometry = intersectGeometry; | |
} | |
return overlappedGeometry; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment