oshdb
oshdb copied to clipboard
Incorrect geometry for Multipolygons with shells which share a single point!
Wrong and inconsistent geometries for multipolygon with multiple outer shells which share a common node. In JTS this is a valid multipolygon. Simplified case:
lat ^ | 4 a--d 3 | | 2 b--c--e 1 | | 0 g--f 0123456 -> lon A: (a,b,c)\ one shell (a,b,c,d,a) B: (c,d,a)/ C: (c,e,f)\ one shell (c,e,f,g,c) D: (f,g,c)/
Expected behaviour
Either
-
MULTIPOLYGON (((0 4, 0 2, 3 2, 3 4, 0 4)), ((3 2, 6 2, 6 0, 3 0, 3 2)))
-
MULTIPOLYGON (((3 2, 6 2, 6 0, 3 0, 3 2)), ((0 4, 0 2, 3 2, 3 4, 0 4)))
- or similar
for different member permutations we got different results. According to the osm wiki "The order of the relation members does not matter".
ABCD - GEOMETRYCOLLECTION (LINESTRING (0 4, 0 2, 3 2), LINESTRING (3 2, 3 4, 0 4), LINESTRING (3 2, 6 2, 6 0), LINESTRING (6 0, 3 0, 3 2))
ABDC - GEOMETRYCOLLECTION (LINESTRING (0 4, 0 2, 3 2), LINESTRING (3 2, 3 4, 0 4), LINESTRING (6 0, 3 0, 3 2), LINESTRING (3 2, 6 2, 6 0))
ACBD - GEOMETRYCOLLECTION (LINESTRING (0 4, 0 2, 3 2), LINESTRING (3 2, 6 2, 6 0), LINESTRING (3 2, 3 4, 0 4), LINESTRING (6 0, 3 0, 3 2))
ACDB - POLYGON ((0 4, 0 2, 3 2, 6 2, 6 0, 3 0, 6 0, 3 4, 0 4))
ADBC - GEOMETRYCOLLECTION (LINESTRING (0 4, 0 2, 3 2), LINESTRING (6 0, 3 0, 3 2), LINESTRING (3 2, 3 4, 0 4), LINESTRING (3 2, 6 2, 6 0))
ADCB - POLYGON ((0 4, 0 2, 3 2, 3 0, 6 0, 6 2, 6 0, 3 4, 0 4))
BACD - GEOMETRYCOLLECTION (LINESTRING (3 2, 3 4, 0 4), LINESTRING (0 4, 0 2, 3 2), LINESTRING (3 2, 6 2, 6 0), LINESTRING (6 0, 3 0, 3 2))
BADC - GEOMETRYCOLLECTION (LINESTRING (3 2, 3 4, 0 4), LINESTRING (0 4, 0 2, 3 2), LINESTRING (6 0, 3 0, 3 2), LINESTRING (3 2, 6 2, 6 0))
BCAD - GEOMETRYCOLLECTION (LINESTRING (3 2, 3 4, 0 4), LINESTRING (3 2, 6 2, 6 0), LINESTRING (0 4, 0 2, 3 2), LINESTRING (6 0, 3 0, 3 2))
BDAC - GEOMETRYCOLLECTION (LINESTRING (3 2, 3 4, 0 4), LINESTRING (6 0, 3 0, 3 2), LINESTRING (0 4, 0 2, 3 2), LINESTRING (3 2, 6 2, 6 0))
BDCA - GEOMETRYCOLLECTION (LINESTRING (3 2, 3 4, 0 4), LINESTRING (6 0, 3 0, 3 2), LINESTRING (3 2, 6 2, 6 0), LINESTRING (0 4, 0 2, 3 2))
BCDA - GEOMETRYCOLLECTION (LINESTRING (3 2, 3 4, 0 4), LINESTRING (3 2, 6 2, 6 0), LINESTRING (6 0, 3 0, 3 2), LINESTRING (0 4, 0 2, 3 2))
CABD - GEOMETRYCOLLECTION (LINESTRING (3 2, 6 2, 6 0), LINESTRING (0 4, 0 2, 3 2), LINESTRING (3 2, 3 4, 0 4), LINESTRING (6 0, 3 0, 3 2))
CADB - GEOMETRYCOLLECTION (LINESTRING (3 2, 6 2, 6 0), LINESTRING (0 4, 0 2, 3 2), LINESTRING (6 0, 3 0, 3 2), LINESTRING (3 2, 3 4, 0 4))
CBAD - GEOMETRYCOLLECTION (LINESTRING (3 2, 6 2, 6 0), LINESTRING (3 2, 3 4, 0 4), LINESTRING (0 4, 0 2, 3 2), LINESTRING (6 0, 3 0, 3 2))
CBDA - GEOMETRYCOLLECTION (LINESTRING (3 2, 6 2, 6 0), LINESTRING (3 2, 3 4, 0 4), LINESTRING (6 0, 3 0, 3 2), LINESTRING (0 4, 0 2, 3 2))
CDAB - GEOMETRYCOLLECTION (LINESTRING (3 2, 6 2, 6 0), LINESTRING (6 0, 3 0, 3 2), LINESTRING (0 4, 0 2, 3 2), LINESTRING (3 2, 3 4, 0 4))
CDBA - GEOMETRYCOLLECTION (LINESTRING (3 2, 6 2, 6 0), LINESTRING (6 0, 3 0, 3 2), LINESTRING (3 2, 3 4, 0 4), LINESTRING (0 4, 0 2, 3 2))
DABC - POLYGON ((6 0, 3 0, 3 2, 0 2, 0 4, 3 4, 0 4, 6 2, 6 0))
DACB - GEOMETRYCOLLECTION (LINESTRING (6 0, 3 0, 3 2), LINESTRING (0 4, 0 2, 3 2), LINESTRING (3 2, 6 2, 6 0), LINESTRING (3 2, 3 4, 0 4))
DBAC - POLYGON ((6 0, 3 0, 3 2, 3 4, 0 4, 0 2, 0 4, 6 2, 6 0))
DBCA - GEOMETRYCOLLECTION (LINESTRING (6 0, 3 0, 3 2), LINESTRING (3 2, 3 4, 0 4), LINESTRING (3 2, 6 2, 6 0), LINESTRING (0 4, 0 2, 3 2))
DCAB - GEOMETRYCOLLECTION (LINESTRING (6 0, 3 0, 3 2), LINESTRING (3 2, 6 2, 6 0), LINESTRING (0 4, 0 2, 3 2), LINESTRING (3 2, 3 4, 0 4))
DCBA - GEOMETRYCOLLECTION (LINESTRING (6 0, 3 0, 3 2), LINESTRING (3 2, 6 2, 6 0), LINESTRING (3 2, 3 4, 0 4), LINESTRING (0 4, 0 2, 3 2))