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?
Solved! Go to Solution.
Maybe check to see if intersect is returning an empty geometry rather than a null geometry?
Maybe check to see if intersect is returning an empty geometry rather than a null geometry?
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.