Intersection(Geometry,Geometry) Method
Constructs the set-theoretic intersection between two geometries.
Parameters
- geometry1
- The first geometry.
- geometry2
- The second geometry.
Return Value
A geometry that represents the intersection of the two input geometries. The dimension of the returned geometry will be the lowest dimension of the input geometries. For example, if is a
MapPoint and is a
Polyline, the returned geometry will be a
MapPoint. If both input geometries are envelopes, then an envelope will be returned. If one input geometry is an envelope and the other is a polygon, then a polygon will be returned. If the dimension of the intersection is not equal to the lowest dimension of the input geometries, an empty geometry will be returned. For example, suppose that is a
Polyline and is a
Polyline, and they cross each other at two points. The intersection is a
Multipoint, but an empty
Polyline will be returned. In this case, if you want the returned geometry to be the
Multipoint where the input geometries intersect, use
Intersection(Geometry,Geometry,GeometryDimensionType).
Intersection between two Polylines
// determine intersection between two polylines
List<MapPoint> pts = new List<MapPoint>();
pts.Add(MapPointBuilderEx.CreateMapPoint(1.0, 1.0));
pts.Add(MapPointBuilderEx.CreateMapPoint(3.0, 3.0));
pts.Add(MapPointBuilderEx.CreateMapPoint(5.0, 1.0));
Polyline line1 = PolylineBuilderEx.CreatePolyline(pts);
List<MapPoint> pts2 = new List<MapPoint>();
pts2.Add(MapPointBuilderEx.CreateMapPoint(1.0, 3.0));
pts2.Add(MapPointBuilderEx.CreateMapPoint(3.0, 1.0));
pts2.Add(MapPointBuilderEx.CreateMapPoint(5.0, 3.0));
Polyline line2 = PolylineBuilderEx.CreatePolyline(pts2);
bool intersects = GeometryEngine.Instance.Intersects(line1, line2); // intersects = true
Geometry g = GeometryEngine.Instance.Intersection(line1, line2, GeometryDimensionType.EsriGeometry0Dimension);
Multipoint resultMultipoint = g as Multipoint;
// result is a multiPoint that intersects at (2,2) and (4,2)
Intersection between two Polygons
// determine intersection between two polygons
Envelope env1 = EnvelopeBuilderEx.CreateEnvelope(new Coordinate2D(3.0, 2.0), new Coordinate2D(6.0, 6.0));
Polygon poly1 = PolygonBuilderEx.CreatePolygon(env1);
Envelope env2 = EnvelopeBuilderEx.CreateEnvelope(new Coordinate2D(1.0, 1.0), new Coordinate2D(4.0, 4.0));
Polygon poly2 = PolygonBuilderEx.CreatePolygon(env2);
Polygon polyResult = GeometryEngine.Instance.Intersection(poly1, poly2) as Polygon;
Target Platforms: Windows 11, Windows 10
ArcGIS Pro version: 3 or higher.