Hello,
I have a serious problem with spatial query in ArcObject.
Code is simple. I update featureclass "fcTotalConvexPathSplit" before this codeblck using other operations, then check 'crossing' with fcInsideBarriers.
fcTotalConvexPathSplit is line, and fcInsideBarriers is polygon.
"relOperInsideBarriers.Crosses(gbTotalConvexPathSplit)" is supposed to return false there is no line in fcTotalConvexPathSplit crosses fcInsideBarriers, right?
But, it return false when there are many number of crossings.
I tried to simplify it, like below
But result was same. It makes error.
I also tried to use ISpatialFilter, but it made similar error, though it sometimes could produce right result, but otherwise couldn't.
What's going on here. I cannot figure out what the problem is...
Thank you
I have a serious problem with spatial query in ArcObject.
Code:
IRelationalOperator relOperInsideBarriers = (IRelationalOperator) fcInsideBarriers
IGeometryBag gbTotalConvexPathSplit = fcUtils.getGeoBag(fcTotalConvexPathSplit);
if (relOperInsideBarriers.Crosses(gbTotalConvexPathSplit) == false)
{
Console.WriteLine("Break");
break;
}
fcTotalConvexPathSplit is line, and fcInsideBarriers is polygon.
"relOperInsideBarriers.Crosses(gbTotalConvexPathSplit)" is supposed to return false there is no line in fcTotalConvexPathSplit crosses fcInsideBarriers, right?
But, it return false when there are many number of crossings.
I tried to simplify it, like below
Code:
IGeometryBag gbTotalConvexPathSplit = fcUtils.getGeoBag(fcTotalConvexPathSplit);
ITopologicalOperator pTopOp = gbTotalConvexPathSplit as ITopologicalOperator;
pTopOp.Simplify();
IGeometry igTopo = pTopOp as IGeometry;
if (relOperInsideBarriers.Crosses(igTopo) == false)
{
Console.WriteLine("Break");
break;
}
But result was same. It makes error.
I also tried to use ISpatialFilter, but it made similar error, though it sometimes could produce right result, but otherwise couldn't.
What's going on here. I cannot figure out what the problem is...
Thank you