[postgis-devel] IsValidOp throwing IllegalArgumentException
strk
strk at keybit.net
Fri Nov 5 02:19:05 PST 2004
Martin, I've tracked down wher the problem is.
In CGAlgoritms::isCCW():
// this will catch all cases where there are not 3 distinct points,
// including the case where the input array has fewer than 4 elements
if (prev==hip || next==hip || prev==next)
throw new IllegalArgumentException("degenerate ring (does not contain 3 distinct points)");
In GeoemtryGraph::addPolygonRing():
lrcl = lr->getCoordinatesRO();
CoordinateSequence* coord=CoordinateSequence::removeRepeatedPoints(lrcl);
if (coord->getSize()<4) // CLEANLY HANDLES !
...
if (cga->isCCW(coord)) // THROWS !
...
Note that this is the IsValidOp running, so it should be able to
return a result in that case (IS NOT VALID).
Currently I've made IsValidOp wrap GeometryGraph construction in
a try/catch block catching IllegalArgumentException as a sign of
invalidity, but isn't this too large of a catch ?
--strk;
More information about the postgis-devel
mailing list