rgeo 3.0.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 792e1494e9ef340bb740e8675b2ce67e4d02fa6c4333ad93c523e348e5153812
4
- data.tar.gz: a4051c1728401caca45807c9e786a5e5130761c95a95ff6bdb60265130aa2049
3
+ metadata.gz: 986cc6e02e2625161460dee926ef5237df6bd9959323190ab25fff10de68d76f
4
+ data.tar.gz: 10611b18bd565c006ff06bf12b152a07fed95968e46730fa652d39d2b4a6be5c
5
5
  SHA512:
6
- metadata.gz: 3a6ee8000fd92f7bef89915d9d7e11aea0fb413248778d0f5e5218516d98cc6d16afba66d92c670c9f0539d37a6c7e934a5fcc3ad839626d7299b7c5ae8ffc57
7
- data.tar.gz: 580f0a56261c8ab5698e14a78e7f61bcdb8fa362160db4ed1662dbb792d1d8ec7272a1e3387568b00c6b8403547aae128363ad230cf622ec5b5908a0e17b8d6f
6
+ metadata.gz: 85874f17611f284b7af91fce4bc383f5361f1880cdcb3cb2b40b4efd3c7c8146925cfac415819d4e1195dd92b9887fa0406fa3df786e7d651e5e55e165f231de
7
+ data.tar.gz: 7abe786c87c3138e94c665a2cd845d1f599e7238cdf505e25e68303ec1de575d5fd400393541d1c3e023fb57511f7ae8defeaceb60d4d08cecb013a04526035d
data/README.md CHANGED
@@ -36,7 +36,7 @@ Use the core **rgeo** gem to:
36
36
 
37
37
  RGeo works with the following Ruby implementations:
38
38
 
39
- * MRI Ruby 2.6.0 or later.
39
+ * MRI Ruby 3.1.4 or later.
40
40
  * Partial support for JRuby 9.0 or later. The FFI implementation of GEOS
41
41
  is available (ffi-geos gem required) but CAPI is not.
42
42
  * See earlier versions for support for older ruby versions.
@@ -46,6 +46,7 @@ if have_header("geos_c.h")
46
46
  have_func("GEOSUnaryUnion_r", "geos_c.h")
47
47
  have_func("GEOSCoordSeq_isCCW_r", "geos_c.h")
48
48
  have_func("GEOSDensify", "geos_c.h")
49
+ have_func("GEOSPolygonHullSimplify", "geos_c.h")
49
50
  have_func("rb_memhash", "ruby.h")
50
51
  have_func("rb_gc_mark_movable", "ruby.h")
51
52
  end
@@ -1010,7 +1010,7 @@ rgeo_geos_coordseqs_eql(const GEOSGeometry* geom1,
1010
1010
  result = Qnil;
1011
1011
  break;
1012
1012
  }
1013
- } // Iteration over coords
1013
+ } // Iteration over coords
1014
1014
  } else { // Lengths are different
1015
1015
  result = Qfalse;
1016
1016
  }
@@ -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
- (TYPE(object) == T_DATA && RTYPEDDATA(object)->typed_flag == 1 && \
109
- RTYPEDDATA(object)->type == data_type)
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) \
@@ -56,8 +56,7 @@ notice_handler(const char* fmt, ...)
56
56
  #endif
57
57
  }
58
58
 
59
- static void
60
- error_handler(const char* fmt, ...)
59
+ NORETURN(static void error_handler(const char* fmt, ...))
61
60
  {
62
61
  // See https://en.cppreference.com/w/c/io/vfprintf
63
62
  va_list args1;
@@ -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(1, 3);
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)) {
@@ -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
@@ -26,6 +26,9 @@
26
26
  #ifdef HAVE_GEOSDENSIFY
27
27
  #define RGEO_GEOS_SUPPORTS_DENSIFY
28
28
  #endif
29
+ #ifdef HAVE_GEOSPOLYGONHULLSIMPLIFY
30
+ #define RGEO_GEOS_SUPPORTS_POLYGON_HULL_SIMPLIFY
31
+ #endif
29
32
  #ifdef HAVE_RB_GC_MARK_MOVABLE
30
33
  #define mark rb_gc_mark_movable
31
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: 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: coord_sys
155
+ coord_sys:
156
156
  )
157
157
  end
158
158
 
@@ -821,8 +821,8 @@ module RGeo
821
821
  private
822
822
 
823
823
  def wkt_content(standard_brackets)
824
- array = [@ellipsoid.to_wkt(standard_brackets: standard_brackets)]
825
- array << @wgs84_parameters.to_wkt(standard_brackets: standard_brackets) if @wgs84_parameters
824
+ array = [@ellipsoid.to_wkt(standard_brackets:)]
825
+ array << @wgs84_parameters.to_wkt(standard_brackets:) if @wgs84_parameters
826
826
  array
827
827
  end
828
828
  end
@@ -855,8 +855,8 @@ module RGeo
855
855
 
856
856
  # Iterates over the parameters of the projection.
857
857
 
858
- def each_parameter(&block)
859
- @parameters.each(&block)
858
+ def each_parameter(&)
859
+ @parameters.each(&)
860
860
  end
861
861
 
862
862
  def wkt_typename
@@ -1028,7 +1028,7 @@ module RGeo
1028
1028
  private
1029
1029
 
1030
1030
  def wkt_content(standard_brackets)
1031
- [@head.to_wkt(standard_brackets: standard_brackets), @tail.to_wkt(standard_brackets: standard_brackets)]
1031
+ [@head.to_wkt(standard_brackets:), @tail.to_wkt(standard_brackets:)]
1032
1032
  end
1033
1033
  end
1034
1034
 
@@ -1092,9 +1092,9 @@ module RGeo
1092
1092
 
1093
1093
  def wkt_content(standard_brackets)
1094
1094
  [
1095
- @local_datum.to_wkt(standard_brackets: standard_brackets),
1096
- @unit.to_wkt(standard_brackets: standard_brackets)
1097
- ] + @axes.map { |ax| ax.to_wkt(standard_brackets: standard_brackets) }
1095
+ @local_datum.to_wkt(standard_brackets:),
1096
+ @unit.to_wkt(standard_brackets:)
1097
+ ] + @axes.map { |ax| ax.to_wkt(standard_brackets:) }
1098
1098
  end
1099
1099
  end
1100
1100
 
@@ -1165,13 +1165,13 @@ module RGeo
1165
1165
 
1166
1166
  def wkt_content(standard_brackets)
1167
1167
  arr = [
1168
- @horizontal_datum.to_wkt(standard_brackets: standard_brackets),
1169
- @prime_meridian.to_wkt(standard_brackets: standard_brackets),
1170
- @linear_unit.to_wkt(standard_brackets: standard_brackets)
1168
+ @horizontal_datum.to_wkt(standard_brackets:),
1169
+ @prime_meridian.to_wkt(standard_brackets:),
1170
+ @linear_unit.to_wkt(standard_brackets:)
1171
1171
  ]
1172
- arr << @axis0.to_wkt(standard_brackets: standard_brackets) if @axis0
1173
- arr << @axis1.to_wkt(standard_brackets: standard_brackets) if @axis1
1174
- arr << @axis2.to_wkt(standard_brackets: standard_brackets) if @axis2
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
1175
1175
  arr
1176
1176
  end
1177
1177
  end
@@ -1226,10 +1226,10 @@ module RGeo
1226
1226
 
1227
1227
  def wkt_content(standard_brackets)
1228
1228
  arr = [
1229
- @vertical_datum.to_wkt(standard_brackets: standard_brackets),
1230
- @vertical_unit.to_wkt(standard_brackets: standard_brackets)
1229
+ @vertical_datum.to_wkt(standard_brackets:),
1230
+ @vertical_unit.to_wkt(standard_brackets:)
1231
1231
  ]
1232
- arr << @axis.to_wkt(standard_brackets: standard_brackets) if @axis
1232
+ arr << @axis.to_wkt(standard_brackets:) if @axis
1233
1233
  arr
1234
1234
  end
1235
1235
  end
@@ -1328,12 +1328,12 @@ module RGeo
1328
1328
 
1329
1329
  def wkt_content(standard_brackets)
1330
1330
  arr = [
1331
- @horizontal_datum.to_wkt(standard_brackets: standard_brackets),
1332
- @prime_meridian.to_wkt(standard_brackets: standard_brackets),
1333
- @angular_unit.to_wkt(standard_brackets: standard_brackets)
1331
+ @horizontal_datum.to_wkt(standard_brackets:),
1332
+ @prime_meridian.to_wkt(standard_brackets:),
1333
+ @angular_unit.to_wkt(standard_brackets:)
1334
1334
  ]
1335
- arr << @axis0.to_wkt(standard_brackets: standard_brackets) if @axis0
1336
- arr << @axis1.to_wkt(standard_brackets: standard_brackets) if @axis1
1335
+ arr << @axis0.to_wkt(standard_brackets:) if @axis0
1336
+ arr << @axis1.to_wkt(standard_brackets:) if @axis1
1337
1337
  arr
1338
1338
  end
1339
1339
  end
@@ -1397,13 +1397,13 @@ module RGeo
1397
1397
 
1398
1398
  def wkt_content(standard_brackets)
1399
1399
  arr = [
1400
- @geographic_coordinate_system.to_wkt(standard_brackets: standard_brackets),
1401
- @projection.to_wkt(standard_brackets: standard_brackets)
1400
+ @geographic_coordinate_system.to_wkt(standard_brackets:),
1401
+ @projection.to_wkt(standard_brackets:)
1402
1402
  ]
1403
- @projection.each_parameter { |param| arr << param.to_wkt(standard_brackets: standard_brackets) }
1404
- arr << @linear_unit.to_wkt(standard_brackets: standard_brackets)
1405
- arr << @axis0.to_wkt(standard_brackets: standard_brackets) if @axis0
1406
- arr << @axis1.to_wkt(standard_brackets: standard_brackets) if @axis1
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
1407
1407
  arr
1408
1408
  end
1409
1409
  end
@@ -1550,8 +1550,8 @@ module RGeo
1550
1550
  private
1551
1551
 
1552
1552
  def wkt_content(standard_brackets)
1553
- source_cs_wkt = "SOURCECS[#{source_cs.to_wkt(standard_brackets: standard_brackets)}]"
1554
- target_cs_wkt = "TARGETCS[#{target_cs.to_wkt(standard_brackets: standard_brackets)}]"
1553
+ source_cs_wkt = "SOURCECS[#{source_cs.to_wkt(standard_brackets:)}]"
1554
+ target_cs_wkt = "TARGETCS[#{target_cs.to_wkt(standard_brackets:)}]"
1555
1555
 
1556
1556
  [source_cs_wkt, target_cs_wkt]
1557
1557
  end
@@ -94,7 +94,7 @@ module RGeo
94
94
  # Note that all GeometryCollection implementations must also
95
95
  # include the Enumerable mixin.
96
96
 
97
- def each(&_block)
97
+ def each(&)
98
98
  raise Error::UnsupportedOperation, "Method #{self.class}#each not defined."
99
99
  end
100
100
 
@@ -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(&block)
82
- @subtypes&.each(&block)
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:
@@ -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: 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: coord_sys
192
+ coord_sys:
193
193
  )
194
194
  proj_klass = coder["projectorclass"]
195
195
  proj_factory = coder["projection_factory"]
@@ -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: 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: 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],
@@ -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 = other.y_min && @y_max = other.y_max
69
+ @y_min == other.y_min && @y_max == other.y_max
70
70
  end
71
71
  alias == eql?
72
72
 
@@ -152,7 +152,7 @@ module RGeo
152
152
  wkt_parser: data["wktp"] && symbolize_hash(data["wktp"]),
153
153
  wkb_parser: data["wkbp"] && symbolize_hash(data["wkbp"]),
154
154
  auto_prepare: (data["apre"] ? :simple : :disabled),
155
- coord_sys: coord_sys
155
+ coord_sys:
156
156
  )
157
157
  end
158
158
 
@@ -185,7 +185,7 @@ module RGeo
185
185
  wkt_parser: coder["wkt_parser"] && symbolize_hash(coder["wkt_parser"]),
186
186
  wkb_parser: coder["wkb_parser"] && symbolize_hash(coder["wkb_parser"]),
187
187
  auto_prepare: coder["auto_prepare"] == "disabled" ? :disabled : :simple,
188
- coord_sys: coord_sys
188
+ coord_sys:
189
189
  )
190
190
  end
191
191
 
@@ -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: 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: 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: 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
- # continue
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
@@ -35,8 +35,8 @@ module RGeo
35
35
  @elements[idx]
36
36
  end
37
37
 
38
- def each(&block)
39
- @elements.each(&block)
38
+ def each(&)
39
+ @elements.each(&)
40
40
  end
41
41
 
42
42
  def geometries
@@ -27,7 +27,7 @@ module RGeo
27
27
  # Create a coord sys based on the SRID if one was not given
28
28
  coord_sys = coord_sys_class.create(srid) if coord_sys.nil? && srid != 0
29
29
 
30
- { coord_sys: coord_sys, srid: srid }
30
+ { coord_sys:, srid: }
31
31
  end
32
32
 
33
33
  private
data/lib/rgeo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RGeo
4
- VERSION = "3.0.1"
4
+ VERSION = "3.1.0"
5
5
  end
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.0.1
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: 2023-11-15 00:00:00.000000000 Z
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: '1.0'
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: '1.0'
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: 2.7.7
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.2.33
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: []