rgeo 2.4.0 → 3.0.0.pre.rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +6 -0
- data/README.md +1 -0
- data/ext/geos_c_impl/analysis.c +4 -4
- data/ext/geos_c_impl/errors.c +8 -6
- data/ext/geos_c_impl/errors.h +7 -3
- data/ext/geos_c_impl/extconf.rb +2 -0
- data/ext/geos_c_impl/factory.c +80 -7
- data/ext/geos_c_impl/factory.h +28 -14
- data/ext/geos_c_impl/geometry.c +46 -14
- data/ext/geos_c_impl/geometry.h +7 -0
- data/ext/geos_c_impl/geometry_collection.c +2 -104
- data/ext/geos_c_impl/geometry_collection.h +0 -11
- data/ext/geos_c_impl/line_string.c +1 -1
- data/ext/geos_c_impl/point.c +1 -1
- data/ext/geos_c_impl/polygon.c +1 -37
- data/ext/geos_c_impl/preface.h +3 -0
- data/lib/rgeo/cartesian/calculations.rb +54 -17
- data/lib/rgeo/cartesian/factory.rb +0 -7
- data/lib/rgeo/cartesian/feature_classes.rb +66 -46
- data/lib/rgeo/cartesian/feature_methods.rb +51 -20
- data/lib/rgeo/cartesian/interface.rb +0 -6
- data/lib/rgeo/cartesian/planar_graph.rb +379 -0
- data/lib/rgeo/cartesian/sweepline_intersector.rb +149 -0
- data/lib/rgeo/cartesian/valid_op.rb +71 -0
- data/lib/rgeo/cartesian.rb +3 -0
- data/lib/rgeo/coord_sys/cs/wkt_parser.rb +6 -6
- data/lib/rgeo/error.rb +15 -0
- data/lib/rgeo/feature/geometry.rb +28 -28
- data/lib/rgeo/feature/geometry_collection.rb +13 -5
- data/lib/rgeo/feature/line_string.rb +3 -3
- data/lib/rgeo/feature/multi_surface.rb +3 -3
- data/lib/rgeo/feature/point.rb +4 -4
- data/lib/rgeo/feature/surface.rb +3 -3
- data/lib/rgeo/geographic/factory.rb +0 -7
- data/lib/rgeo/geographic/interface.rb +5 -20
- data/lib/rgeo/geographic/proj4_projector.rb +0 -2
- data/lib/rgeo/geographic/projected_feature_classes.rb +21 -9
- data/lib/rgeo/geographic/projected_feature_methods.rb +51 -28
- data/lib/rgeo/geographic/simple_mercator_projector.rb +0 -2
- data/lib/rgeo/geographic/spherical_feature_classes.rb +29 -9
- data/lib/rgeo/geographic/spherical_feature_methods.rb +62 -1
- data/lib/rgeo/geos/capi_factory.rb +21 -31
- data/lib/rgeo/geos/capi_feature_classes.rb +35 -11
- data/lib/rgeo/geos/ffi_factory.rb +0 -28
- data/lib/rgeo/geos/ffi_feature_classes.rb +34 -10
- data/lib/rgeo/geos/ffi_feature_methods.rb +23 -5
- data/lib/rgeo/geos/interface.rb +0 -7
- data/lib/rgeo/geos/zm_factory.rb +0 -12
- data/lib/rgeo/impl_helper/basic_geometry_collection_methods.rb +4 -4
- data/lib/rgeo/impl_helper/basic_geometry_methods.rb +1 -1
- data/lib/rgeo/impl_helper/basic_line_string_methods.rb +15 -19
- data/lib/rgeo/impl_helper/basic_point_methods.rb +1 -1
- data/lib/rgeo/impl_helper/basic_polygon_methods.rb +1 -1
- data/lib/rgeo/impl_helper/valid_op.rb +354 -0
- data/lib/rgeo/impl_helper/validity_check.rb +138 -0
- data/lib/rgeo/impl_helper.rb +1 -0
- data/lib/rgeo/version.rb +1 -1
- metadata +31 -10
@@ -90,7 +90,7 @@ module RGeo
|
|
90
90
|
# operations on them.)
|
91
91
|
|
92
92
|
def factory
|
93
|
-
raise Error::UnsupportedOperation, "Method
|
93
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#factory not defined."
|
94
94
|
end
|
95
95
|
|
96
96
|
# === SFS 1.1 Description
|
@@ -105,7 +105,7 @@ module RGeo
|
|
105
105
|
# point geometries, 1 for curves, and 2 for surfaces.
|
106
106
|
|
107
107
|
def dimension
|
108
|
-
raise Error::UnsupportedOperation, "Method
|
108
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#dimension not defined."
|
109
109
|
end
|
110
110
|
|
111
111
|
# === SFS 1.1 Description
|
@@ -122,7 +122,7 @@ module RGeo
|
|
122
122
|
# call the +type_name+ method of the returned module.
|
123
123
|
|
124
124
|
def geometry_type
|
125
|
-
raise Error::UnsupportedOperation, "Method
|
125
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#geometry_type not defined."
|
126
126
|
end
|
127
127
|
|
128
128
|
# === SFS 1.1 Description
|
@@ -137,7 +137,7 @@ module RGeo
|
|
137
137
|
# stored in either the same or some other datastore.
|
138
138
|
|
139
139
|
def srid
|
140
|
-
raise Error::UnsupportedOperation, "Method
|
140
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#srid not defined."
|
141
141
|
end
|
142
142
|
|
143
143
|
# === SFS 1.1 Description
|
@@ -151,7 +151,7 @@ module RGeo
|
|
151
151
|
# Returns an object that supports the Geometry interface.
|
152
152
|
|
153
153
|
def envelope
|
154
|
-
raise Error::UnsupportedOperation, "Method
|
154
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#envelope not defined."
|
155
155
|
end
|
156
156
|
|
157
157
|
# === SFS 1.1 Description
|
@@ -164,7 +164,7 @@ module RGeo
|
|
164
164
|
# Returns an ASCII string.
|
165
165
|
|
166
166
|
def as_text
|
167
|
-
raise Error::UnsupportedOperation, "Method
|
167
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#as_text not defined."
|
168
168
|
end
|
169
169
|
|
170
170
|
# === SFS 1.1 Description
|
@@ -177,7 +177,7 @@ module RGeo
|
|
177
177
|
# Returns a binary string.
|
178
178
|
|
179
179
|
def as_binary
|
180
|
-
raise Error::UnsupportedOperation, "Method
|
180
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#as_binary not defined."
|
181
181
|
end
|
182
182
|
|
183
183
|
# === SFS 1.1 Description
|
@@ -192,7 +192,7 @@ module RGeo
|
|
192
192
|
# specification, which stipulates an integer return value.
|
193
193
|
|
194
194
|
def empty?
|
195
|
-
raise Error::UnsupportedOperation, "Method
|
195
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#empty? not defined."
|
196
196
|
end
|
197
197
|
|
198
198
|
def is_empty?
|
@@ -214,7 +214,7 @@ module RGeo
|
|
214
214
|
# specification, which stipulates an integer return value.
|
215
215
|
|
216
216
|
def simple?
|
217
|
-
raise Error::UnsupportedOperation, "Method
|
217
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#simple? not defined."
|
218
218
|
end
|
219
219
|
|
220
220
|
def is_simple?
|
@@ -234,7 +234,7 @@ module RGeo
|
|
234
234
|
# Returns an object that supports the Geometry interface.
|
235
235
|
|
236
236
|
def boundary
|
237
|
-
raise Error::UnsupportedOperation, "Method
|
237
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#boundary not defined."
|
238
238
|
end
|
239
239
|
|
240
240
|
# === SFS 1.1 Description
|
@@ -253,7 +253,7 @@ module RGeo
|
|
253
253
|
# from different factories is undefined.
|
254
254
|
|
255
255
|
def equals?(another_geometry)
|
256
|
-
raise Error::UnsupportedOperation, "Method
|
256
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#equals? not defined."
|
257
257
|
end
|
258
258
|
|
259
259
|
# === SFS 1.1 Description
|
@@ -272,7 +272,7 @@ module RGeo
|
|
272
272
|
# from different factories is undefined.
|
273
273
|
|
274
274
|
def disjoint?(another_geometry)
|
275
|
-
raise Error::UnsupportedOperation, "Method
|
275
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#disjoint? not defined."
|
276
276
|
end
|
277
277
|
|
278
278
|
# === SFS 1.1 Description
|
@@ -291,7 +291,7 @@ module RGeo
|
|
291
291
|
# from different factories is undefined.
|
292
292
|
|
293
293
|
def intersects?(another_geometry)
|
294
|
-
raise Error::UnsupportedOperation, "Method
|
294
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#intersects? not defined."
|
295
295
|
end
|
296
296
|
|
297
297
|
# === SFS 1.1 Description
|
@@ -310,7 +310,7 @@ module RGeo
|
|
310
310
|
# from different factories is undefined.
|
311
311
|
|
312
312
|
def touches?(another_geometry)
|
313
|
-
raise Error::UnsupportedOperation, "Method
|
313
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#touches? not defined."
|
314
314
|
end
|
315
315
|
|
316
316
|
# === SFS 1.1 Description
|
@@ -329,7 +329,7 @@ module RGeo
|
|
329
329
|
# from different factories is undefined.
|
330
330
|
|
331
331
|
def crosses?(another_geometry)
|
332
|
-
raise Error::UnsupportedOperation, "Method
|
332
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#crosses? not defined."
|
333
333
|
end
|
334
334
|
|
335
335
|
# === SFS 1.1 Description
|
@@ -348,7 +348,7 @@ module RGeo
|
|
348
348
|
# from different factories is undefined.
|
349
349
|
|
350
350
|
def within?(another_geometry)
|
351
|
-
raise Error::UnsupportedOperation, "Method
|
351
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#within? not defined."
|
352
352
|
end
|
353
353
|
|
354
354
|
# === SFS 1.1 Description
|
@@ -367,7 +367,7 @@ module RGeo
|
|
367
367
|
# from different factories is undefined.
|
368
368
|
|
369
369
|
def contains?(another_geometry)
|
370
|
-
raise Error::UnsupportedOperation, "Method
|
370
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#contains? not defined."
|
371
371
|
end
|
372
372
|
|
373
373
|
# === SFS 1.1 Description
|
@@ -386,7 +386,7 @@ module RGeo
|
|
386
386
|
# from different factories is undefined.
|
387
387
|
|
388
388
|
def overlaps?(another_geometry)
|
389
|
-
raise Error::UnsupportedOperation, "Method
|
389
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#overlaps? not defined."
|
390
390
|
end
|
391
391
|
|
392
392
|
# === SFS 1.1 Description
|
@@ -412,7 +412,7 @@ module RGeo
|
|
412
412
|
# from different factories is undefined.
|
413
413
|
|
414
414
|
def relate?(another_geometry, _intersection_pattern_matrix_)
|
415
|
-
raise Error::UnsupportedOperation, "Method
|
415
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#relate not defined."
|
416
416
|
end
|
417
417
|
|
418
418
|
# === SFS 1.1 Description
|
@@ -431,7 +431,7 @@ module RGeo
|
|
431
431
|
# distance between objects from different factories is undefined.
|
432
432
|
|
433
433
|
def distance(another_geometry)
|
434
|
-
raise Error::UnsupportedOperation, "Method
|
434
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#distance not defined."
|
435
435
|
end
|
436
436
|
|
437
437
|
# === SFS 1.1 Description
|
@@ -446,7 +446,7 @@ module RGeo
|
|
446
446
|
# Returns an object that supports the Geometry interface.
|
447
447
|
|
448
448
|
def buffer(_distance_)
|
449
|
-
raise Error::UnsupportedOperation, "Method
|
449
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#buffer not defined."
|
450
450
|
end
|
451
451
|
|
452
452
|
# === SFS 1.1 Description
|
@@ -459,7 +459,7 @@ module RGeo
|
|
459
459
|
# Returns an object that supports the Geometry interface.
|
460
460
|
|
461
461
|
def convex_hull
|
462
|
-
raise Error::UnsupportedOperation, "Method
|
462
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#convex_hull not defined."
|
463
463
|
end
|
464
464
|
|
465
465
|
# === SFS 1.1 Description
|
@@ -477,7 +477,7 @@ module RGeo
|
|
477
477
|
# operations on objects from different factories is undefined.
|
478
478
|
|
479
479
|
def intersection(another_geometry)
|
480
|
-
raise Error::UnsupportedOperation, "Method
|
480
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#intersection not defined."
|
481
481
|
end
|
482
482
|
|
483
483
|
# === SFS 1.1 Description
|
@@ -495,7 +495,7 @@ module RGeo
|
|
495
495
|
# operations on objects from different factories is undefined.
|
496
496
|
|
497
497
|
def union(another_geometry)
|
498
|
-
raise Error::UnsupportedOperation, "Method
|
498
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#union not defined."
|
499
499
|
end
|
500
500
|
|
501
501
|
# === SFS 1.1 Description
|
@@ -513,7 +513,7 @@ module RGeo
|
|
513
513
|
# operations on objects from different factories is undefined.
|
514
514
|
|
515
515
|
def difference(another_geometry)
|
516
|
-
raise Error::UnsupportedOperation, "Method
|
516
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#difference not defined."
|
517
517
|
end
|
518
518
|
|
519
519
|
# === SFS 1.1 Description
|
@@ -531,7 +531,7 @@ module RGeo
|
|
531
531
|
# operations on objects from different factories is undefined.
|
532
532
|
|
533
533
|
def sym_difference(another_geometry)
|
534
|
-
raise Error::UnsupportedOperation, "Method
|
534
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#sym_difference not defined."
|
535
535
|
end
|
536
536
|
|
537
537
|
# Returns true if this geometric object is representationally
|
@@ -543,7 +543,7 @@ module RGeo
|
|
543
543
|
# from different factories is undefined.
|
544
544
|
|
545
545
|
def rep_equals?(another_geometry)
|
546
|
-
raise Error::UnsupportedOperation, "Method
|
546
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#rep_equals? not defined."
|
547
547
|
end
|
548
548
|
|
549
549
|
# Unions a collection of Geometry or a single Geometry
|
@@ -560,7 +560,7 @@ module RGeo
|
|
560
560
|
# returns nil.
|
561
561
|
#
|
562
562
|
def unary_union
|
563
|
-
raise Error::UnsupportedOperation, "Method
|
563
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#unary_union not defined."
|
564
564
|
end
|
565
565
|
|
566
566
|
# This method should behave almost the same as the rep_equals?
|
@@ -44,7 +44,7 @@ module RGeo
|
|
44
44
|
# Returns an integer.
|
45
45
|
|
46
46
|
def num_geometries
|
47
|
-
raise Error::UnsupportedOperation, "Method
|
47
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#num_geometries not defined."
|
48
48
|
end
|
49
49
|
|
50
50
|
# === SFS 1.1 Description
|
@@ -59,7 +59,7 @@ module RGeo
|
|
59
59
|
# in that it does not support negative indexes.
|
60
60
|
|
61
61
|
def geometry_n(n)
|
62
|
-
raise Error::UnsupportedOperation, "Method
|
62
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#geometry_n not defined."
|
63
63
|
end
|
64
64
|
|
65
65
|
# Alias of the num_geometries method.
|
@@ -79,13 +79,13 @@ module RGeo
|
|
79
79
|
# returns nil, where [-1] returns the last element of the collection.
|
80
80
|
|
81
81
|
def [](n)
|
82
|
-
raise Error::UnsupportedOperation, "Method
|
82
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#[] not defined."
|
83
83
|
end
|
84
84
|
|
85
85
|
# Nodes the linework in a list of Geometries
|
86
86
|
#
|
87
87
|
def node
|
88
|
-
raise Error::UnsupportedOperation, "Method
|
88
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#node not defined."
|
89
89
|
end
|
90
90
|
|
91
91
|
# Iterates over the geometries of this GeometryCollection.
|
@@ -96,7 +96,15 @@ module RGeo
|
|
96
96
|
# include the Enumerable mixin.
|
97
97
|
|
98
98
|
def each(&block)
|
99
|
-
raise Error::UnsupportedOperation, "Method
|
99
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#each not defined."
|
100
|
+
end
|
101
|
+
|
102
|
+
# Gives a point that is guaranteed to be within the geometry.
|
103
|
+
#
|
104
|
+
# Extends OGC SFS 1.1 and follows PostGIS standards.
|
105
|
+
# @see https://postgis.net/docs/ST_PointOnSurface.html
|
106
|
+
def point_on_surface
|
107
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#each not defined."
|
100
108
|
end
|
101
109
|
end
|
102
110
|
end
|
@@ -34,7 +34,7 @@ module RGeo
|
|
34
34
|
# Returns an integer.
|
35
35
|
|
36
36
|
def num_points
|
37
|
-
raise Error::UnsupportedOperation, "Method
|
37
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#num_points not defined."
|
38
38
|
end
|
39
39
|
|
40
40
|
# === SFS 1.1 Description
|
@@ -48,14 +48,14 @@ module RGeo
|
|
48
48
|
# Does not support negative indexes.
|
49
49
|
|
50
50
|
def point_n(n)
|
51
|
-
raise Error::UnsupportedOperation, "Method
|
51
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#point_n not defined."
|
52
52
|
end
|
53
53
|
|
54
54
|
# Returns the constituent points as an array of objects that
|
55
55
|
# support the Point interface.
|
56
56
|
|
57
57
|
def points
|
58
|
-
raise Error::UnsupportedOperation, "Method
|
58
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#points not defined."
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -43,7 +43,7 @@ module RGeo
|
|
43
43
|
# Returns a floating-point scalar value.
|
44
44
|
|
45
45
|
def area
|
46
|
-
raise Error::UnsupportedOperation, "Method
|
46
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#area not defined."
|
47
47
|
end
|
48
48
|
|
49
49
|
# === SFS 1.1 Description
|
@@ -56,7 +56,7 @@ module RGeo
|
|
56
56
|
# Returns an object that supports the Point interface.
|
57
57
|
|
58
58
|
def centroid
|
59
|
-
raise Error::UnsupportedOperation, "Method
|
59
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#centroid not defined."
|
60
60
|
end
|
61
61
|
|
62
62
|
# === SFS 1.1 Description
|
@@ -68,7 +68,7 @@ module RGeo
|
|
68
68
|
# Returns an object that supports the Point interface.
|
69
69
|
|
70
70
|
def point_on_surface
|
71
|
-
raise Error::UnsupportedOperation, "Method
|
71
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#point_on_surface not defined."
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
data/lib/rgeo/feature/point.rb
CHANGED
@@ -47,7 +47,7 @@ module RGeo
|
|
47
47
|
# Returns a floating-point scalar value.
|
48
48
|
|
49
49
|
def x
|
50
|
-
raise Error::UnsupportedOperation, "Method
|
50
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#x not defined."
|
51
51
|
end
|
52
52
|
|
53
53
|
# === SFS 1.1 Description
|
@@ -59,7 +59,7 @@ module RGeo
|
|
59
59
|
# Returns a floating-point scalar value.
|
60
60
|
|
61
61
|
def y
|
62
|
-
raise Error::UnsupportedOperation, "Method
|
62
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#y not defined."
|
63
63
|
end
|
64
64
|
|
65
65
|
# Returns the z-coordinate for this Point as a floating-point
|
@@ -69,7 +69,7 @@ module RGeo
|
|
69
69
|
# not support Z coordinates.
|
70
70
|
|
71
71
|
def z
|
72
|
-
raise Error::UnsupportedOperation, "Method
|
72
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#z not defined."
|
73
73
|
end
|
74
74
|
|
75
75
|
# Returns the m-coordinate for this Point as a floating-point
|
@@ -79,7 +79,7 @@ module RGeo
|
|
79
79
|
# not support M coordinates.
|
80
80
|
|
81
81
|
def m
|
82
|
-
raise Error::UnsupportedOperation, "Method
|
82
|
+
raise Error::UnsupportedOperation, "Method #{self.class}#m not defined."
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
data/lib/rgeo/feature/surface.rb
CHANGED
@@ -49,7 +49,7 @@ module RGeo
|
|
49
49
|
# Returns a floating-point scalar value.
|
50
50
|
|
51
51
|
def area
|
52
|
-
raise Error::UnsupportedOperation, "Method
|
52
|
+
raise Error::UnsupportedOperation, "Method #{self.class.name}#area not defined."
|
53
53
|
end
|
54
54
|
|
55
55
|
# === SFS 1.1 Description
|
@@ -62,7 +62,7 @@ module RGeo
|
|
62
62
|
# Returns an object that supports the Point interface.
|
63
63
|
|
64
64
|
def centroid
|
65
|
-
raise Error::UnsupportedOperation, "Method
|
65
|
+
raise Error::UnsupportedOperation, "Method #{self.class.name}#centroid not defined."
|
66
66
|
end
|
67
67
|
|
68
68
|
# === SFS 1.1 Description
|
@@ -74,7 +74,7 @@ module RGeo
|
|
74
74
|
# Returns an object that supports the Point interface.
|
75
75
|
|
76
76
|
def point_on_surface
|
77
|
-
raise Error::UnsupportedOperation, "Method
|
77
|
+
raise Error::UnsupportedOperation, "Method #{self.class.name}#point_on_surface not defined."
|
78
78
|
end
|
79
79
|
end
|
80
80
|
end
|
@@ -42,7 +42,6 @@ module RGeo
|
|
42
42
|
if @coord_sys.is_a?(String)
|
43
43
|
@coord_sys = CoordSys::CS.create_from_wkt(@coord_sys)
|
44
44
|
end
|
45
|
-
@lenient_assertions = opts[:uses_lenient_assertions] ? true : false
|
46
45
|
@buffer_resolution = opts[:buffer_resolution].to_i
|
47
46
|
@buffer_resolution = 1 if @buffer_resolution < 1
|
48
47
|
|
@@ -106,7 +105,6 @@ module RGeo
|
|
106
105
|
"wkbg" => @wkb_generator.properties,
|
107
106
|
"wktp" => @wkt_parser.properties,
|
108
107
|
"wkbp" => @wkb_parser.properties,
|
109
|
-
"lena" => @lenient_assertions,
|
110
108
|
"bufr" => @buffer_resolution
|
111
109
|
}
|
112
110
|
hash_["proj4"] = @proj4.marshal_dump if @proj4
|
@@ -138,7 +136,6 @@ module RGeo
|
|
138
136
|
wkb_generator: symbolize_hash(data_["wkbg"]),
|
139
137
|
wkt_parser: symbolize_hash(data_["wktp"]),
|
140
138
|
wkb_parser: symbolize_hash(data_["wkbp"]),
|
141
|
-
uses_lenient_assertions: data_["lena"],
|
142
139
|
buffer_resolution: data_["bufr"],
|
143
140
|
proj4: proj4,
|
144
141
|
coord_sys: coord_sys
|
@@ -164,7 +161,6 @@ module RGeo
|
|
164
161
|
coder["wkb_generator"] = @wkb_generator.properties
|
165
162
|
coder["wkt_parser"] = @wkt_parser.properties
|
166
163
|
coder["wkb_parser"] = @wkb_parser.properties
|
167
|
-
coder["lenient_assertions"] = @lenient_assertions
|
168
164
|
coder["buffer_resolution"] = @buffer_resolution
|
169
165
|
if @proj4
|
170
166
|
str = @proj4.original_str || @proj4.canonical_str
|
@@ -201,7 +197,6 @@ module RGeo
|
|
201
197
|
wkb_generator: symbolize_hash(coder["wkb_generator"]),
|
202
198
|
wkt_parser: symbolize_hash(coder["wkt_parser"]),
|
203
199
|
wkb_parser: symbolize_hash(coder["wkb_parser"]),
|
204
|
-
uses_lenient_assertions: coder["lenient_assertions"],
|
205
200
|
buffer_resolution: coder["buffer_resolution"],
|
206
201
|
proj4: proj4,
|
207
202
|
coord_sys: coord_sys
|
@@ -293,8 +288,6 @@ module RGeo
|
|
293
288
|
@support_z
|
294
289
|
when :has_m_coordinate
|
295
290
|
@support_m
|
296
|
-
when :uses_lenient_assertions
|
297
|
-
@lenient_assertions
|
298
291
|
when :buffer_resolution
|
299
292
|
@buffer_resolution
|
300
293
|
when :is_geographic
|
@@ -54,12 +54,6 @@ module RGeo
|
|
54
54
|
# Support a Z coordinate. Default is false.
|
55
55
|
# [<tt>:has_m_coordinate</tt>]
|
56
56
|
# Support an M coordinate. Default is false.
|
57
|
-
# [<tt>:uses_lenient_assertions</tt>]
|
58
|
-
# If set to true, assertion checking is disabled. This includes
|
59
|
-
# simplicity checking on LinearRing, and validity checks on
|
60
|
-
# Polygon and MultiPolygon. This may speed up creation of certain
|
61
|
-
# objects, at the expense of not doing the proper checking for
|
62
|
-
# OGC compliance. Default is false.
|
63
57
|
# [<tt>:buffer_resolution</tt>]
|
64
58
|
# The resolution of buffers around geometries created by this
|
65
59
|
# factory. This controls the number of line segments used to
|
@@ -131,7 +125,6 @@ module RGeo
|
|
131
125
|
has_m_coordinate: opts[:has_m_coordinate],
|
132
126
|
proj4: proj4 || proj_4055,
|
133
127
|
coord_sys: coord_sys || coord_sys_4055,
|
134
|
-
uses_lenient_assertions: opts[:uses_lenient_assertions],
|
135
128
|
buffer_resolution: opts[:buffer_resolution],
|
136
129
|
wkt_parser: opts[:wkt_parser],
|
137
130
|
wkb_parser: opts[:wkb_parser],
|
@@ -207,10 +200,8 @@ module RGeo
|
|
207
200
|
#
|
208
201
|
# You may also provide options understood by the underlying
|
209
202
|
# projected Cartesian factory. For example, if GEOS is used for the
|
210
|
-
# projected factory, you may also set the
|
211
|
-
#
|
212
|
-
# <tt>:buffer_resolution</tt> options. See RGeo::Geos.factory for
|
213
|
-
# more details.
|
203
|
+
# projected factory, you may also set the <tt>:buffer_resolution</tt>
|
204
|
+
# options. See RGeo::Geos.factory for more details.
|
214
205
|
|
215
206
|
def simple_mercator_factory(opts = {})
|
216
207
|
factory = Geographic::Factory.new("Projected",
|
@@ -222,12 +213,9 @@ module RGeo
|
|
222
213
|
wkt_generator: opts[:wkt_generator],
|
223
214
|
wkb_generator: opts[:wkb_generator],
|
224
215
|
has_z_coordinate: opts[:has_z_coordinate],
|
225
|
-
has_m_coordinate: opts[:has_m_coordinate]
|
226
|
-
uses_lenient_assertions: opts[:uses_lenient_assertions])
|
216
|
+
has_m_coordinate: opts[:has_m_coordinate])
|
227
217
|
projector = Geographic::SimpleMercatorProjector.new(factory,
|
228
218
|
buffer_resolution: opts[:buffer_resolution],
|
229
|
-
lenient_multi_polygon_assertions: opts[:lenient_multi_polygon_assertions],
|
230
|
-
uses_lenient_assertions: opts[:uses_lenient_assertions],
|
231
219
|
has_z_coordinate: opts[:has_z_coordinate],
|
232
220
|
has_m_coordinate: opts[:has_m_coordinate])
|
233
221
|
factory.projector = projector
|
@@ -342,9 +330,8 @@ module RGeo
|
|
342
330
|
# If a <tt>:projection_factory</tt> is _not_ provided, you may also
|
343
331
|
# provide options for configuring the projected Cartesian factory.
|
344
332
|
# For example, if GEOS is used for the projected factory, you may
|
345
|
-
# also set the <tt>:
|
346
|
-
#
|
347
|
-
# more details.
|
333
|
+
# also set the <tt>:buffer_resolution</tt> option. See RGeo::Geos.factory
|
334
|
+
# for more details.
|
348
335
|
|
349
336
|
def projected_factory(opts = {})
|
350
337
|
CoordSys.check!(:proj4)
|
@@ -447,8 +434,6 @@ module RGeo
|
|
447
434
|
srid: projection_srid,
|
448
435
|
coord_sys: projection_coord_sys,
|
449
436
|
buffer_resolution: opts[:buffer_resolution],
|
450
|
-
lenient_multi_polygon_assertions: opts[:lenient_multi_polygon_assertions],
|
451
|
-
uses_lenient_assertions: opts[:uses_lenient_assertions],
|
452
437
|
has_z_coordinate: opts[:has_z_coordinate],
|
453
438
|
has_m_coordinate: opts[:has_m_coordinate],
|
454
439
|
wkt_parser: opts[:wkt_parser], wkt_generator: opts[:wkt_generator],
|
@@ -48,8 +48,6 @@ module RGeo
|
|
48
48
|
proj4: proj4,
|
49
49
|
coord_sys: opts[:coord_sys], srid: opts[:srid],
|
50
50
|
buffer_resolution: opts[:buffer_resolution],
|
51
|
-
lenient_multi_polygon_assertions: opts[:lenient_multi_polygon_assertions],
|
52
|
-
uses_lenient_assertions: opts[:uses_lenient_assertions],
|
53
51
|
has_z_coordinate: opts[:has_z_coordinate],
|
54
52
|
has_m_coordinate: opts[:has_m_coordinate],
|
55
53
|
wkt_parser: opts[:wkt_parser], wkt_generator: opts[:wkt_generator],
|
@@ -8,16 +8,18 @@
|
|
8
8
|
|
9
9
|
module RGeo
|
10
10
|
module Geographic
|
11
|
-
class ProjectedPointImpl
|
11
|
+
class ProjectedPointImpl
|
12
12
|
include Feature::Point
|
13
|
+
include ImplHelper::ValidityCheck
|
13
14
|
include ImplHelper::BasicGeometryMethods
|
14
15
|
include ImplHelper::BasicPointMethods
|
15
16
|
include ProjectedGeometryMethods
|
16
17
|
include ProjectedPointMethods
|
17
18
|
end
|
18
19
|
|
19
|
-
class ProjectedLineStringImpl
|
20
|
+
class ProjectedLineStringImpl
|
20
21
|
include Feature::LineString
|
22
|
+
include ImplHelper::ValidityCheck
|
21
23
|
include ImplHelper::BasicGeometryMethods
|
22
24
|
include ImplHelper::BasicLineStringMethods
|
23
25
|
include ProjectedGeometryMethods
|
@@ -25,18 +27,21 @@ module RGeo
|
|
25
27
|
include ProjectedLineStringMethods
|
26
28
|
end
|
27
29
|
|
28
|
-
class ProjectedLinearRingImpl
|
30
|
+
class ProjectedLinearRingImpl
|
29
31
|
include Feature::LinearRing
|
32
|
+
include ImplHelper::ValidityCheck
|
30
33
|
include ImplHelper::BasicGeometryMethods
|
31
34
|
include ImplHelper::BasicLineStringMethods
|
32
35
|
include ImplHelper::BasicLinearRingMethods
|
33
36
|
include ProjectedGeometryMethods
|
34
37
|
include ProjectedNCurveMethods
|
35
38
|
include ProjectedLineStringMethods
|
39
|
+
include ProjectedLinearRingMethods
|
36
40
|
end
|
37
41
|
|
38
|
-
class ProjectedLineImpl
|
42
|
+
class ProjectedLineImpl
|
39
43
|
include Feature::Line
|
44
|
+
include ImplHelper::ValidityCheck
|
40
45
|
include ImplHelper::BasicGeometryMethods
|
41
46
|
include ImplHelper::BasicLineStringMethods
|
42
47
|
include ImplHelper::BasicLineMethods
|
@@ -45,8 +50,9 @@ module RGeo
|
|
45
50
|
include ProjectedLineStringMethods
|
46
51
|
end
|
47
52
|
|
48
|
-
class ProjectedPolygonImpl
|
53
|
+
class ProjectedPolygonImpl
|
49
54
|
include Feature::Polygon
|
55
|
+
include ImplHelper::ValidityCheck
|
50
56
|
include ImplHelper::BasicGeometryMethods
|
51
57
|
include ImplHelper::BasicPolygonMethods
|
52
58
|
include ProjectedGeometryMethods
|
@@ -54,23 +60,26 @@ module RGeo
|
|
54
60
|
include ProjectedPolygonMethods
|
55
61
|
end
|
56
62
|
|
57
|
-
class ProjectedGeometryCollectionImpl
|
63
|
+
class ProjectedGeometryCollectionImpl
|
58
64
|
include Feature::GeometryCollection
|
65
|
+
include ImplHelper::ValidityCheck
|
59
66
|
include ImplHelper::BasicGeometryMethods
|
60
67
|
include ImplHelper::BasicGeometryCollectionMethods
|
61
68
|
include ProjectedGeometryMethods
|
62
69
|
end
|
63
70
|
|
64
|
-
class ProjectedMultiPointImpl
|
71
|
+
class ProjectedMultiPointImpl
|
65
72
|
include Feature::MultiPoint
|
73
|
+
include ImplHelper::ValidityCheck
|
66
74
|
include ImplHelper::BasicGeometryMethods
|
67
75
|
include ImplHelper::BasicGeometryCollectionMethods
|
68
76
|
include ImplHelper::BasicMultiPointMethods
|
69
77
|
include ProjectedGeometryMethods
|
70
78
|
end
|
71
79
|
|
72
|
-
class ProjectedMultiLineStringImpl
|
80
|
+
class ProjectedMultiLineStringImpl
|
73
81
|
include Feature::MultiLineString
|
82
|
+
include ImplHelper::ValidityCheck
|
74
83
|
include ImplHelper::BasicGeometryMethods
|
75
84
|
include ImplHelper::BasicGeometryCollectionMethods
|
76
85
|
include ImplHelper::BasicMultiLineStringMethods
|
@@ -78,8 +87,9 @@ module RGeo
|
|
78
87
|
include ProjectedNCurveMethods
|
79
88
|
end
|
80
89
|
|
81
|
-
class ProjectedMultiPolygonImpl
|
90
|
+
class ProjectedMultiPolygonImpl
|
82
91
|
include Feature::MultiPolygon
|
92
|
+
include ImplHelper::ValidityCheck
|
83
93
|
include ImplHelper::BasicGeometryMethods
|
84
94
|
include ImplHelper::BasicGeometryCollectionMethods
|
85
95
|
include ImplHelper::BasicMultiPolygonMethods
|
@@ -87,5 +97,7 @@ module RGeo
|
|
87
97
|
include ProjectedNSurfaceMethods
|
88
98
|
include ProjectedMultiPolygonMethods
|
89
99
|
end
|
100
|
+
|
101
|
+
ImplHelper::ValidityCheck.override_classes
|
90
102
|
end
|
91
103
|
end
|