P - point
POINT(10 10)
true
mP - multipoint with repeated points
MULTIPOINT ((80 280), (80 220), (160 220), (80 220))
false
mP - multipoint with no repeated points
MULTIPOINT ((80 280), (80 220), (160 220))
true
mP - empty
MULTIPOINT EMPTY
true
L - simple line
LINESTRING(10 10, 20 20)
true
L - non-simple, proper interior intersection
LINESTRING (20 60, 160 60, 80 160, 80 20)
false
L - non-simple, interior intersection at vertices
LINESTRING (20 80, 80 20, 80 80, 140 60, 80 20, 160 20)
false
L - non-simple, interior intersection at Bdy/non-vertex
LINESTRING (20 60, 100 60, 60 100, 60 60)
false
L - non-simple, interior intersection at Bdy/vertex
LINESTRING (20 60, 60 60, 100 60, 60 100, 60 60)
false
L - simple, intersection at Bdy/Bdy (ring)
LINESTRING (20 20, 80 20, 80 80, 20 20)
true
L - simple, intersection at Bdy/Bdy + non-vertex
LINESTRING (80 80, 20 20, 20 80, 140 80, 140 140, 80 80)
false
L - empty
LINESTRING EMPTY
true
mL - intersection between elements at non-vertex
MULTILINESTRING(
(40 140, 160 40),
(160 140, 40 40))
false
mL - no intersection between elements
MULTILINESTRING(
(20 160, 20 20),
(100 160, 100 20))
true
mL - mutual intersection at endpoints only
MULTILINESTRING ((60 140, 20 80, 60 40),
(60 40, 100 80, 60 140))
true
mL - one element is non-simple
MULTILINESTRING ((60 40, 140 40, 100 120, 100 0),
(100 200, 200 120))
false
mL - proper intersection between elements at vertex
MULTILINESTRING ((40 120, 100 60),
(160 120, 100 60),
(40 60, 160 60))
false
mL - intersection between closed lines
MULTILINESTRING ((80 160, 40 220, 40 100, 80 160),
(80 160, 120 220, 120 100, 80 160))
false
mL - intersection between closed and open lines
MULTILINESTRING ((80 160, 40 220),
(80 160, 120 220, 120 100, 80 160),
(40 100, 80 160))
false
LR - valid ring
LINEARRING (100 300, 200 300, 200 200, 100 200, 100 300)
true
LR - ring with self-intersection
LINEARRING (100 300, 200 300, 100 200, 200 200, 100 300)
false
A - valid polygon
POLYGON ((180 260, 80 300, 40 180, 160 120, 180 260))
true
A - invalid bowtie polygon
POLYGON ((100 100, 100 200, 200 100, 200 200, 100 100))
false
A - empty
POLYGON EMPTY
true
mA - valid polygon
MULTIPOLYGON (((240 160, 140 220, 80 60, 220 40, 240 160)),
((160 380, 100 240, 20 380, 160 380),
(120 340, 60 360, 80 320, 120 340)))
true
mA - with touching elements
MULTIPOLYGON (((240 160, 100 240, 80 60, 220 40, 240 160)),
((160 380, 100 240, 20 380, 160 380),
(120 340, 60 360, 80 320, 120 340)))
true
mA - with an invalid bowtie element
MULTIPOLYGON (((100 100, 100 200, 200 100, 200 200, 100 100)), ((100 400, 200 400, 200 300, 100 300, 100 400)))
false
GC - all components simple
GEOMETRYCOLLECTION (POLYGON ((100 200, 200 200, 200 100, 100 100, 100 200)),
LINESTRING (100 300, 200 250),
POINT (250 250),
POINT (250 150))
true
GC - one non-simple component
GEOMETRYCOLLECTION (POLYGON ((100 100, 100 200, 200 100, 200 200, 100 100)),
LINESTRING (100 300, 200 250),
POINT (250 250),
POINT (250 150))
false