Topology: Overlapped Features

523
2
Jump to solution
07-18-2017 03:54 AM
ShaningYu
Frequent Contributor

Below is a piece of code used in my program to determine if a polygon feature is overlapped with another polygon feature by referring to A feature overlapped with another feature 

        public bool feature_Intersect_feature(ESRI.ArcGIS.Geodatabase.IFeature f1, ESRI.ArcGIS.Geodatabase.IFeature f2) {
            // Create a geometrybag for f1
            ESRI.ArcGIS.Geometry.IGeometry geometryBag = new ESRI.ArcGIS.Geometry.GeometryBagClass();
            geometryBag = (ESRI.ArcGIS.Geometry.GeometryBag)f1.ShapeCopy;

            // set the topology operator
            ESRI.ArcGIS.Geometry.ITopologicalOperator pTopOp;
            pTopOp = (ESRI.ArcGIS.Geometry.ITopologicalOperator)f1.Shape; // new ESRI.ArcGIS.Geometry.PolygonClass();

            // set for f2
            ESRI.ArcGIS.Geometry.IGeometry5 pInGeometry = (ESRI.ArcGIS.Geometry.IGeometry5)f2.ShapeCopy;

            //ESRI.ArcGIS.Geometry.IGeometry pInGeometry = (ESRI.ArcGIS.Geometry.IGeometry)f2.ShapeCopy;
            if (pInGeometry.Dimension == ESRI.ArcGIS.Geometry.esriGeometryDimension.esriGeometry2Dimension)  {
                if (f1.ShapeCopy.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon) {
                    ESRI.ArcGIS.Geometry.IGeometry pOverlapGeometry = pTopOp.Intersect(pInGeometry,
                        ESRI.ArcGIS.Geometry.esriGeometryDimension.esriGeometry2Dimension);
                    if (pOverlapGeometry != null)
                        return true;
                }
            }
            return false;
        }

However, when it is executed for 2 far-away and not interacted polygons, the returned result is true, which means they are interacted.  What is wrong in my code?  Thanks if you can point it out?

0 Kudos
1 Solution

Accepted Solutions
by Anonymous User
Not applicable

Maybe check to see if intersect is returning an empty geometry rather than a null geometry?

View solution in original post

0 Kudos
2 Replies
by Anonymous User
Not applicable

Maybe check to see if intersect is returning an empty geometry rather than a null geometry?

0 Kudos
ShaningYu
Frequent Contributor

I also realized before reading your response.  I added another condition check-up like that below:

if (pOverlapGeometry != null && (pOverlapGeometry as ESRI.ArcGIS.Geometry.Polygon).PointCount > 0)

   return true;

Thanks a lot.  Your response is credit as CORRECT.

0 Kudos