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