rgeo 2.3.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 +8 -6
- data/ext/geos_c_impl/analysis.h +1 -3
- data/ext/geos_c_impl/errors.c +10 -8
- data/ext/geos_c_impl/errors.h +7 -3
- data/ext/geos_c_impl/extconf.rb +3 -0
- data/ext/geos_c_impl/factory.c +251 -182
- data/ext/geos_c_impl/factory.h +43 -62
- data/ext/geos_c_impl/geometry.c +56 -24
- data/ext/geos_c_impl/geometry.h +8 -3
- data/ext/geos_c_impl/geometry_collection.c +41 -148
- data/ext/geos_c_impl/geometry_collection.h +1 -14
- data/ext/geos_c_impl/globals.c +91 -0
- data/ext/geos_c_impl/globals.h +45 -0
- data/ext/geos_c_impl/line_string.c +28 -29
- data/ext/geos_c_impl/line_string.h +1 -3
- data/ext/geos_c_impl/main.c +10 -9
- data/ext/geos_c_impl/point.c +9 -8
- data/ext/geos_c_impl/point.h +1 -3
- data/ext/geos_c_impl/polygon.c +15 -51
- data/ext/geos_c_impl/polygon.h +1 -3
- data/ext/geos_c_impl/preface.h +8 -0
- data/lib/rgeo/cartesian/analysis.rb +2 -2
- 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 +56 -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/curve.rb +12 -2
- data/lib/rgeo/feature/geometry.rb +38 -28
- data/lib/rgeo/feature/geometry_collection.rb +13 -5
- data/lib/rgeo/feature/line_string.rb +3 -3
- data/lib/rgeo/feature/multi_curve.rb +6 -1
- 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 +4 -18
- 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 +63 -30
- 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 +68 -2
- data/lib/rgeo/geos/capi_factory.rb +21 -31
- data/lib/rgeo/geos/capi_feature_classes.rb +64 -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 +53 -10
- data/lib/rgeo/geos/interface.rb +18 -10
- data/lib/rgeo/geos/zm_factory.rb +0 -12
- data/lib/rgeo/geos/zm_feature_methods.rb +30 -5
- data/lib/rgeo/impl_helper/basic_geometry_collection_methods.rb +18 -8
- data/lib/rgeo/impl_helper/basic_geometry_methods.rb +1 -1
- data/lib/rgeo/impl_helper/basic_line_string_methods.rb +37 -26
- data/lib/rgeo/impl_helper/basic_point_methods.rb +13 -3
- data/lib/rgeo/impl_helper/basic_polygon_methods.rb +8 -3
- 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
- data/lib/rgeo/wkrep/wkb_generator.rb +1 -1
- data/lib/rgeo/wkrep/wkt_generator.rb +6 -6
- metadata +30 -7
data/lib/rgeo/geos/interface.rb
CHANGED
@@ -31,32 +31,47 @@ module RGeo
|
|
31
31
|
# Returns true if the given feature is a CAPI GEOS feature, or if
|
32
32
|
# the given factory is a CAPI GEOS factory.
|
33
33
|
|
34
|
-
def
|
34
|
+
def capi_geos?(object)
|
35
35
|
CAPI_SUPPORTED &&
|
36
36
|
(CAPIFactory === object || CAPIGeometryMethods === object ||
|
37
37
|
ZMFactory === object && CAPIFactory === object.z_factory ||
|
38
38
|
ZMGeometryMethods === object && CAPIGeometryMethods === object.z_geometry)
|
39
39
|
end
|
40
40
|
|
41
|
+
def is_capi_geos?(object)
|
42
|
+
warn "The is_capi_geos? method is deprecated, please use the capi_geos? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
43
|
+
capi_geos?(object)
|
44
|
+
end
|
45
|
+
|
41
46
|
# Returns true if the given feature is an FFI GEOS feature, or if
|
42
47
|
# the given factory is an FFI GEOS factory.
|
43
48
|
|
44
|
-
def
|
49
|
+
def ffi_geos?(object)
|
45
50
|
FFI_SUPPORTED &&
|
46
51
|
(FFIFactory === object || FFIGeometryMethods === object ||
|
47
52
|
ZMFactory === object && FFIFactory === object.z_factory ||
|
48
53
|
ZMGeometryMethods === object && FFIGeometryMethods === object.z_geometry)
|
49
54
|
end
|
50
55
|
|
56
|
+
def is_ffi_geos?(object)
|
57
|
+
warn "The is_ffi_geos? method is deprecated, please use the ffi_geos? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
58
|
+
ffi_geos?(object)
|
59
|
+
end
|
60
|
+
|
51
61
|
# Returns true if the given feature is a GEOS feature, or if the given
|
52
62
|
# factory is a GEOS factory. Does not distinguish between CAPI and FFI.
|
53
63
|
|
54
|
-
def
|
64
|
+
def geos?(object)
|
55
65
|
CAPI_SUPPORTED && (CAPIFactory === object || CAPIGeometryMethods === object) ||
|
56
66
|
FFI_SUPPORTED && (FFIFactory === object || FFIGeometryMethods === object) ||
|
57
67
|
ZMFactory === object || ZMGeometryMethods === object
|
58
68
|
end
|
59
69
|
|
70
|
+
def is_geos?(object)
|
71
|
+
warn "The is_geos? method is deprecated, please use the geos? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
72
|
+
geos?(object)
|
73
|
+
end
|
74
|
+
|
60
75
|
# Returns the GEOS library version as a string of the format "x.y.z".
|
61
76
|
# Returns nil if GEOS is not available.
|
62
77
|
|
@@ -101,13 +116,6 @@ module RGeo
|
|
101
116
|
# Specifies which native interface to use. Possible values are
|
102
117
|
# <tt>:capi</tt> and <tt>:ffi</tt>. The default is the value
|
103
118
|
# of the preferred_native_interface.
|
104
|
-
# [<tt>:uses_lenient_multi_polygon_assertions</tt>]
|
105
|
-
# If set to true, assertion checking on MultiPolygon is disabled.
|
106
|
-
# This may speed up creation of MultiPolygon objects, at the
|
107
|
-
# expense of not doing the proper checking for OGC MultiPolygon
|
108
|
-
# compliance. See RGeo::Feature::MultiPolygon for details on
|
109
|
-
# the MultiPolygon assertions. Default is false. Also called
|
110
|
-
# <tt>:lenient_multi_polygon_assertions</tt>.
|
111
119
|
# [<tt>:buffer_resolution</tt>]
|
112
120
|
# The resolution of buffers around geometries created by this
|
113
121
|
# factory. This controls the number of line segments used to
|
data/lib/rgeo/geos/zm_factory.rb
CHANGED
@@ -53,8 +53,6 @@ module RGeo
|
|
53
53
|
end
|
54
54
|
srid ||= coord_sys.authority_code if coord_sys
|
55
55
|
config = {
|
56
|
-
uses_lenient_multi_polygon_assertions: opts[:lenient_multi_polygon_assertions] ||
|
57
|
-
opts[:uses_lenient_multi_polygon_assertions],
|
58
56
|
buffer_resolution: opts[:buffer_resolution], auto_prepare: opts[:auto_prepare],
|
59
57
|
wkt_generator: opts[:wkt_generator], wkt_parser: opts[:wkt_parser],
|
60
58
|
wkb_generator: opts[:wkb_generator], wkb_parser: opts[:wkb_parser],
|
@@ -109,7 +107,6 @@ module RGeo
|
|
109
107
|
"wkbg" => @wkb_generator.properties,
|
110
108
|
"wktp" => @wkt_parser.properties,
|
111
109
|
"wkbp" => @wkb_parser.properties,
|
112
|
-
"lmpa" => @zfactory.lenient_multi_polygon_assertions?,
|
113
110
|
"apre" => @zfactory.property(:auto_prepare) == :simple,
|
114
111
|
"nffi" => @zfactory.is_a?(FFIFactory)
|
115
112
|
}
|
@@ -142,7 +139,6 @@ module RGeo
|
|
142
139
|
wkb_generator: symbolize_hash(data["wkbg"]),
|
143
140
|
wkt_parser: symbolize_hash(data["wktp"]),
|
144
141
|
wkb_parser: symbolize_hash(data["wkbp"]),
|
145
|
-
uses_lenient_multi_polygon_assertions: data["lmpa"],
|
146
142
|
auto_prepare: (data["apre"] ? :simple : :disabled),
|
147
143
|
proj4: proj4,
|
148
144
|
coord_sys: coord_sys
|
@@ -154,7 +150,6 @@ module RGeo
|
|
154
150
|
def encode_with(coder) # :nodoc:
|
155
151
|
coder["srid"] = @zfactory.srid
|
156
152
|
coder["buffer_resolution"] = @zfactory.buffer_resolution
|
157
|
-
coder["lenient_multi_polygon_assertions"] = @zfactory.lenient_multi_polygon_assertions?
|
158
153
|
coder["wkt_generator"] = @wkt_generator.properties
|
159
154
|
coder["wkb_generator"] = @wkb_generator.properties
|
160
155
|
coder["wkt_parser"] = @wkt_parser.properties
|
@@ -197,7 +192,6 @@ module RGeo
|
|
197
192
|
wkt_parser: symbolize_hash(coder["wkt_parser"]),
|
198
193
|
wkb_parser: symbolize_hash(coder["wkb_parser"]),
|
199
194
|
auto_prepare: coder["auto_prepare"] == "disabled" ? :disabled : :simple,
|
200
|
-
uses_lenient_multi_polygon_assertions: coder["lenient_multi_polygon_assertions"],
|
201
195
|
proj4: proj4,
|
202
196
|
coord_sys: coord_sys
|
203
197
|
)
|
@@ -216,12 +210,6 @@ module RGeo
|
|
216
210
|
@zfactory.buffer_resolution
|
217
211
|
end
|
218
212
|
|
219
|
-
# Returns true if this factory is lenient with MultiPolygon assertions
|
220
|
-
|
221
|
-
def lenient_multi_polygon_assertions?
|
222
|
-
@zfactory.lenient_multi_polygon_assertions?
|
223
|
-
end
|
224
|
-
|
225
213
|
# Returns the z-only factory corresponding to this factory.
|
226
214
|
|
227
215
|
def z_factory
|
@@ -65,12 +65,22 @@ module RGeo
|
|
65
65
|
@factory.instance_variable_get(:@wkb_generator).generate(self)
|
66
66
|
end
|
67
67
|
|
68
|
+
def empty?
|
69
|
+
@zgeometry.empty?
|
70
|
+
end
|
71
|
+
|
68
72
|
def is_empty?
|
69
|
-
|
73
|
+
warn "The is_empty? method is deprecated, please use the empty? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
74
|
+
empty?
|
75
|
+
end
|
76
|
+
|
77
|
+
def simple?
|
78
|
+
@zgeometry.simple?
|
70
79
|
end
|
71
80
|
|
72
81
|
def is_simple?
|
73
|
-
|
82
|
+
warn "The is_simple? method is deprecated, please use the simple? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
83
|
+
simple?
|
74
84
|
end
|
75
85
|
|
76
86
|
def boundary
|
@@ -222,12 +232,22 @@ module RGeo
|
|
222
232
|
point_n(num_points - 1)
|
223
233
|
end
|
224
234
|
|
235
|
+
def closed?
|
236
|
+
@zgeometry.closed?
|
237
|
+
end
|
238
|
+
|
225
239
|
def is_closed?
|
226
|
-
|
240
|
+
warn "The is_closed? method is deprecated, please use the closed? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
241
|
+
closed?
|
242
|
+
end
|
243
|
+
|
244
|
+
def ring?
|
245
|
+
@zgeometry.ring?
|
227
246
|
end
|
228
247
|
|
229
248
|
def is_ring?
|
230
|
-
|
249
|
+
warn "The is_ring? method is deprecated, please use the ring? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
250
|
+
ring?
|
231
251
|
end
|
232
252
|
|
233
253
|
def num_points
|
@@ -323,8 +343,13 @@ module RGeo
|
|
323
343
|
@zgeometry.length
|
324
344
|
end
|
325
345
|
|
346
|
+
def closed?
|
347
|
+
@zgeometry.closed?
|
348
|
+
end
|
349
|
+
|
326
350
|
def is_closed?
|
327
|
-
|
351
|
+
warn "The is_closed? method is deprecated, please use the closed? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
352
|
+
closed?
|
328
353
|
end
|
329
354
|
|
330
355
|
def coordinates
|
@@ -20,7 +20,7 @@ module RGeo
|
|
20
20
|
raise Error::InvalidGeometry, "Could not cast #{elem}" unless elem
|
21
21
|
elem
|
22
22
|
end
|
23
|
-
|
23
|
+
init_geometry
|
24
24
|
end
|
25
25
|
|
26
26
|
def num_geometries
|
@@ -51,10 +51,15 @@ module RGeo
|
|
51
51
|
Feature::GeometryCollection
|
52
52
|
end
|
53
53
|
|
54
|
-
def
|
54
|
+
def empty?
|
55
55
|
@elements.size == 0
|
56
56
|
end
|
57
57
|
|
58
|
+
def is_empty?
|
59
|
+
warn "The is_empty? method is deprecated, please use the empty? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
60
|
+
empty?
|
61
|
+
end
|
62
|
+
|
58
63
|
def rep_equals?(rhs)
|
59
64
|
if rhs.is_a?(self.class) && rhs.factory.eql?(@factory) && @elements.size == rhs.num_geometries
|
60
65
|
rhs.each_with_index { |p, i| return false unless @elements[i].rep_equals?(p) }
|
@@ -86,15 +91,20 @@ module RGeo
|
|
86
91
|
raise Error::InvalidGeometry, "Could not cast #{elem}" unless elem
|
87
92
|
elem
|
88
93
|
end
|
89
|
-
|
94
|
+
init_geometry
|
90
95
|
end
|
91
96
|
|
92
97
|
def geometry_type
|
93
98
|
Feature::MultiLineString
|
94
99
|
end
|
95
100
|
|
101
|
+
def closed?
|
102
|
+
all?(&:closed?)
|
103
|
+
end
|
104
|
+
|
96
105
|
def is_closed?
|
97
|
-
|
106
|
+
warn "The is_closed? method is deprecated, please use the closed? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
107
|
+
closed?
|
98
108
|
end
|
99
109
|
|
100
110
|
def length
|
@@ -104,7 +114,7 @@ module RGeo
|
|
104
114
|
def boundary
|
105
115
|
hash = {}
|
106
116
|
@elements.each do |line|
|
107
|
-
if !line.
|
117
|
+
if !line.empty? && !line.closed?
|
108
118
|
add_boundary(hash, line.start_point)
|
109
119
|
add_boundary(hash, line.end_point)
|
110
120
|
end
|
@@ -142,7 +152,7 @@ module RGeo
|
|
142
152
|
raise Error::InvalidGeometry, "Could not cast #{elem}" unless elem
|
143
153
|
elem
|
144
154
|
end
|
145
|
-
|
155
|
+
init_geometry
|
146
156
|
end
|
147
157
|
|
148
158
|
def geometry_type
|
@@ -166,7 +176,7 @@ module RGeo
|
|
166
176
|
raise Error::InvalidGeometry, "Could not cast #{elem}" unless elem
|
167
177
|
elem
|
168
178
|
end
|
169
|
-
|
179
|
+
init_geometry
|
170
180
|
end
|
171
181
|
|
172
182
|
def geometry_type
|
@@ -180,7 +190,7 @@ module RGeo
|
|
180
190
|
def boundary
|
181
191
|
array = []
|
182
192
|
@elements.each do |poly|
|
183
|
-
array << poly.exterior_ring unless poly.
|
193
|
+
array << poly.exterior_ring unless poly.empty?
|
184
194
|
array.concat(poly.interior_rings)
|
185
195
|
end
|
186
196
|
factory.multi_line_string(array)
|
@@ -16,7 +16,13 @@ module RGeo
|
|
16
16
|
raise Error::InvalidGeometry, "Could not cast #{elem}" unless elem
|
17
17
|
elem
|
18
18
|
end
|
19
|
-
|
19
|
+
# LineStrings in general need to check that there's not one point
|
20
|
+
# GEOS doesn't allow instantiation of single point LineStrings so
|
21
|
+
# we should handle it.
|
22
|
+
if @points.size == 1
|
23
|
+
raise Error::InvalidGeometry, "LineString Cannot Have 1 Point"
|
24
|
+
end
|
25
|
+
init_geometry
|
20
26
|
end
|
21
27
|
|
22
28
|
def num_points
|
@@ -39,13 +45,18 @@ module RGeo
|
|
39
45
|
Feature::LineString
|
40
46
|
end
|
41
47
|
|
42
|
-
def
|
48
|
+
def empty?
|
43
49
|
@points.size == 0
|
44
50
|
end
|
45
51
|
|
52
|
+
def is_empty?
|
53
|
+
warn "The is_empty? method is deprecated, please use the empty? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
54
|
+
empty?
|
55
|
+
end
|
56
|
+
|
46
57
|
def boundary
|
47
58
|
array = []
|
48
|
-
array << @points.first << @points.last if !
|
59
|
+
array << @points.first << @points.last if !empty? && !closed?
|
49
60
|
factory.multipoint([array])
|
50
61
|
end
|
51
62
|
|
@@ -57,15 +68,25 @@ module RGeo
|
|
57
68
|
@points.last
|
58
69
|
end
|
59
70
|
|
60
|
-
def
|
61
|
-
unless defined?(@
|
62
|
-
@
|
71
|
+
def closed?
|
72
|
+
unless defined?(@closed)
|
73
|
+
@closed = @points.size > 2 && @points.first == @points.last
|
63
74
|
end
|
64
|
-
@
|
75
|
+
@closed
|
76
|
+
end
|
77
|
+
|
78
|
+
def is_closed?
|
79
|
+
warn "The is_closed? method is deprecated, please use the closed? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
80
|
+
closed?
|
81
|
+
end
|
82
|
+
|
83
|
+
def ring?
|
84
|
+
closed? && simple?
|
65
85
|
end
|
66
86
|
|
67
87
|
def is_ring?
|
68
|
-
|
88
|
+
warn "The is_ring? method is deprecated, please use the ring? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
89
|
+
ring?
|
69
90
|
end
|
70
91
|
|
71
92
|
def rep_equals?(rhs)
|
@@ -128,12 +149,6 @@ module RGeo
|
|
128
149
|
super
|
129
150
|
@points = obj.points
|
130
151
|
end
|
131
|
-
|
132
|
-
def validate_geometry
|
133
|
-
if @points.size == 1
|
134
|
-
raise Error::InvalidGeometry, "LineString cannot have 1 point"
|
135
|
-
end
|
136
|
-
end
|
137
152
|
end
|
138
153
|
|
139
154
|
module BasicLineMethods # :nodoc:
|
@@ -146,7 +161,7 @@ module RGeo
|
|
146
161
|
cstop = Feature.cast(stop, factory, Feature::Point)
|
147
162
|
raise Error::InvalidGeometry, "Could not cast end: #{stop}" unless cstop
|
148
163
|
@points = [cstart, cstop]
|
149
|
-
|
164
|
+
init_geometry
|
150
165
|
end
|
151
166
|
|
152
167
|
def geometry_type
|
@@ -156,18 +171,16 @@ module RGeo
|
|
156
171
|
def coordinates
|
157
172
|
@points.map(&:coordinates)
|
158
173
|
end
|
174
|
+
end
|
159
175
|
|
160
|
-
|
161
|
-
|
162
|
-
def validate_geometry
|
176
|
+
module BasicLinearRingMethods # :nodoc:
|
177
|
+
def initialize(factory, points)
|
163
178
|
super
|
164
|
-
|
165
|
-
raise Error::InvalidGeometry, "
|
179
|
+
unless @points.size >= 4 || @points.size == 0
|
180
|
+
raise Error::InvalidGeometry, "LinearRings must have 0 or >= 4 points"
|
166
181
|
end
|
167
182
|
end
|
168
|
-
end
|
169
183
|
|
170
|
-
module BasicLinearRingMethods # :nodoc:
|
171
184
|
def geometry_type
|
172
185
|
Feature::LinearRing
|
173
186
|
end
|
@@ -178,14 +191,12 @@ module RGeo
|
|
178
191
|
|
179
192
|
private
|
180
193
|
|
181
|
-
|
194
|
+
# Close ring if necessary.
|
195
|
+
def init_geometry
|
182
196
|
super
|
183
197
|
if @points.size > 0
|
184
198
|
@points << @points.first if @points.first != @points.last
|
185
199
|
@points = @points.chunk { |x| x }.map(&:first)
|
186
|
-
if !@factory.property(:uses_lenient_assertions) && !is_ring?
|
187
|
-
raise Error::InvalidGeometry, "LinearRing failed ring test"
|
188
|
-
end
|
189
200
|
end
|
190
201
|
end
|
191
202
|
end
|
@@ -18,7 +18,7 @@ module RGeo
|
|
18
18
|
if extra.size > 0
|
19
19
|
raise ArgumentError, "Too many arguments for point initializer"
|
20
20
|
end
|
21
|
-
|
21
|
+
init_geometry
|
22
22
|
end
|
23
23
|
|
24
24
|
def x
|
@@ -45,14 +45,24 @@ module RGeo
|
|
45
45
|
Feature::Point
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
48
|
+
def empty?
|
49
49
|
false
|
50
50
|
end
|
51
51
|
|
52
|
-
def
|
52
|
+
def is_empty?
|
53
|
+
warn "The is_empty? method is deprecated, please use the empty? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
54
|
+
empty?
|
55
|
+
end
|
56
|
+
|
57
|
+
def simple?
|
53
58
|
true
|
54
59
|
end
|
55
60
|
|
61
|
+
def is_simple?
|
62
|
+
warn "The is_simple? method is deprecated, please use the simple? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
63
|
+
simple?
|
64
|
+
end
|
65
|
+
|
56
66
|
def envelope
|
57
67
|
self
|
58
68
|
end
|
@@ -22,7 +22,7 @@ module RGeo
|
|
22
22
|
end
|
23
23
|
elem
|
24
24
|
end
|
25
|
-
|
25
|
+
init_geometry
|
26
26
|
end
|
27
27
|
|
28
28
|
def exterior_ring
|
@@ -49,13 +49,18 @@ module RGeo
|
|
49
49
|
Feature::Polygon
|
50
50
|
end
|
51
51
|
|
52
|
+
def empty?
|
53
|
+
@exterior_ring.empty?
|
54
|
+
end
|
55
|
+
|
52
56
|
def is_empty?
|
53
|
-
|
57
|
+
warn "The is_empty? method is deprecated, please use the empty? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
|
58
|
+
empty?
|
54
59
|
end
|
55
60
|
|
56
61
|
def boundary
|
57
62
|
array = []
|
58
|
-
array << @exterior_ring unless @exterior_ring.
|
63
|
+
array << @exterior_ring unless @exterior_ring.empty?
|
59
64
|
array.concat(@interior_rings)
|
60
65
|
factory.multi_line_string(array)
|
61
66
|
end
|