Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save blah238/5054488 to your computer and use it in GitHub Desktop.
Save blah238/5054488 to your computer and use it in GitHub Desktop.
LINQPad ITopologicalOperator.Intersect test
<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