Skip to content

Commit 612ab2c

Browse files
author
Menelaos Karavelas
committed
Bug#21658453 ST_INTERSECTION() PRODUCES INVALID POLYGON
The root cause of the bug is that the Boost.Geometry intersection algorithm does not take into account certain intersection points of the geometries to be intersected; as a result, in some cases, the rings produced by the Boost.Geometry intersection algorithm contain self-intersection points and do not have the correct topology. Fix: add a post-processing step to the Boost.Geometry intersection algorithm which takes care of these self intersections; as part of the post-processing step points may be added on the rings already computed and ring may be split into smaller rings that do not have self intersection points. The Boost.Geometry difference and sym_difference algorithms suffer from the same problem; the Boost.Geometry patch committed as part of this commit takes care of these problems as well. New test cases related to the bug report have been added, and previous results have been updated. As far as previous results are concerned, it is interesting to note that the previous results were invalid geometries, whereas the newly recorded ones correspond to valid geometries (as expected and wanted). The patch pushed as part of this commit has not yet been pushed into the Boost.Geometry develop branch and it is still under review. As such, it may undergo changes, in which case any updates will be migrated to MySQL.
1 parent 23b3ff1 commit 612ab2c

File tree

7 files changed

+102
-48
lines changed

7 files changed

+102
-48
lines changed

include/boost_1_59_0/boost/geometry/algorithms/detail/overlay/split_rings.hpp

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,14 @@ template <overlay_type OverlayType, typename Ring, typename RobustPolicy>
156156
struct split_ring
157157
{
158158
template <typename RingCollection>
159-
static inline void apply(Ring const&, RingCollection&, RobustPolicy const&)
159+
static inline void apply(Ring const& ring,
160+
RingCollection& collection,
161+
RobustPolicy const& robust_policy)
160162
{
163+
split_ring
164+
<
165+
overlay_union, Ring, RobustPolicy
166+
>::apply(ring, collection, robust_policy);
161167
}
162168
};
163169

@@ -398,8 +404,27 @@ template <overlay_type OverlayType>
398404
struct split_rings
399405
{
400406
template <typename RingCollection, typename RobustPolicy>
401-
static inline void apply(RingCollection&, RobustPolicy const&)
407+
static inline void apply(RingCollection& collection,
408+
RobustPolicy const& robust_policy)
402409
{
410+
typedef typename boost::range_iterator
411+
<
412+
RingCollection
413+
>::type ring_iterator_type;
414+
415+
RingCollection new_collection;
416+
for (ring_iterator_type rit = boost::begin(collection);
417+
rit != boost::end(collection);
418+
++rit)
419+
{
420+
split_ring
421+
<
422+
OverlayType,
423+
typename boost::range_value<RingCollection>::type,
424+
RobustPolicy
425+
>::apply(*rit, new_collection, robust_policy);
426+
}
427+
collection.swap(new_collection);
403428
}
404429
};
405430

mysql-test/r/gis.result

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2930,3 +2930,20 @@ ST_GEOMFROMTEXT('MULTILINESTRING((8 16,-8 -3),(-2 2,-0.561069
29302930
ST_GEOMFROMTEXT('POLYGON((2 3,-9 -7,12 -13,2 3))'))) as valid0;
29312931
valid0
29322932
1
2933+
#
2934+
# Bug#21658453 ST_INTERSECTION() PRODUCES INVALID POLYGON
2935+
#
2936+
SELECT ST_ISVALID(ST_INTERSECTION(ST_GEOMFROMTEXT('POLYGON((0 5,-6
2937+
-17,12 17,0 5),(4 6,5 5,0 1,4 6))'), ST_GEOMFROMTEXT('POLYGON((3 9,-15 -5,13
2938+
-11,3 9))')));
2939+
ST_ISVALID(ST_INTERSECTION(ST_GEOMFROMTEXT('POLYGON((0 5,-6
2940+
-17,12 17,0 5),(4 6,5 5,0 1,4 6))'), ST_GEOMFROMTEXT('POLYGON((3 9,-15 -5,13
2941+
-11,3 9))')))
2942+
1
2943+
SELECT ST_ISVALID(ST_INTERSECTION(ST_GEOMFROMTEXT('POLYGON((5 6,-15
2944+
-13,1 -8,5 6))'), ST_GEOMFROMTEXT('POLYGON((0 8,-19 6,18 -17,20 8,11 17,0
2945+
8),(3 2,3 -1,1 0,3 2),(1 3,4 4,0 -1,1 3))')));
2946+
ST_ISVALID(ST_INTERSECTION(ST_GEOMFROMTEXT('POLYGON((5 6,-15
2947+
-13,1 -8,5 6))'), ST_GEOMFROMTEXT('POLYGON((0 8,-19 6,18 -17,20 8,11 17,0
2948+
8),(3 2,3 -1,1 0,3 2),(1 3,4 4,0 -1,1 3))')))
2949+
1

mysql-test/suite/gis/r/gis_bugs_crashes.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,7 @@ ST_INTERSECTION(
631631
ST_GEOMFROMTEXT(
632632
'LINESTRING(4 -3,2 -10,5 -5,8 5,8 -3,-4 -9,2 -2,-3 4,-7 5,-9 -10)'),
633633
ST_GEOMFROMTEXT('MULTIPOINT(-7 10,-9 8,3 3,5 5,10 -8,10 -9)'))))))));
634-
ERROR HY000: Geometry overlay calculation error: geometry data is invalid in function st_union.
634+
ERROR HY000: Geometry overlay calculation error: geometry data is invalid in function st_intersection.
635635
######################################################################################################
636636
# BUG#20218936 : ASSERTION `(M_PREVIOUS_OPERATION != OVERLAY::OPERATION_CONTINUE)' FAILED
637637
######################################################################################################

mysql-test/suite/gis/r/spatial_operators_difference.result

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,7 +1196,7 @@ POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4,4 4))
11961196
POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4,4 4))
11971197
POLYGON((0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10,0 10,0 1))
11981198
MULTIPOLYGON(((0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10,0 10,0 1)),((6 6,7 6,7 7,6 7,6 6)))
1199-
POLYGON((0 1,1 1,1 0,10 0,10 1,1 1,1 10,0 10,0 1))
1199+
MULTIPOLYGON(((1 1,1 0,10 0,10 1,1 1)),((0 1,1 1,1 10,0 10,0 1)))
12001200
POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4,4 4))
12011201
POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4,4 4))
12021202
POLYGON((0 1,1 1,1 0,10 0,10 10,0 10,0 1),(4 4,4 6,6 6,6 4,4 4))
@@ -1205,7 +1205,7 @@ POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4,4 4))
12051205
POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4,4 4))
12061206
POLYGON((0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10,0 10,0 1))
12071207
MULTIPOLYGON(((0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10,0 10,0 1)),((6 6,7 6,7 7,6 7,6 6)))
1208-
POLYGON((0 1,1 1,1 0,10 0,10 1,1 1,1 10,0 10,0 1))
1208+
MULTIPOLYGON(((1 1,1 0,10 0,10 1,1 1)),((0 1,1 1,1 10,0 10,0 1)))
12091209
GEOMETRYCOLLECTION()
12101210
GEOMETRYCOLLECTION()
12111211
POLYGON((1 10,0 10,0 0,10 0,10 1,1 1,1 10))
@@ -1385,7 +1385,7 @@ POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,6 4,6 6,4 6,4 4))
13851385
POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,6 4,6 6,4 6,4 4))
13861386
POLYGON((0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10,0 10,0 1))
13871387
MULTIPOLYGON(((0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10,0 10,0 1)),((6 6,7 6,7 7,6 7,6 6)))
1388-
POLYGON((0 1,1 1,1 0,10 0,10 1,1 1,1 10,0 10,0 1))
1388+
MULTIPOLYGON(((1 1,1 0,10 0,10 1,1 1)),((0 1,1 1,1 10,0 10,0 1)))
13891389
POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,6 4,6 6,4 6,4 4))
13901390
POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,6 4,6 6,4 6,4 4))
13911391
POLYGON((0 1,1 1,1 0,10 0,10 10,0 10,0 1),(4 4,4 6,6 6,6 4,4 4))
@@ -1394,7 +1394,7 @@ POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,6 4,6 6,4 6,4 4))
13941394
POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,6 4,6 6,4 6,4 4))
13951395
POLYGON((0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10,0 10,0 1))
13961396
MULTIPOLYGON(((0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10,0 10,0 1)),((6 6,7 6,7 7,6 7,6 6)))
1397-
POLYGON((0 1,1 1,1 0,10 0,10 1,1 1,1 10,0 10,0 1))
1397+
MULTIPOLYGON(((1 1,1 0,10 0,10 1,1 1)),((0 1,1 1,1 10,0 10,0 1)))
13981398
GEOMETRYCOLLECTION()
13991399
GEOMETRYCOLLECTION()
14001400
POLYGON((1 10,0 10,0 0,10 0,10 1,1 1,1 10))
@@ -1511,7 +1511,7 @@ POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5
15111511
POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
15121512
POLYGON((5 10,0 10,0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10))
15131513
MULTIPOLYGON(((6 6,7 6,7 7,6 7,6 6)),((5 10,0 10,0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10)))
1514-
MULTIPOLYGON(((1 10,0 10,0 1,1 1,1 0,10 0,10 1,1 1,1 10)),((5 6,5 5,6 5,6 6,5 6)))
1514+
MULTIPOLYGON(((1 1,1 0,10 0,10 1,1 1)),((1 10,0 10,0 1,1 1,1 10)),((5 6,5 5,6 5,6 6,5 6)))
15151515
POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
15161516
POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
15171517
POLYGON((1 0,10 0,10 5,10 10,5 10,0 10,0 1,1 1,1 0),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
@@ -1520,7 +1520,7 @@ POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5
15201520
POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
15211521
POLYGON((5 10,0 10,0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10))
15221522
MULTIPOLYGON(((6 6,7 6,7 7,6 7,6 6)),((5 10,0 10,0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10)))
1523-
MULTIPOLYGON(((1 10,0 10,0 1,1 1,1 0,10 0,10 1,1 1,1 10)),((5 6,5 5,6 5,6 6,5 6)))
1523+
MULTIPOLYGON(((1 1,1 0,10 0,10 1,1 1)),((1 10,0 10,0 1,1 1,1 10)),((5 6,5 5,6 5,6 6,5 6)))
15241524
GEOMETRYCOLLECTION()
15251525
GEOMETRYCOLLECTION()
15261526
MULTIPOLYGON(((10 1,1 1,1 10,0 10,0 1,0 0,1 0,10 0,10 1)),((5 6,5 5,6 5,6 6,5 6)))
@@ -1532,7 +1532,7 @@ POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5
15321532
POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
15331533
POLYGON((5 10,0 10,0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10))
15341534
MULTIPOLYGON(((6 6,7 6,7 7,6 7,6 6)),((5 10,0 10,0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10)))
1535-
MULTIPOLYGON(((1 10,0 10,0 1,1 1,1 0,10 0,10 1,1 1,1 10)),((5 6,5 5,6 5,6 6,5 6)))
1535+
MULTIPOLYGON(((1 1,1 0,10 0,10 1,1 1)),((1 10,0 10,0 1,1 1,1 10)),((5 6,5 5,6 5,6 6,5 6)))
15361536
POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
15371537
POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
15381538
POLYGON((1 0,10 0,10 5,10 10,5 10,0 10,0 1,1 1,1 0),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
@@ -1541,7 +1541,7 @@ POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5
15411541
POLYGON((0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10,0 1),(6 5,6 4,4 4,4 6,5 6,5 5,6 5))
15421542
POLYGON((5 10,0 10,0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10))
15431543
MULTIPOLYGON(((6 6,7 6,7 7,6 7,6 6)),((5 10,0 10,0 1,1 1,1 0,10 0,10 5,6 5,6 4,4 4,4 6,5 6,5 10)))
1544-
MULTIPOLYGON(((1 10,0 10,0 1,1 1,1 0,10 0,10 1,1 1,1 10)),((5 6,5 5,6 5,6 6,5 6)))
1544+
MULTIPOLYGON(((1 1,1 0,10 0,10 1,1 1)),((1 10,0 10,0 1,1 1,1 10)),((5 6,5 5,6 5,6 6,5 6)))
15451545
GEOMETRYCOLLECTION()
15461546
GEOMETRYCOLLECTION()
15471547
MULTIPOLYGON(((10 1,1 1,1 10,0 10,0 1,0 0,1 0,10 0,10 1)),((5 6,5 5,6 5,6 6,5 6)))

mysql-test/suite/gis/r/spatial_operators_intersection.result

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,7 @@ POLYGON((0 10,0 0,10 0,10 10,0 10),(6 4,4 4,4 6,6 6,6 4))
11521152
MULTIPOINT(1 1,2 2)
11531153
MULTILINESTRING((1 1,2 2),(3 3,4 4))
11541154
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10)))
1155-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1155+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
11561156
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
11571157
POINT(1 1)
11581158
LINESTRING(1 1,2 2)
@@ -1161,7 +1161,7 @@ POLYGON((0 10,0 0,10 0,10 10,0 10),(6 4,4 4,4 6,6 6,6 4))
11611161
MULTIPOINT(1 1,2 2)
11621162
MULTILINESTRING((1 1,2 2),(3 3,4 4))
11631163
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10)))
1164-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1164+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
11651165
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
11661166
POLYGON((0 10,0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4))
11671167
POLYGON((0 10,0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4))
@@ -1232,32 +1232,32 @@ GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 5,10 5,10 10,5 10))),POINT(1 1)
12321232
POINT(1 1)
12331233
GEOMETRYCOLLECTION()
12341234
POLYGON((0 1,0 0,1 0,1 1,0 1))
1235-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1235+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
12361236
POINT(1 1)
12371237
GEOMETRYCOLLECTION()
12381238
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
12391239
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 5,10 5,10 10,5 10),(7 6,6 6,6 7,7 7,7 6)))
1240-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1240+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
12411241
POINT(1 1)
12421242
GEOMETRYCOLLECTION()
12431243
POLYGON((0 1,0 0,1 0,1 1,0 1))
1244-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1244+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
12451245
POINT(1 1)
12461246
GEOMETRYCOLLECTION()
12471247
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
12481248
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 5,10 5,10 10,5 10),(7 6,6 6,6 7,7 7,7 6)))
1249-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1249+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
12501250
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,5 5,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
12511251
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,5 5,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
1252-
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10))),POINT(1 1))
1252+
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6))),POINT(1 1))
12531253
POINT(1 1)
12541254
LINESTRING(1 1,2 2)
12551255
POLYGON((0 1,0 0,1 0,1 1,0 1))
12561256
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
12571257
MULTIPOINT(1 1,2 2)
12581258
MULTILINESTRING((1 1,2 2),(3 3,4 4))
12591259
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10)))
1260-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1260+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
12611261
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
12621262
POINT(1 1)
12631263
LINESTRING(1 1,2 2)
@@ -1266,7 +1266,7 @@ MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6
12661266
MULTIPOINT(1 1,2 2)
12671267
MULTILINESTRING((1 1,2 2),(3 3,4 4))
12681268
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10)))
1269-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1269+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
12701270
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
12711271
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 5,10 10,5 10,1 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4)))
12721272
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 5,10 10,5 10,1 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4)))
@@ -1341,7 +1341,7 @@ POLYGON((0 10,0 0,10 0,10 10,0 10),(6 4,4 4,4 6,6 6,6 4))
13411341
MULTIPOINT(1 1,2 2)
13421342
MULTILINESTRING((1 1,2 2),(3 3,4 4))
13431343
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10)))
1344-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1344+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
13451345
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
13461346
POINT(1 1)
13471347
LINESTRING(1 1,2 2)
@@ -1350,7 +1350,7 @@ POLYGON((0 10,0 0,10 0,10 10,0 10),(6 4,4 4,4 6,6 6,6 4))
13501350
MULTIPOINT(1 1,2 2)
13511351
MULTILINESTRING((1 1,2 2),(3 3,4 4))
13521352
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10)))
1353-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1353+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
13541354
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
13551355
POLYGON((0 10,0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4))
13561356
POLYGON((0 10,0 1,0 0,1 0,10 0,10 5,10 10,5 10,0 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4))
@@ -1421,32 +1421,32 @@ GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 5,10 5,10 10,5 10))),POINT(1 1)
14211421
POINT(1 1)
14221422
GEOMETRYCOLLECTION()
14231423
POLYGON((0 1,0 0,1 0,1 1,0 1))
1424-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1424+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
14251425
POINT(1 1)
14261426
GEOMETRYCOLLECTION()
14271427
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
14281428
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 5,10 5,10 10,5 10),(7 6,6 6,6 7,7 7,7 6)))
1429-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1429+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
14301430
POINT(1 1)
14311431
GEOMETRYCOLLECTION()
14321432
POLYGON((0 1,0 0,1 0,1 1,0 1))
1433-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1433+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
14341434
POINT(1 1)
14351435
GEOMETRYCOLLECTION()
14361436
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
14371437
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 5,10 5,10 10,5 10),(7 6,6 6,6 7,7 7,7 6)))
1438-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1438+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
14391439
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,5 5,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
14401440
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,5 5,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
1441-
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10))),POINT(1 1))
1441+
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6))),POINT(1 1))
14421442
POINT(1 1)
14431443
LINESTRING(1 1,2 2)
14441444
POLYGON((0 1,0 0,1 0,1 1,0 1))
14451445
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
14461446
MULTIPOINT(1 1,2 2)
14471447
MULTILINESTRING((1 1,2 2),(3 3,4 4))
14481448
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10)))
1449-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1449+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
14501450
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
14511451
POINT(1 1)
14521452
LINESTRING(1 1,2 2)
@@ -1455,7 +1455,7 @@ MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6
14551455
MULTIPOINT(1 1,2 2)
14561456
MULTILINESTRING((1 1,2 2),(3 3,4 4))
14571457
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10)))
1458-
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10)))
1458+
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6)))
14591459
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4)))
14601460
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 5,10 10,5 10,1 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4)))
14611461
MULTIPOLYGON(((0 1,0 0,1 0,1 1,0 1)),((1 10,1 1,10 1,10 5,10 10,5 10,1 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4)))
@@ -1509,7 +1509,7 @@ POLYGON((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4))
15091509
MULTIPOINT(1 1,2 2)
15101510
MULTILINESTRING((1 1,2 2),(3 3,4 4))
15111511
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 5,10 5,10 10,5 10))),POINT(1 1))
1512-
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10))),POINT(1 1))
1512+
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6))),POINT(1 1))
15131513
POLYGON((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4))
15141514
POINT(1 1)
15151515
LINESTRING(1 1,2 2)
@@ -1518,7 +1518,7 @@ POLYGON((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4))
15181518
MULTIPOINT(1 1,2 2)
15191519
MULTILINESTRING((1 1,2 2),(3 3,4 4))
15201520
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 5,10 5,10 10,5 10))),POINT(1 1))
1521-
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 7,7 7,7 6,6 6,6 5,10 5,10 10,5 10))),POINT(1 1))
1521+
GEOMETRYCOLLECTION(MULTIPOLYGON(((5 10,5 6,6 6,6 5,10 5,10 10,5 10),(6 6,6 7,7 7,7 6,6 6))),POINT(1 1))
15221522
POLYGON((1 10,1 1,10 1,10 10,1 10),(6 4,4 4,4 6,6 6,6 4))
15231523
POLYGON((1 10,1 1,10 1,10 5,10 10,5 10,1 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4))
15241524
POLYGON((1 10,1 1,10 1,10 5,10 10,5 10,1 10),(6 4,4 4,4 6,5 6,6 6,6 5,6 4))

0 commit comments

Comments
 (0)