AA - sliver triangle, cut by polygon POLYGON( (10 10, 100 10, 10 11, 10 10)) POLYGON( (90 0, 200 0, 200 200, 90 200, 90 0)) true LINESTRING(90 10, 100 10) MULTIPOLYGON( ( (90 10, 10 10, 10 11, 90 10)), ( (90 10, 90 200, 200 200, 200 0, 90 0, 90 10))) POLYGON( (90 10, 10 10, 10 11, 90 10)) MULTIPOLYGON( ( (90 10, 10 10, 10 11, 90 10)), ( (90 10, 90 200, 200 200, 200 0, 90 0, 90 10))) AA - polygon with outward sliver, cut by polygon POLYGON( (100 10, 10 10, 90 11, 90 20, 100 20, 100 10)) POLYGON( (20 20, 0 20, 0 0, 20 0, 20 20)) true LINESTRING(20 10, 10 10) AA - narrow wedge in polygon POLYGON((10 10, 50 10, 50 50, 10 50, 10 31, 49 30, 10 30, 10 10)) POLYGON((60 40, 40 40, 40 20, 60 20, 60 40)) true POLYGON( (50 40, 50 20, 40 20, 40 30, 40 40, 50 40)) POLYGON( (50 20, 50 10, 10 10, 10 30, 40 30, 10 31, 10 50, 50 50, 50 40, 60 40, 60 20, 50 20)) MULTIPOLYGON( ( (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), ( (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30))) MULTIPOLYGON( ( (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), ( (50 20, 50 40, 60 40, 60 20, 50 20)), ( (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30))) AA - hole close to shell POLYGON( (10 100, 10 10, 100 10, 100 100, 10 100), (90 90, 11 90, 10 10, 90 11, 90 90)) POLYGON( (0 30, 0 0, 30 0, 30 30, 0 30)) true MULTILINESTRING( (10 30, 10 10), (10 10, 30 10)) MULTIPOLYGON( ( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), ( (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10))) POLYGON( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) MULTIPOLYGON( ( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), ( (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10))) mAA - shells close together MULTIPOLYGON( ( (0 0, 100 0, 100 20, 0 20, 0 0)), ( (0 40, 0 21, 100 20, 100 40, 0 40))) POLYGON( (110 30, 90 30, 90 10, 110 10, 110 30)) true GEOMETRYCOLLECTION( LINESTRING(100 20, 90 20), POLYGON( (100 20, 100 10, 90 10, 90 20, 90 30, 100 30, 100 20))) POLYGON( (100 10, 100 0, 0 0, 0 20, 90 20, 0 21, 0 40, 100 40, 100 30, 110 30, 110 10, 100 10)) MULTIPOLYGON( ( (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), ( (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20))) MULTIPOLYGON( ( (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), ( (100 10, 100 20, 100 30, 110 30, 110 10, 100 10)), ( (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20))) AA - A sliver triangle cutting all the way across B POLYGON( (100 10, 0 10, 100 11, 100 10)) POLYGON( (20 20, 0 20, 0 0, 20 0, 20 20)) true LINESTRING(20 10, 0 10) MULTIPOLYGON( ( (100 10, 20 10, 100 11, 100 10)), ( (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) POLYGON( (100 10, 20 10, 100 11, 100 10)) MULTIPOLYGON( ( (100 10, 20 10, 100 11, 100 10)), ( (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) AA - A polygon with sliver cutting all the way across B POLYGON( (100 10, 0 10, 90 11, 90 20, 100 20, 100 10)) POLYGON( (20 20, 0 20, 0 0, 20 0, 20 20)) true LINESTRING(20 10, 0 10) MULTIPOLYGON( ( (100 10, 20 10, 90 11, 90 20, 100 20, 100 10)), ( (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) AA - hole close to shell, B coincident with A POLYGON( (10 100, 10 10, 100 10, 100 100, 10 100), (90 90, 11 90, 10 10, 90 11, 90 90)) POLYGON( (10 30, 10 0, 30 10, 30 30, 10 30)) true MULTILINESTRING( (10 30, 10 10), (10 10, 30 10)) MULTIPOLYGON( ( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), ( (10 10, 10 30, 30 30, 30 10, 10 0, 10 10))) POLYGON( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) MULTIPOLYGON( ( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), ( (10 10, 10 30, 30 30, 30 10, 10 0, 10 10))) AA - A hole close to shell, B coincident with A POLYGON( (10 100, 10 10, 100 10, 100 100, 10 100), (90 90, 11 90, 10 10, 90 11, 90 90)) POLYGON( (10 30, 10 10, 30 10, 30 30, 10 30)) true MULTILINESTRING( (10 30, 10 10), (10 10, 30 10)) MULTIPOLYGON( ( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), ( (10 10, 10 30, 30 30, 30 10, 10 10))) POLYGON( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) MULTIPOLYGON( ( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), ( (10 10, 10 30, 30 30, 30 10, 10 10))) AA - B hole close to shell, A coincident with B POLYGON( (10 30, 10 10, 30 10, 30 30, 10 30)) POLYGON( (10 100, 10 10, 100 10, 100 100, 10 100), (90 90, 11 90, 10 10, 90 11, 90 90)) true MULTILINESTRING( (10 30, 10 10), (10 10, 30 10)) MULTIPOLYGON( ( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), ( (10 10, 10 30, 30 30, 30 10, 10 10))) POLYGON( (10 10, 10 30, 30 30, 30 10, 10 10)) MULTIPOLYGON( ( (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), ( (10 10, 10 30, 30 30, 30 10, 10 10))) AA - B sliver crossing A triangle in line segment with length < 1 POLYGON( (0 0, 200 0, 0 198, 0 0)) POLYGON( (280 60, 139 60, 280 70, 280 60)) true POINT(139 60) MULTIPOLYGON( ( (139 60, 200 0, 0 0, 0 198, 139 60)), ( (280 60, 139 60, 280 70, 280 60))) POLYGON( (139 60, 200 0, 0 0, 0 198, 139 60)) MULTIPOLYGON( ( (139 60, 200 0, 0 0, 0 198, 139 60)), ( (280 60, 139 60, 280 70, 280 60))) AA - sliver triangles, at angle to each other POLYGON( (0 0, 140 10, 0 20, 0 0)) POLYGON( (280 0, 139 10, 280 1, 280 0)) LINESTRING(140 10, 139 10) AA - sliver triangle with multiple intersecting boxes MULTIPOLYGON( ( (1 4, 1 1, 2 1, 2 4, 1 4)), ( (3 4, 3 1, 4 1, 4 4, 3 4)), ( (5 4, 5 1, 6 1, 6 4, 5 4)), ( (7 4, 7 1, 8 1, 8 4, 7 4)), ( (9 4, 9 1, 10 1, 10 4, 9 4))) POLYGON( (0 2, 11 3, 11 2, 0 2)) POLYGON( (1 1, 1 4, 10 4, 10 1, 1 1)) GEOMETRYCOLLECTION( LINESTRING(1 2, 2 2), LINESTRING(3 2, 4 2), POLYGON( (6 3, 6 2, 5 2, 6 3)), POLYGON( (7 2, 7 3, 8 3, 8 2, 7 2)), POLYGON( (9 2, 9 3, 10 3, 10 2, 9 2))) GEOMETRYCOLLECTION( LINESTRING(0 2, 1 2), LINESTRING(2 2, 3 2), LINESTRING(4 2, 5 2), POLYGON( (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), POLYGON( (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), POLYGON( (5 2, 5 4, 6 4, 6 3, 7 3, 7 4, 8 4, 8 3, 9 3, 9 4, 10 4, 10 3, 11 3, 11 2, 10 2, 10 1, 9 1, 9 2, 8 2, 8 1, 7 1, 7 2, 6 2, 6 1, 5 1, 5 2))) MULTIPOLYGON( ( (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), ( (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), ( (5 2, 5 4, 6 4, 6 3, 5 2)), ( (6 2, 6 1, 5 1, 5 2, 6 2)), ( (7 3, 7 4, 8 4, 8 3, 7 3)), ( (8 2, 8 1, 7 1, 7 2, 8 2)), ( (9 3, 9 4, 10 4, 10 3, 9 3)), ( (10 2, 10 1, 9 1, 9 2, 10 2))) GEOMETRYCOLLECTION( LINESTRING(0 2, 1 2), LINESTRING(2 2, 3 2), LINESTRING(4 2, 5 2), POLYGON( (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), POLYGON( (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), POLYGON( (5 2, 5 4, 6 4, 6 3, 5 2)), POLYGON( (6 2, 6 1, 5 1, 5 2, 6 2)), POLYGON( (6 2, 6 3, 7 3, 7 2, 6 2)), POLYGON( (7 3, 7 4, 8 4, 8 3, 7 3)), POLYGON( (8 2, 8 1, 7 1, 7 2, 8 2)), POLYGON( (8 2, 8 3, 9 3, 9 2, 8 2)), POLYGON( (9 3, 9 4, 10 4, 10 3, 9 3)), POLYGON( (10 2, 10 1, 9 1, 9 2, 10 2)), POLYGON( (10 2, 10 3, 11 3, 11 2, 10 2))) AA - Polygon with hole with outward sliver, cut by polygon POLYGON( (20 40, 20 200, 180 200, 180 40, 20 40), (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) POLYGON( (200 160, 160 160, 160 80, 200 80, 200 160)) POLYGON( (20 40, 20 200, 180 200, 180 40, 20 40)) GEOMETRYCOLLECTION( LINESTRING(180 120, 160 120), POLYGON( (180 160, 180 120, 180 80, 160 80, 160 120, 160 160, 180 160))) POLYGON( (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) POLYGON( (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, 20 40), (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) MULTIPOLYGON( ( (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, 20 40), (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)), ( (180 120, 180 160, 200 160, 200 80, 180 80, 180 120))) AA - Polygon with hole with outward sliver, cut by line POLYGON( (20 40, 20 200, 180 200, 180 40, 20 40), (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) LINESTRING(160 140, 160 100) POLYGON( (20 40, 20 200, 180 200, 180 40, 20 40)) MULTILINESTRING( (160 140, 160 120), (160 120, 160 100)) POLYGON( (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) POLYGON( (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) POLYGON( (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) AA - Polygon with inward sliver touching hole, cut by polygon POLYGON( (20 40, 20 200, 180 200, 180 120, 140 120, 180 119, 180 40, 20 40), (140 160, 80 120, 140 80, 140 160)) POLYGON( (200 160, 150 160, 150 80, 200 80, 200 160)) POLYGON( (20 40, 20 200, 180 200, 180 40, 20 40)) MULTIPOLYGON( ( (180 160, 180 120, 150 120, 150 160, 180 160)), ( (150 120, 180 119, 180 80, 150 80, 150 120))) POLYGON( (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), (140 160, 80 120, 140 80, 140 120, 140 160)) POLYGON( (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, 20 40), (140 160, 80 120, 140 80, 140 120, 140 160)) MULTIPOLYGON( ( (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, 20 40), (140 160, 80 120, 140 80, 140 120, 140 160)), ( (150 120, 180 120, 180 160, 200 160, 200 80, 180 80, 180 119, 150 120))) AA - intersecting slivers, dimensional collapse POLYGON( (83 33, 62 402, 68 402, 83 33)) POLYGON( (78 39, 574 76, 576 60, 78 39)) LINESTRING(83 33, 62 402, 68 402, 83 33) POLYGON( (83 33, 62 402, 68 402, 83 33)) POINT(83 39) GEOMETRYCOLLECTION( LINESTRING(78 39, 83 39), LINESTRING(83 33, 83 39), POLYGON( (83 39, 62 402, 68 402, 83 39)), POLYGON( (83 39, 574 76, 576 60, 83 39))) GEOMETRYCOLLECTION( LINESTRING(83 33, 83 39), POLYGON( (83 39, 62 402, 68 402, 83 39))) GEOMETRYCOLLECTION( LINESTRING(78 39, 83 39), LINESTRING(83 33, 83 39), POLYGON( (83 39, 62 402, 68 402, 83 39)), POLYGON( (83 39, 574 76, 576 60, 83 39)))