rgeo 3.0.0 → 3.1.0
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/README.md +3 -4
- data/ext/geos_c_impl/extconf.rb +2 -0
- data/ext/geos_c_impl/factory.c +3 -1
- data/ext/geos_c_impl/factory.h +2 -2
- data/ext/geos_c_impl/geometry.c +27 -0
- data/ext/geos_c_impl/globals.c +1 -2
- data/ext/geos_c_impl/point.c +2 -1
- data/ext/geos_c_impl/polygon.c +35 -0
- data/ext/geos_c_impl/preface.h +6 -0
- data/lib/rgeo/cartesian/factory.rb +2 -2
- data/lib/rgeo/coord_sys/cs/entities.rb +34 -30
- data/lib/rgeo/feature/geometry_collection.rb +1 -1
- data/lib/rgeo/feature/types.rb +11 -17
- data/lib/rgeo/geographic/factory.rb +2 -2
- data/lib/rgeo/geographic/interface.rb +10 -10
- data/lib/rgeo/geographic/projected_window.rb +1 -1
- data/lib/rgeo/geographic/simple_mercator_projector.rb +4 -4
- data/lib/rgeo/geos/ffi_factory.rb +12 -10
- data/lib/rgeo/geos/ffi_feature_methods.rb +7 -8
- data/lib/rgeo/geos/utils.rb +2 -2
- data/lib/rgeo/geos/zm_factory.rb +3 -3
- data/lib/rgeo/geos/zm_feature_methods.rb +0 -1
- data/lib/rgeo/geos.rb +7 -1
- data/lib/rgeo/impl_helper/basic_geometry_collection_methods.rb +2 -2
- data/lib/rgeo/impl_helper/utils.rb +1 -1
- data/lib/rgeo/version.rb +1 -1
- metadata +21 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 986cc6e02e2625161460dee926ef5237df6bd9959323190ab25fff10de68d76f
|
|
4
|
+
data.tar.gz: 10611b18bd565c006ff06bf12b152a07fed95968e46730fa652d39d2b4a6be5c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 85874f17611f284b7af91fce4bc383f5361f1880cdcb3cb2b40b4efd3c7c8146925cfac415819d4e1195dd92b9887fa0406fa3df786e7d651e5e55e165f231de
|
|
7
|
+
data.tar.gz: 7abe786c87c3138e94c665a2cd845d1f599e7238cdf505e25e68303ec1de575d5fd400393541d1c3e023fb57511f7ae8defeaceb60d4d08cecb013a04526035d
|
data/README.md
CHANGED
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
RGeo is a geospatial data library for Ruby.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
***Contributors Wanted!***
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
If you use RGeo and are interested in contributing, please check out our [open issues](https://github.com/rgeo/rgeo/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22%2C%22help+wanted%22) to see if there's anything you're able to help with.
|
|
11
11
|
|
|
12
|
-
:warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning::warning:
|
|
13
12
|
|
|
14
13
|
### Summary
|
|
15
14
|
|
|
@@ -37,7 +36,7 @@ Use the core **rgeo** gem to:
|
|
|
37
36
|
|
|
38
37
|
RGeo works with the following Ruby implementations:
|
|
39
38
|
|
|
40
|
-
* MRI Ruby
|
|
39
|
+
* MRI Ruby 3.1.4 or later.
|
|
41
40
|
* Partial support for JRuby 9.0 or later. The FFI implementation of GEOS
|
|
42
41
|
is available (ffi-geos gem required) but CAPI is not.
|
|
43
42
|
* See earlier versions for support for older ruby versions.
|
data/ext/geos_c_impl/extconf.rb
CHANGED
|
@@ -45,6 +45,8 @@ if have_header("geos_c.h")
|
|
|
45
45
|
have_func("GEOSPreparedDisjoint_r", "geos_c.h")
|
|
46
46
|
have_func("GEOSUnaryUnion_r", "geos_c.h")
|
|
47
47
|
have_func("GEOSCoordSeq_isCCW_r", "geos_c.h")
|
|
48
|
+
have_func("GEOSDensify", "geos_c.h")
|
|
49
|
+
have_func("GEOSPolygonHullSimplify", "geos_c.h")
|
|
48
50
|
have_func("rb_memhash", "ruby.h")
|
|
49
51
|
have_func("rb_gc_mark_movable", "ruby.h")
|
|
50
52
|
end
|
data/ext/geos_c_impl/factory.c
CHANGED
|
@@ -378,6 +378,7 @@ method_factory_write_for_marshal(VALUE self, VALUE obj)
|
|
|
378
378
|
wkb_writer = self_data->marshal_wkb_writer;
|
|
379
379
|
if (!wkb_writer) {
|
|
380
380
|
wkb_writer = GEOSWKBWriter_create();
|
|
381
|
+
GEOSWKBWriter_setOutputDimension(wkb_writer, 2);
|
|
381
382
|
if (has_3d) {
|
|
382
383
|
GEOSWKBWriter_setOutputDimension(wkb_writer, 3);
|
|
383
384
|
}
|
|
@@ -427,6 +428,7 @@ method_factory_write_for_psych(VALUE self, VALUE obj)
|
|
|
427
428
|
wkt_writer = self_data->psych_wkt_writer;
|
|
428
429
|
if (!wkt_writer) {
|
|
429
430
|
wkt_writer = GEOSWKTWriter_create();
|
|
431
|
+
GEOSWKTWriter_setOutputDimension(wkt_writer, 2);
|
|
430
432
|
GEOSWKTWriter_setTrim(wkt_writer, 1);
|
|
431
433
|
if (has_3d) {
|
|
432
434
|
GEOSWKTWriter_setOutputDimension(wkt_writer, 3);
|
|
@@ -1008,7 +1010,7 @@ rgeo_geos_coordseqs_eql(const GEOSGeometry* geom1,
|
|
|
1008
1010
|
result = Qnil;
|
|
1009
1011
|
break;
|
|
1010
1012
|
}
|
|
1011
|
-
}
|
|
1013
|
+
} // Iteration over coords
|
|
1012
1014
|
} else { // Lengths are different
|
|
1013
1015
|
result = Qfalse;
|
|
1014
1016
|
}
|
data/ext/geos_c_impl/factory.h
CHANGED
|
@@ -105,8 +105,8 @@ extern const rb_data_type_t rgeo_geometry_type;
|
|
|
105
105
|
(_RGEO_TYPEDDATA_P(object, &rgeo_geometry_type))
|
|
106
106
|
|
|
107
107
|
#define _RGEO_TYPEDDATA_P(object, data_type) \
|
|
108
|
-
(
|
|
109
|
-
|
|
108
|
+
(RB_TYPE_P(object, T_DATA) && RTYPEDDATA_P(object) && \
|
|
109
|
+
RTYPEDDATA_TYPE(object) == data_type)
|
|
110
110
|
|
|
111
111
|
// Returns the RGeo_FactoryData* given a ruby Factory object
|
|
112
112
|
#define RGEO_FACTORY_DATA_PTR(factory) \
|
data/ext/geos_c_impl/geometry.c
CHANGED
|
@@ -266,6 +266,7 @@ method_geometry_as_text(VALUE self)
|
|
|
266
266
|
wkt_writer = factory_data->wkt_writer;
|
|
267
267
|
if (!wkt_writer) {
|
|
268
268
|
wkt_writer = GEOSWKTWriter_create();
|
|
269
|
+
GEOSWKTWriter_setOutputDimension(wkt_writer, 2);
|
|
269
270
|
GEOSWKTWriter_setTrim(wkt_writer, 1);
|
|
270
271
|
factory_data->wkt_writer = wkt_writer;
|
|
271
272
|
}
|
|
@@ -304,6 +305,7 @@ method_geometry_as_binary(VALUE self)
|
|
|
304
305
|
|
|
305
306
|
if (!wkb_writer) {
|
|
306
307
|
wkb_writer = GEOSWKBWriter_create();
|
|
308
|
+
GEOSWKBWriter_setOutputDimension(wkb_writer, 2);
|
|
307
309
|
factory_data->wkb_writer = wkb_writer;
|
|
308
310
|
}
|
|
309
311
|
str = (char*)GEOSWKBWriter_write(wkb_writer, self_geom, &size);
|
|
@@ -738,6 +740,27 @@ method_geometry_buffer(VALUE self, VALUE distance)
|
|
|
738
740
|
return result;
|
|
739
741
|
}
|
|
740
742
|
|
|
743
|
+
#ifdef RGEO_GEOS_SUPPORTS_DENSIFY
|
|
744
|
+
static VALUE
|
|
745
|
+
method_geometry_segmentize(VALUE self, VALUE max_segment_length)
|
|
746
|
+
{
|
|
747
|
+
VALUE result;
|
|
748
|
+
RGeo_GeometryData* self_data;
|
|
749
|
+
const GEOSGeometry* self_geom;
|
|
750
|
+
VALUE factory;
|
|
751
|
+
|
|
752
|
+
result = Qnil;
|
|
753
|
+
self_data = RGEO_GEOMETRY_DATA_PTR(self);
|
|
754
|
+
self_geom = self_data->geom;
|
|
755
|
+
if (self_geom) {
|
|
756
|
+
factory = self_data->factory;
|
|
757
|
+
result = rgeo_wrap_geos_geometry(
|
|
758
|
+
factory, GEOSDensify(self_geom, rb_num2dbl(max_segment_length)), Qnil);
|
|
759
|
+
}
|
|
760
|
+
return result;
|
|
761
|
+
}
|
|
762
|
+
#endif
|
|
763
|
+
|
|
741
764
|
static VALUE
|
|
742
765
|
method_geometry_buffer_with_style(VALUE self,
|
|
743
766
|
VALUE distance,
|
|
@@ -1306,6 +1329,10 @@ rgeo_init_geos_geometry()
|
|
|
1306
1329
|
geos_geometry_methods, "make_valid", method_geometry_make_valid, 0);
|
|
1307
1330
|
rb_define_method(
|
|
1308
1331
|
geos_geometry_methods, "polygonize", method_geometry_polygonize, 0);
|
|
1332
|
+
#ifdef RGEO_GEOS_SUPPORTS_DENSIFY
|
|
1333
|
+
rb_define_method(
|
|
1334
|
+
geos_geometry_methods, "segmentize", method_geometry_segmentize, 1);
|
|
1335
|
+
#endif
|
|
1309
1336
|
}
|
|
1310
1337
|
|
|
1311
1338
|
RGEO_END_C
|
data/ext/geos_c_impl/globals.c
CHANGED
data/ext/geos_c_impl/point.c
CHANGED
|
@@ -212,7 +212,8 @@ rgeo_create_geos_point(VALUE factory, double x, double y, double z)
|
|
|
212
212
|
GEOSGeometry* geom;
|
|
213
213
|
|
|
214
214
|
result = Qnil;
|
|
215
|
-
coord_seq = GEOSCoordSeq_create(
|
|
215
|
+
coord_seq = GEOSCoordSeq_create(
|
|
216
|
+
1, 3); // Never cleaned if failure setting one of the coord
|
|
216
217
|
if (coord_seq) {
|
|
217
218
|
if (GEOSCoordSeq_setX(coord_seq, 0, x)) {
|
|
218
219
|
if (GEOSCoordSeq_setY(coord_seq, 0, y)) {
|
data/ext/geos_c_impl/polygon.c
CHANGED
|
@@ -231,6 +231,34 @@ method_polygon_interior_rings(VALUE self)
|
|
|
231
231
|
return result;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
+
#ifdef RGEO_GEOS_SUPPORTS_POLYGON_HULL_SIMPLIFY
|
|
235
|
+
static VALUE
|
|
236
|
+
method_polygon_simplify_polygon_hull(VALUE self,
|
|
237
|
+
VALUE vertex_fraction,
|
|
238
|
+
VALUE is_outer)
|
|
239
|
+
{
|
|
240
|
+
VALUE result;
|
|
241
|
+
RGeo_GeometryData* self_data;
|
|
242
|
+
const GEOSGeometry* self_geom;
|
|
243
|
+
VALUE factory;
|
|
244
|
+
|
|
245
|
+
unsigned int is_outer_uint = RTEST(is_outer) ? 1 : 0;
|
|
246
|
+
|
|
247
|
+
result = Qnil;
|
|
248
|
+
self_data = RGEO_GEOMETRY_DATA_PTR(self);
|
|
249
|
+
self_geom = self_data->geom;
|
|
250
|
+
if (self_geom) {
|
|
251
|
+
factory = self_data->factory;
|
|
252
|
+
result = rgeo_wrap_geos_geometry(
|
|
253
|
+
factory,
|
|
254
|
+
GEOSPolygonHullSimplify(
|
|
255
|
+
self_geom, is_outer_uint, rb_num2dbl(vertex_fraction)),
|
|
256
|
+
Qnil);
|
|
257
|
+
}
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
#endif
|
|
261
|
+
|
|
234
262
|
static VALUE
|
|
235
263
|
cmethod_create(VALUE module,
|
|
236
264
|
VALUE factory,
|
|
@@ -335,6 +363,13 @@ rgeo_init_geos_polygon()
|
|
|
335
363
|
geos_polygon_methods, "interior_rings", method_polygon_interior_rings, 0);
|
|
336
364
|
rb_define_method(
|
|
337
365
|
geos_polygon_methods, "coordinates", method_polygon_coordinates, 0);
|
|
366
|
+
|
|
367
|
+
#ifdef RGEO_GEOS_SUPPORTS_POLYGON_HULL_SIMPLIFY
|
|
368
|
+
rb_define_method(geos_polygon_methods,
|
|
369
|
+
"simplify_polygon_hull",
|
|
370
|
+
method_polygon_simplify_polygon_hull,
|
|
371
|
+
2);
|
|
372
|
+
#endif
|
|
338
373
|
}
|
|
339
374
|
|
|
340
375
|
st_index_t
|
data/ext/geos_c_impl/preface.h
CHANGED
|
@@ -23,6 +23,12 @@
|
|
|
23
23
|
#ifdef HAVE_GEOSCOORDSEQ_ISCCW_R
|
|
24
24
|
#define RGEO_GEOS_SUPPORTS_ISCCW
|
|
25
25
|
#endif
|
|
26
|
+
#ifdef HAVE_GEOSDENSIFY
|
|
27
|
+
#define RGEO_GEOS_SUPPORTS_DENSIFY
|
|
28
|
+
#endif
|
|
29
|
+
#ifdef HAVE_GEOSPOLYGONHULLSIMPLIFY
|
|
30
|
+
#define RGEO_GEOS_SUPPORTS_POLYGON_HULL_SIMPLIFY
|
|
31
|
+
#endif
|
|
26
32
|
#ifdef HAVE_RB_GC_MARK_MOVABLE
|
|
27
33
|
#define mark rb_gc_mark_movable
|
|
28
34
|
#else
|
|
@@ -121,7 +121,7 @@ module RGeo
|
|
|
121
121
|
wkt_parser: symbolize_hash(data["wktp"]),
|
|
122
122
|
wkb_parser: symbolize_hash(data["wkbp"]),
|
|
123
123
|
buffer_resolution: data["bufr"],
|
|
124
|
-
coord_sys:
|
|
124
|
+
coord_sys:
|
|
125
125
|
)
|
|
126
126
|
end
|
|
127
127
|
|
|
@@ -152,7 +152,7 @@ module RGeo
|
|
|
152
152
|
wkt_parser: symbolize_hash(coder["wkt_parser"]),
|
|
153
153
|
wkb_parser: symbolize_hash(coder["wkb_parser"]),
|
|
154
154
|
buffer_resolution: coder["buffer_resolution"],
|
|
155
|
-
coord_sys:
|
|
155
|
+
coord_sys:
|
|
156
156
|
)
|
|
157
157
|
end
|
|
158
158
|
|
|
@@ -251,6 +251,7 @@ module RGeo
|
|
|
251
251
|
# :startdoc:
|
|
252
252
|
|
|
253
253
|
def initialize(name, orientation) # :nodoc:
|
|
254
|
+
super()
|
|
254
255
|
@name = name
|
|
255
256
|
@orientation =
|
|
256
257
|
case orientation
|
|
@@ -302,6 +303,7 @@ module RGeo
|
|
|
302
303
|
# system that the projected coordinate system is based on.
|
|
303
304
|
class ProjectionParameter < Base
|
|
304
305
|
def initialize(name, value) # :nodoc:
|
|
306
|
+
super()
|
|
305
307
|
@name = name
|
|
306
308
|
@value = value.to_f
|
|
307
309
|
end
|
|
@@ -339,6 +341,7 @@ module RGeo
|
|
|
339
341
|
# points East, and the Z axis points North.
|
|
340
342
|
class WGS84ConversionInfo < Base
|
|
341
343
|
def initialize(dx_meters, dy_meters, dz_meters, ex_arc_seconds, ey_arc_seconds, ez_arc_seconds, ppm) # :nodoc:
|
|
344
|
+
super()
|
|
342
345
|
@dx = dx_meters.to_f
|
|
343
346
|
@dy = dy_meters.to_f
|
|
344
347
|
@dz = dz_meters.to_f
|
|
@@ -427,6 +430,7 @@ module RGeo
|
|
|
427
430
|
class Info < Base
|
|
428
431
|
def initialize(name, authority = nil, authority_code = nil, abbreviation = nil, init_alias = nil,
|
|
429
432
|
remarks = nil, extensions = nil) # :nodoc:
|
|
433
|
+
super()
|
|
430
434
|
@name = name
|
|
431
435
|
@authority = authority ? authority.to_s : nil
|
|
432
436
|
@authority_code = authority_code ? authority_code.to_s : nil
|
|
@@ -817,8 +821,8 @@ module RGeo
|
|
|
817
821
|
private
|
|
818
822
|
|
|
819
823
|
def wkt_content(standard_brackets)
|
|
820
|
-
array = [@ellipsoid.to_wkt(standard_brackets:
|
|
821
|
-
array << @wgs84_parameters.to_wkt(standard_brackets:
|
|
824
|
+
array = [@ellipsoid.to_wkt(standard_brackets:)]
|
|
825
|
+
array << @wgs84_parameters.to_wkt(standard_brackets:) if @wgs84_parameters
|
|
822
826
|
array
|
|
823
827
|
end
|
|
824
828
|
end
|
|
@@ -851,8 +855,8 @@ module RGeo
|
|
|
851
855
|
|
|
852
856
|
# Iterates over the parameters of the projection.
|
|
853
857
|
|
|
854
|
-
def each_parameter(&
|
|
855
|
-
@parameters.each(&
|
|
858
|
+
def each_parameter(&)
|
|
859
|
+
@parameters.each(&)
|
|
856
860
|
end
|
|
857
861
|
|
|
858
862
|
def wkt_typename
|
|
@@ -1024,7 +1028,7 @@ module RGeo
|
|
|
1024
1028
|
private
|
|
1025
1029
|
|
|
1026
1030
|
def wkt_content(standard_brackets)
|
|
1027
|
-
[@head.to_wkt(standard_brackets:
|
|
1031
|
+
[@head.to_wkt(standard_brackets:), @tail.to_wkt(standard_brackets:)]
|
|
1028
1032
|
end
|
|
1029
1033
|
end
|
|
1030
1034
|
|
|
@@ -1088,9 +1092,9 @@ module RGeo
|
|
|
1088
1092
|
|
|
1089
1093
|
def wkt_content(standard_brackets)
|
|
1090
1094
|
[
|
|
1091
|
-
@local_datum.to_wkt(standard_brackets:
|
|
1092
|
-
@unit.to_wkt(standard_brackets:
|
|
1093
|
-
] + @axes.map { |ax| ax.to_wkt(standard_brackets:
|
|
1095
|
+
@local_datum.to_wkt(standard_brackets:),
|
|
1096
|
+
@unit.to_wkt(standard_brackets:)
|
|
1097
|
+
] + @axes.map { |ax| ax.to_wkt(standard_brackets:) }
|
|
1094
1098
|
end
|
|
1095
1099
|
end
|
|
1096
1100
|
|
|
@@ -1161,13 +1165,13 @@ module RGeo
|
|
|
1161
1165
|
|
|
1162
1166
|
def wkt_content(standard_brackets)
|
|
1163
1167
|
arr = [
|
|
1164
|
-
@horizontal_datum.to_wkt(standard_brackets:
|
|
1165
|
-
@prime_meridian.to_wkt(standard_brackets:
|
|
1166
|
-
@linear_unit.to_wkt(standard_brackets:
|
|
1168
|
+
@horizontal_datum.to_wkt(standard_brackets:),
|
|
1169
|
+
@prime_meridian.to_wkt(standard_brackets:),
|
|
1170
|
+
@linear_unit.to_wkt(standard_brackets:)
|
|
1167
1171
|
]
|
|
1168
|
-
arr << @axis0.to_wkt(standard_brackets:
|
|
1169
|
-
arr << @axis1.to_wkt(standard_brackets:
|
|
1170
|
-
arr << @axis2.to_wkt(standard_brackets:
|
|
1172
|
+
arr << @axis0.to_wkt(standard_brackets:) if @axis0
|
|
1173
|
+
arr << @axis1.to_wkt(standard_brackets:) if @axis1
|
|
1174
|
+
arr << @axis2.to_wkt(standard_brackets:) if @axis2
|
|
1171
1175
|
arr
|
|
1172
1176
|
end
|
|
1173
1177
|
end
|
|
@@ -1222,10 +1226,10 @@ module RGeo
|
|
|
1222
1226
|
|
|
1223
1227
|
def wkt_content(standard_brackets)
|
|
1224
1228
|
arr = [
|
|
1225
|
-
@vertical_datum.to_wkt(standard_brackets:
|
|
1226
|
-
@vertical_unit.to_wkt(standard_brackets:
|
|
1229
|
+
@vertical_datum.to_wkt(standard_brackets:),
|
|
1230
|
+
@vertical_unit.to_wkt(standard_brackets:)
|
|
1227
1231
|
]
|
|
1228
|
-
arr << @axis.to_wkt(standard_brackets:
|
|
1232
|
+
arr << @axis.to_wkt(standard_brackets:) if @axis
|
|
1229
1233
|
arr
|
|
1230
1234
|
end
|
|
1231
1235
|
end
|
|
@@ -1324,12 +1328,12 @@ module RGeo
|
|
|
1324
1328
|
|
|
1325
1329
|
def wkt_content(standard_brackets)
|
|
1326
1330
|
arr = [
|
|
1327
|
-
@horizontal_datum.to_wkt(standard_brackets:
|
|
1328
|
-
@prime_meridian.to_wkt(standard_brackets:
|
|
1329
|
-
@angular_unit.to_wkt(standard_brackets:
|
|
1331
|
+
@horizontal_datum.to_wkt(standard_brackets:),
|
|
1332
|
+
@prime_meridian.to_wkt(standard_brackets:),
|
|
1333
|
+
@angular_unit.to_wkt(standard_brackets:)
|
|
1330
1334
|
]
|
|
1331
|
-
arr << @axis0.to_wkt(standard_brackets:
|
|
1332
|
-
arr << @axis1.to_wkt(standard_brackets:
|
|
1335
|
+
arr << @axis0.to_wkt(standard_brackets:) if @axis0
|
|
1336
|
+
arr << @axis1.to_wkt(standard_brackets:) if @axis1
|
|
1333
1337
|
arr
|
|
1334
1338
|
end
|
|
1335
1339
|
end
|
|
@@ -1393,13 +1397,13 @@ module RGeo
|
|
|
1393
1397
|
|
|
1394
1398
|
def wkt_content(standard_brackets)
|
|
1395
1399
|
arr = [
|
|
1396
|
-
@geographic_coordinate_system.to_wkt(standard_brackets:
|
|
1397
|
-
@projection.to_wkt(standard_brackets:
|
|
1400
|
+
@geographic_coordinate_system.to_wkt(standard_brackets:),
|
|
1401
|
+
@projection.to_wkt(standard_brackets:)
|
|
1398
1402
|
]
|
|
1399
|
-
@projection.each_parameter { |param| arr << param.to_wkt(standard_brackets:
|
|
1400
|
-
arr << @linear_unit.to_wkt(standard_brackets:
|
|
1401
|
-
arr << @axis0.to_wkt(standard_brackets:
|
|
1402
|
-
arr << @axis1.to_wkt(standard_brackets:
|
|
1403
|
+
@projection.each_parameter { |param| arr << param.to_wkt(standard_brackets:) }
|
|
1404
|
+
arr << @linear_unit.to_wkt(standard_brackets:)
|
|
1405
|
+
arr << @axis0.to_wkt(standard_brackets:) if @axis0
|
|
1406
|
+
arr << @axis1.to_wkt(standard_brackets:) if @axis1
|
|
1403
1407
|
arr
|
|
1404
1408
|
end
|
|
1405
1409
|
end
|
|
@@ -1546,8 +1550,8 @@ module RGeo
|
|
|
1546
1550
|
private
|
|
1547
1551
|
|
|
1548
1552
|
def wkt_content(standard_brackets)
|
|
1549
|
-
source_cs_wkt = "SOURCECS[#{source_cs.to_wkt(standard_brackets:
|
|
1550
|
-
target_cs_wkt = "TARGETCS[#{target_cs.to_wkt(standard_brackets:
|
|
1553
|
+
source_cs_wkt = "SOURCECS[#{source_cs.to_wkt(standard_brackets:)}]"
|
|
1554
|
+
target_cs_wkt = "TARGETCS[#{target_cs.to_wkt(standard_brackets:)}]"
|
|
1551
1555
|
|
|
1552
1556
|
[source_cs_wkt, target_cs_wkt]
|
|
1553
1557
|
end
|
data/lib/rgeo/feature/types.rb
CHANGED
|
@@ -78,8 +78,8 @@ module RGeo
|
|
|
78
78
|
|
|
79
79
|
# Iterates over the known immediate subtypes of this type.
|
|
80
80
|
|
|
81
|
-
def each_immediate_subtype(&
|
|
82
|
-
@subtypes&.each(&
|
|
81
|
+
def each_immediate_subtype(&)
|
|
82
|
+
@subtypes&.each(&)
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
# Returns the OpenGIS type name of this type. For example:
|
|
@@ -191,21 +191,15 @@ module RGeo
|
|
|
191
191
|
if nfactory == factory
|
|
192
192
|
force_new ? obj.dup : obj
|
|
193
193
|
elsif type == Point
|
|
194
|
-
|
|
195
|
-
if project
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
coords << (hasz ? obj.z : 0.0) if nhasz && coords.size < 3
|
|
204
|
-
else
|
|
205
|
-
coords = [obj.x, obj.y]
|
|
206
|
-
coords << (hasz ? obj.z : 0.0) if nhasz
|
|
207
|
-
end
|
|
208
|
-
coords << (factory.property(:has_m_coordinate) ? obj.m : 0.0) if nfactory.property(:has_m_coordinate)
|
|
194
|
+
z = factory.property(:has_z_coordinate) ? obj.z : nil
|
|
195
|
+
coords = if project && (cs = factory.coord_sys) && (ncs = nfactory.coord_sys)
|
|
196
|
+
cs.transform_coords(ncs, obj.x, obj.y, z)
|
|
197
|
+
else
|
|
198
|
+
[obj.x, obj.y]
|
|
199
|
+
end
|
|
200
|
+
coords << (z || 0.0) if nfactory.property(:has_z_coordinate) && coords.size < 3
|
|
201
|
+
m = factory.property(:has_m_coordinate) ? obj.m : nil
|
|
202
|
+
coords << (m || 0.0) if nfactory.property(:has_m_coordinate)
|
|
209
203
|
nfactory.point(*coords)
|
|
210
204
|
elsif type == Line
|
|
211
205
|
nfactory.line(cast(obj.start_point, nfactory, opts), cast(obj.end_point, nfactory, opts))
|
|
@@ -139,7 +139,7 @@ module RGeo
|
|
|
139
139
|
wkt_parser: symbolize_hash(data_["wktp"]),
|
|
140
140
|
wkb_parser: symbolize_hash(data_["wkbp"]),
|
|
141
141
|
buffer_resolution: data_["bufr"],
|
|
142
|
-
coord_sys:
|
|
142
|
+
coord_sys:
|
|
143
143
|
)
|
|
144
144
|
proj_klass = data_["prjc"]
|
|
145
145
|
proj_factory = data_["prjf"]
|
|
@@ -189,7 +189,7 @@ module RGeo
|
|
|
189
189
|
wkt_parser: symbolize_hash(coder["wkt_parser"]),
|
|
190
190
|
wkb_parser: symbolize_hash(coder["wkb_parser"]),
|
|
191
191
|
buffer_resolution: coder["buffer_resolution"],
|
|
192
|
-
coord_sys:
|
|
192
|
+
coord_sys:
|
|
193
193
|
)
|
|
194
194
|
proj_klass = coder["projectorclass"]
|
|
195
195
|
proj_factory = coder["projection_factory"]
|
|
@@ -106,7 +106,7 @@ module RGeo
|
|
|
106
106
|
"Spherical",
|
|
107
107
|
has_z_coordinate: opts[:has_z_coordinate],
|
|
108
108
|
has_m_coordinate: opts[:has_m_coordinate],
|
|
109
|
-
coord_sys: coord_sys ||
|
|
109
|
+
coord_sys: coord_sys || coord_sys4055,
|
|
110
110
|
buffer_resolution: opts[:buffer_resolution],
|
|
111
111
|
wkt_parser: opts[:wkt_parser],
|
|
112
112
|
wkb_parser: opts[:wkb_parser],
|
|
@@ -189,7 +189,7 @@ module RGeo
|
|
|
189
189
|
def simple_mercator_factory(opts = {})
|
|
190
190
|
factory = Geographic::Factory.new(
|
|
191
191
|
"Projected",
|
|
192
|
-
coord_sys:
|
|
192
|
+
coord_sys: coord_sys4326,
|
|
193
193
|
srid: 4326,
|
|
194
194
|
wkt_parser: opts[:wkt_parser],
|
|
195
195
|
wkb_parser: opts[:wkb_parser],
|
|
@@ -323,7 +323,7 @@ module RGeo
|
|
|
323
323
|
# Now we should have all the coordinate system info.
|
|
324
324
|
factory = Geographic::Factory.new(
|
|
325
325
|
"Projected",
|
|
326
|
-
coord_sys
|
|
326
|
+
coord_sys:,
|
|
327
327
|
srid: srid.to_i,
|
|
328
328
|
has_z_coordinate: projection_factory.property(:has_z_coordinate),
|
|
329
329
|
has_m_coordinate: projection_factory.property(:has_m_coordinate),
|
|
@@ -355,7 +355,7 @@ module RGeo
|
|
|
355
355
|
# Now we should have all the coordinate system info.
|
|
356
356
|
factory = Geographic::Factory.new(
|
|
357
357
|
"Projected",
|
|
358
|
-
coord_sys
|
|
358
|
+
coord_sys:,
|
|
359
359
|
srid: srid.to_i,
|
|
360
360
|
has_z_coordinate: opts[:has_z_coordinate],
|
|
361
361
|
has_m_coordinate: opts[:has_m_coordinate],
|
|
@@ -379,16 +379,16 @@ module RGeo
|
|
|
379
379
|
|
|
380
380
|
private
|
|
381
381
|
|
|
382
|
-
def
|
|
383
|
-
return @
|
|
382
|
+
def coord_sys4055
|
|
383
|
+
return @coord_sys4055 if defined?(@coord_sys4055)
|
|
384
384
|
|
|
385
|
-
@
|
|
385
|
+
@coord_sys4055 = CoordSys::CONFIG.default_coord_sys_class.create(4055)
|
|
386
386
|
end
|
|
387
387
|
|
|
388
|
-
def
|
|
389
|
-
return @
|
|
388
|
+
def coord_sys4326
|
|
389
|
+
return @coord_sys4326 if defined?(@coord_sys4326)
|
|
390
390
|
|
|
391
|
-
@
|
|
391
|
+
@coord_sys4326 = CoordSys::CONFIG.default_coord_sys_class.create(4326)
|
|
392
392
|
end
|
|
393
393
|
end
|
|
394
394
|
end
|
|
@@ -66,7 +66,7 @@ module RGeo
|
|
|
66
66
|
def eql?(other) # :nodoc:
|
|
67
67
|
return false unless other.is_a?(ProjectedWindow)
|
|
68
68
|
@factory == other.factory && @x_min == other.x_min && @x_max == other.x_max &&
|
|
69
|
-
@y_min
|
|
69
|
+
@y_min == other.y_min && @y_max == other.y_max
|
|
70
70
|
end
|
|
71
71
|
alias == eql?
|
|
72
72
|
|
|
@@ -14,7 +14,7 @@ module RGeo
|
|
|
14
14
|
def initialize(geography_factory, opts = {})
|
|
15
15
|
@geography_factory = geography_factory
|
|
16
16
|
@projection_factory = Cartesian.preferred_factory(srid: 3857,
|
|
17
|
-
coord_sys: SimpleMercatorProjector.
|
|
17
|
+
coord_sys: SimpleMercatorProjector._coordsys3857,
|
|
18
18
|
buffer_resolution: opts[:buffer_resolution],
|
|
19
19
|
has_z_coordinate: opts[:has_z_coordinate],
|
|
20
20
|
has_m_coordinate: opts[:has_m_coordinate])
|
|
@@ -104,10 +104,10 @@ module RGeo
|
|
|
104
104
|
)
|
|
105
105
|
end
|
|
106
106
|
|
|
107
|
-
def self.
|
|
108
|
-
return @
|
|
107
|
+
def self._coordsys3857 # :nodoc:
|
|
108
|
+
return @coordsys3857 if defined?(@coordsys3857)
|
|
109
109
|
|
|
110
|
-
@
|
|
110
|
+
@coordsys3857 = CoordSys::CONFIG.default_coord_sys_class.create(3857)
|
|
111
111
|
end
|
|
112
112
|
end
|
|
113
113
|
end
|
|
@@ -56,6 +56,7 @@ module RGeo
|
|
|
56
56
|
@wkt_writer = nil
|
|
57
57
|
else
|
|
58
58
|
@wkt_writer = ::Geos::WktWriter.new
|
|
59
|
+
@wkt_writer.output_dimensions = 2
|
|
59
60
|
@wkt_writer.trim = true
|
|
60
61
|
@wkt_generator = nil
|
|
61
62
|
end
|
|
@@ -66,6 +67,7 @@ module RGeo
|
|
|
66
67
|
@wkb_writer = nil
|
|
67
68
|
else
|
|
68
69
|
@wkb_writer = ::Geos::WkbWriter.new
|
|
70
|
+
@wkb_writer.output_dimensions = 2
|
|
69
71
|
@wkb_generator = nil
|
|
70
72
|
end
|
|
71
73
|
|
|
@@ -150,7 +152,7 @@ module RGeo
|
|
|
150
152
|
wkt_parser: data["wktp"] && symbolize_hash(data["wktp"]),
|
|
151
153
|
wkb_parser: data["wkbp"] && symbolize_hash(data["wkbp"]),
|
|
152
154
|
auto_prepare: (data["apre"] ? :simple : :disabled),
|
|
153
|
-
coord_sys:
|
|
155
|
+
coord_sys:
|
|
154
156
|
)
|
|
155
157
|
end
|
|
156
158
|
|
|
@@ -183,7 +185,7 @@ module RGeo
|
|
|
183
185
|
wkt_parser: coder["wkt_parser"] && symbolize_hash(coder["wkt_parser"]),
|
|
184
186
|
wkb_parser: coder["wkb_parser"] && symbolize_hash(coder["wkb_parser"]),
|
|
185
187
|
auto_prepare: coder["auto_prepare"] == "disabled" ? :disabled : :simple,
|
|
186
|
-
coord_sys:
|
|
188
|
+
coord_sys:
|
|
187
189
|
)
|
|
188
190
|
end
|
|
189
191
|
|
|
@@ -295,10 +297,8 @@ module RGeo
|
|
|
295
297
|
inner_rings = inner_rings.to_a unless inner_rings.is_a?(Array)
|
|
296
298
|
return unless RGeo::Feature::LineString.check_type(outer_ring)
|
|
297
299
|
outer_ring = create_fg_linear_ring(outer_ring.points)
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
create_fg_linear_ring(r.points)
|
|
301
|
-
end
|
|
300
|
+
return unless inner_rings.all? { |r| RGeo::Feature::LineString.check_type(r) }
|
|
301
|
+
inner_rings = inner_rings.map { |r| create_fg_linear_ring(r.points) }
|
|
302
302
|
inner_rings.compact!
|
|
303
303
|
fg_geom = ::Geos::Utils.create_polygon(outer_ring, *inner_rings)
|
|
304
304
|
FFIPolygonImpl.new(self, fg_geom, nil)
|
|
@@ -327,16 +327,16 @@ module RGeo
|
|
|
327
327
|
def multi_point(elems)
|
|
328
328
|
elems = elems.to_a unless elems.is_a?(Array)
|
|
329
329
|
elems = elems.map do |elem|
|
|
330
|
-
|
|
330
|
+
RGeo::Feature.cast(
|
|
331
331
|
elem,
|
|
332
332
|
self,
|
|
333
333
|
RGeo::Feature::Point,
|
|
334
334
|
:force_new,
|
|
335
335
|
:keep_subtype
|
|
336
336
|
)
|
|
337
|
-
return unless elem
|
|
338
|
-
elem.detach_fg_geom
|
|
339
337
|
end
|
|
338
|
+
return unless elems.all?
|
|
339
|
+
elems = elems.map(&:detach_fg_geom)
|
|
340
340
|
klasses = Array.new(elems.size, FFIPointImpl)
|
|
341
341
|
fg_geom = ::Geos::Utils.create_collection(::Geos::GeomTypes::GEOS_MULTIPOINT, elems)
|
|
342
342
|
FFIMultiPointImpl.new(self, fg_geom, klasses)
|
|
@@ -449,6 +449,7 @@ module RGeo
|
|
|
449
449
|
def write_for_marshal(geom)
|
|
450
450
|
if Utils.ffi_supports_set_output_dimension || !@_has_3d
|
|
451
451
|
wkb_writer = ::Geos::WkbWriter.new
|
|
452
|
+
wkb_writer.output_dimensions = 2
|
|
452
453
|
wkb_writer.output_dimensions = 3 if @_has_3d
|
|
453
454
|
wkb_writer.write(geom.fg_geom)
|
|
454
455
|
else
|
|
@@ -463,6 +464,7 @@ module RGeo
|
|
|
463
464
|
def write_for_psych(geom)
|
|
464
465
|
if Utils.ffi_supports_set_output_dimension || !@_has_3d
|
|
465
466
|
wkt_writer = ::Geos::WktWriter.new
|
|
467
|
+
wkt_writer.output_dimensions = 2
|
|
466
468
|
wkt_writer.trim = true
|
|
467
469
|
wkt_writer.output_dimensions = 3 if @_has_3d
|
|
468
470
|
wkt_writer.write(geom.fg_geom)
|
|
@@ -485,8 +487,8 @@ module RGeo
|
|
|
485
487
|
size += 1
|
|
486
488
|
end
|
|
487
489
|
cs = ::Geos::CoordinateSequence.new(size, 3)
|
|
490
|
+
return unless points.all? { |p| RGeo::Feature::Point.check_type(p) }
|
|
488
491
|
points.each_with_index do |p, i|
|
|
489
|
-
return unless RGeo::Feature::Point.check_type(p)
|
|
490
492
|
cs.set_x(i, p.x)
|
|
491
493
|
cs.set_y(i, p.y)
|
|
492
494
|
if @has_z
|
|
@@ -168,43 +168,43 @@ module RGeo
|
|
|
168
168
|
|
|
169
169
|
def disjoint?(rhs)
|
|
170
170
|
fg = factory.convert_to_fg_geometry(rhs)
|
|
171
|
-
prep = request_prepared if Utils.
|
|
171
|
+
prep = request_prepared if Utils.ffi_supports_prepared_level2
|
|
172
172
|
prep ? prep.disjoint?(fg) : @fg_geom.disjoint?(fg)
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
def intersects?(rhs)
|
|
176
176
|
fg = factory.convert_to_fg_geometry(rhs)
|
|
177
|
-
prep = request_prepared if Utils.
|
|
177
|
+
prep = request_prepared if Utils.ffi_supports_prepared_level1
|
|
178
178
|
prep ? prep.intersects?(fg) : @fg_geom.intersects?(fg)
|
|
179
179
|
end
|
|
180
180
|
|
|
181
181
|
def touches?(rhs)
|
|
182
182
|
fg = factory.convert_to_fg_geometry(rhs)
|
|
183
|
-
prep = request_prepared if Utils.
|
|
183
|
+
prep = request_prepared if Utils.ffi_supports_prepared_level2
|
|
184
184
|
prep ? prep.touches?(fg) : @fg_geom.touches?(fg)
|
|
185
185
|
end
|
|
186
186
|
|
|
187
187
|
def crosses?(rhs)
|
|
188
188
|
fg = factory.convert_to_fg_geometry(rhs)
|
|
189
|
-
prep = request_prepared if Utils.
|
|
189
|
+
prep = request_prepared if Utils.ffi_supports_prepared_level2
|
|
190
190
|
prep ? prep.crosses?(fg) : @fg_geom.crosses?(fg)
|
|
191
191
|
end
|
|
192
192
|
|
|
193
193
|
def within?(rhs)
|
|
194
194
|
fg = factory.convert_to_fg_geometry(rhs)
|
|
195
|
-
prep = request_prepared if Utils.
|
|
195
|
+
prep = request_prepared if Utils.ffi_supports_prepared_level2
|
|
196
196
|
prep ? prep.within?(fg) : @fg_geom.within?(fg)
|
|
197
197
|
end
|
|
198
198
|
|
|
199
199
|
def contains?(rhs)
|
|
200
200
|
fg = factory.convert_to_fg_geometry(rhs)
|
|
201
|
-
prep = request_prepared if Utils.
|
|
201
|
+
prep = request_prepared if Utils.ffi_supports_prepared_level1
|
|
202
202
|
prep ? prep.contains?(fg) : @fg_geom.contains?(fg)
|
|
203
203
|
end
|
|
204
204
|
|
|
205
205
|
def overlaps?(rhs)
|
|
206
206
|
fg = factory.convert_to_fg_geometry(rhs)
|
|
207
|
-
prep = request_prepared if Utils.
|
|
207
|
+
prep = request_prepared if Utils.ffi_supports_prepared_level2
|
|
208
208
|
prep ? prep.overlaps?(fg) : @fg_geom.overlaps?(fg)
|
|
209
209
|
end
|
|
210
210
|
|
|
@@ -212,7 +212,6 @@ module RGeo
|
|
|
212
212
|
fg = factory.convert_to_fg_geometry(rhs)
|
|
213
213
|
@fg_geom.relate_pattern(fg, pattern)
|
|
214
214
|
end
|
|
215
|
-
alias relate relate? # DEPRECATED
|
|
216
215
|
|
|
217
216
|
def distance(rhs)
|
|
218
217
|
fg = factory.convert_to_fg_geometry(rhs)
|
data/lib/rgeo/geos/utils.rb
CHANGED
|
@@ -55,11 +55,11 @@ module RGeo
|
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
def
|
|
58
|
+
def ffi_supports_prepared_level1
|
|
59
59
|
FFI_SUPPORTED && ::Geos::FFIGeos.respond_to?(:GEOSPreparedContains_r)
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
def
|
|
62
|
+
def ffi_supports_prepared_level2
|
|
63
63
|
FFI_SUPPORTED && ::Geos::FFIGeos.respond_to?(:GEOSPreparedDisjoint_r)
|
|
64
64
|
end
|
|
65
65
|
|
data/lib/rgeo/geos/zm_factory.rb
CHANGED
|
@@ -47,7 +47,7 @@ module RGeo
|
|
|
47
47
|
buffer_resolution: opts[:buffer_resolution], auto_prepare: opts[:auto_prepare],
|
|
48
48
|
wkt_generator: opts[:wkt_generator], wkt_parser: opts[:wkt_parser],
|
|
49
49
|
wkb_generator: opts[:wkb_generator], wkb_parser: opts[:wkb_parser],
|
|
50
|
-
srid: srid.to_i, coord_sys:
|
|
50
|
+
srid: srid.to_i, coord_sys:
|
|
51
51
|
}
|
|
52
52
|
native_interface = opts[:native_interface] || Geos.preferred_native_interface
|
|
53
53
|
if native_interface == :ffi
|
|
@@ -125,7 +125,7 @@ module RGeo
|
|
|
125
125
|
wkt_parser: symbolize_hash(data["wktp"]),
|
|
126
126
|
wkb_parser: symbolize_hash(data["wkbp"]),
|
|
127
127
|
auto_prepare: (data["apre"] ? :simple : :disabled),
|
|
128
|
-
coord_sys:
|
|
128
|
+
coord_sys:
|
|
129
129
|
)
|
|
130
130
|
end
|
|
131
131
|
|
|
@@ -161,7 +161,7 @@ module RGeo
|
|
|
161
161
|
wkt_parser: symbolize_hash(coder["wkt_parser"]),
|
|
162
162
|
wkb_parser: symbolize_hash(coder["wkb_parser"]),
|
|
163
163
|
auto_prepare: coder["auto_prepare"] == "disabled" ? :disabled : :simple,
|
|
164
|
-
coord_sys:
|
|
164
|
+
coord_sys:
|
|
165
165
|
)
|
|
166
166
|
end
|
|
167
167
|
|
data/lib/rgeo/geos.rb
CHANGED
|
@@ -26,7 +26,13 @@ module RGeo
|
|
|
26
26
|
begin
|
|
27
27
|
require_relative "geos/geos_c_impl"
|
|
28
28
|
rescue LoadError
|
|
29
|
-
#
|
|
29
|
+
# fall back to a system-wide search if the c-extension is stored in different location
|
|
30
|
+
# important for systems such as Amazon Linux
|
|
31
|
+
begin
|
|
32
|
+
require "geos/geos_c_impl"
|
|
33
|
+
rescue LoadError
|
|
34
|
+
# continue
|
|
35
|
+
end
|
|
30
36
|
end
|
|
31
37
|
CAPI_SUPPORTED = RGeo::Geos.const_defined?(:CAPIGeometryMethods)
|
|
32
38
|
if CAPI_SUPPORTED
|
data/lib/rgeo/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rgeo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Azuma
|
|
8
8
|
- Tee Parham
|
|
9
|
-
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2026-01-20 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: ffi-geos
|
|
@@ -39,6 +38,20 @@ dependencies:
|
|
|
39
38
|
- - "~>"
|
|
40
39
|
- !ruby/object:Gem::Version
|
|
41
40
|
version: '5.11'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: ostruct
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
42
55
|
- !ruby/object:Gem::Dependency
|
|
43
56
|
name: rake
|
|
44
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -87,14 +100,14 @@ dependencies:
|
|
|
87
100
|
requirements:
|
|
88
101
|
- - "~>"
|
|
89
102
|
- !ruby/object:Gem::Version
|
|
90
|
-
version: '
|
|
103
|
+
version: '3.0'
|
|
91
104
|
type: :development
|
|
92
105
|
prerelease: false
|
|
93
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
94
107
|
requirements:
|
|
95
108
|
- - "~>"
|
|
96
109
|
- !ruby/object:Gem::Version
|
|
97
|
-
version: '
|
|
110
|
+
version: '3.0'
|
|
98
111
|
- !ruby/object:Gem::Dependency
|
|
99
112
|
name: yard
|
|
100
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -229,8 +242,8 @@ homepage: https://github.com/rgeo/rgeo
|
|
|
229
242
|
licenses:
|
|
230
243
|
- BSD-3-Clause
|
|
231
244
|
metadata:
|
|
245
|
+
funding_uri: https://opencollective.com/rgeo
|
|
232
246
|
rubygems_mfa_required: 'true'
|
|
233
|
-
post_install_message:
|
|
234
247
|
rdoc_options: []
|
|
235
248
|
require_paths:
|
|
236
249
|
- lib
|
|
@@ -238,15 +251,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
238
251
|
requirements:
|
|
239
252
|
- - ">="
|
|
240
253
|
- !ruby/object:Gem::Version
|
|
241
|
-
version:
|
|
254
|
+
version: 3.1.4
|
|
242
255
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
243
256
|
requirements:
|
|
244
257
|
- - ">="
|
|
245
258
|
- !ruby/object:Gem::Version
|
|
246
259
|
version: '0'
|
|
247
260
|
requirements: []
|
|
248
|
-
rubygems_version: 3.
|
|
249
|
-
signing_key:
|
|
261
|
+
rubygems_version: 3.6.4
|
|
250
262
|
specification_version: 4
|
|
251
263
|
summary: RGeo is a geospatial data library for Ruby.
|
|
252
264
|
test_files: []
|