Dear all, and Martin in particular, I think,
We are encountering a behaviour that we believe is not following the JTS 
documentation. This was first identify in PostGis ( therefore using the GEOS 
port of JTS), and replicated in QGIS with a smaller example. It is a variation 
on the classical bow-tie problem.

We have a MUlTIPOLYGON geometry with two member geometries, and these have 
touching external LinearRings (in one vertex).

Now, following the JTS javadoc, we believe this is ok and satisfies the 
interpretation of :
http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/geom/MultiPolygon.html

“As per the OGC SFS specification, the Polygons in a MultiPolygon may not 
overlap, and may only touch at single points. This allows the topological 
point-set semantics to be well-defined.”

It is also a common suggestion to change bow-tie geometries into multipolygons 
( here is a GEOS piece of documentation, but this has been discussed on this 
list as well:
http://trac.osgeo.org/geos/wiki/GeometryCleaning

"POLYGON rings must not self-touch

  *   The classic "bow-tie" polygon would have to be re-written as a "polygon 
with hole that touches once"
  *   A figure-8 polygon would have to be re-written as a MULTIPOLYGON
  *   Sometimes the figure-8 has one really, really small side, and it's best 
to just lose those
  *   Similarly sometimes one half of the bow-tie is really small and should 
just be dropped…

… and,
POLYGON rings must be properly nested and only touch once “

I have tested this on two very simple WKT examples:

1. Mutlipolygon where two member geometries touch in a single vertex (10 10) - 
this is our target case

MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((10 10,20 10,20 20,10 20,10 10)))


Fails the validity test.
1,segment 0 of ring 1 of polygon 0 intersects segment 0 of ring 0 of polygon 1 
at 10, 10
1,segment 0 of ring 2 of polygon 0 intersects segment 0 of ring 3 of polygon 1 
at 10, 10
1,Geometry has 2 errors.

I note that these errors are form the QGIS topology validator, and I also 
believe that these are not correct reports ( just checking the numbering of 
rings – there are only 2!). Nowe, I believe that GEOS is used to do this check, 
hence it should be identical to JTS (and as a member here, I report it here – 
if a Java example code is needed, I can provide it but I do not currently have 
a project handy).

2. A Multipolygon where one of the member geometries has a bow tie (vertex 
occurring twice) [this is a known, invalid case, for completeness]

MULTIPOLYGON(((0 0,10 0,10 10,20 10,20 20,10 20,10 10,0 10,0 0)),((30 30,40 30, 
40 40,30 40, 30 30)))


Fails with the same errors.
1,segments 1 and 6 of line 0 intersect at 10, 10
1,segments 2 and 5 of line 0 intersect at 10, 10
1,Geometry has 2 errors.

My question is: is the doc of the JTS/GEOS insufficiently explicit and we canot 
have touching member geometries, or is this a bug?

Thanks,
Martin

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&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