Hi Martin,

A MultiPolygon made of a valid polygon and an empty polygon throws the
following exception if isValid is called :

java.lang.ArrayIndexOutOfBoundsException: 0
     at 
com.vividsolutions.jts.index.chain.MonotoneChain.getEnvelope(MonotoneChain.java:106)
     at 
com.vividsolutions.jts.algorithm.MCPointInRing.buildIndex(MCPointInRing.java:89)
     at 
com.vividsolutions.jts.algorithm.MCPointInRing.<init>(MCPointInRing.java:76)
     at 
com.vividsolutions.jts.operation.valid.IsValidOp.checkHolesInShell(IsValidOp.java:447)
     at 
com.vividsolutions.jts.operation.valid.IsValidOp.checkValid(IsValidOp.java:284)
     at 
com.vividsolutions.jts.operation.valid.IsValidOp.checkValid(IsValidOp.java:184)
     at 
com.vividsolutions.jts.operation.valid.IsValidOp.isValid(IsValidOp.java:153)
     at 
com.vividsolutions.jts.operation.valid.IsValidOp.isValid(IsValidOp.java:60)
     at com.vividsolutions.jts.geom.Geometry.isValid(Geometry.java:441)

It is possible to make a short-circuit in IsValidOp for empty shell 
(faster) and/or
to consider the case of empty coordinate arrays in MonotoChain (more 
robust).

Do you still monitor JTS sourceforge bugtracker ? (If yes, I'll make a 
bug report for this problem and for the one about Geometry.compare() 
method I've reported on the list some days ago).

Michaƫl

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Jts-topo-suite-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user

Reply via email to