rgeo 2.3.1 → 3.0.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 +23 -14
 - data/ext/geos_c_impl/analysis.c +30 -25
 - data/ext/geos_c_impl/analysis.h +8 -7
 - data/ext/geos_c_impl/coordinates.c +27 -21
 - data/ext/geos_c_impl/coordinates.h +5 -2
 - data/ext/geos_c_impl/errors.c +19 -10
 - data/ext/geos_c_impl/errors.h +11 -4
 - data/ext/geos_c_impl/extconf.rb +42 -28
 - data/ext/geos_c_impl/factory.c +540 -451
 - data/ext/geos_c_impl/factory.h +105 -95
 - data/ext/geos_c_impl/geometry.c +593 -387
 - data/ext/geos_c_impl/geometry.h +10 -5
 - data/ext/geos_c_impl/geometry_collection.c +306 -339
 - data/ext/geos_c_impl/geometry_collection.h +6 -20
 - data/ext/geos_c_impl/globals.c +169 -0
 - data/ext/geos_c_impl/globals.h +46 -0
 - data/ext/geos_c_impl/line_string.c +271 -231
 - data/ext/geos_c_impl/line_string.h +5 -8
 - data/ext/geos_c_impl/main.c +16 -16
 - data/ext/geos_c_impl/point.c +65 -67
 - data/ext/geos_c_impl/point.h +4 -7
 - data/ext/geos_c_impl/polygon.c +137 -135
 - data/ext/geos_c_impl/polygon.h +11 -11
 - data/ext/geos_c_impl/preface.h +16 -10
 - data/ext/geos_c_impl/ruby_more.c +67 -0
 - data/ext/geos_c_impl/ruby_more.h +25 -0
 - data/lib/rgeo/cartesian/analysis.rb +5 -3
 - data/lib/rgeo/cartesian/bounding_box.rb +74 -79
 - data/lib/rgeo/cartesian/calculations.rb +64 -33
 - data/lib/rgeo/cartesian/factory.rb +57 -102
 - data/lib/rgeo/cartesian/feature_classes.rb +68 -46
 - data/lib/rgeo/cartesian/feature_methods.rb +67 -25
 - data/lib/rgeo/cartesian/interface.rb +6 -41
 - data/lib/rgeo/cartesian/planar_graph.rb +373 -0
 - data/lib/rgeo/cartesian/sweepline_intersector.rb +147 -0
 - data/lib/rgeo/cartesian/valid_op.rb +69 -0
 - data/lib/rgeo/cartesian.rb +3 -0
 - data/lib/rgeo/coord_sys/cs/entities.rb +303 -99
 - data/lib/rgeo/coord_sys/cs/factories.rb +0 -2
 - data/lib/rgeo/coord_sys/cs/wkt_parser.rb +90 -42
 - data/lib/rgeo/coord_sys.rb +1 -20
 - data/lib/rgeo/error.rb +15 -0
 - data/lib/rgeo/feature/curve.rb +0 -11
 - data/lib/rgeo/feature/factory.rb +26 -36
 - data/lib/rgeo/feature/factory_generator.rb +6 -14
 - data/lib/rgeo/feature/geometry.rb +146 -66
 - data/lib/rgeo/feature/geometry_collection.rb +16 -9
 - data/lib/rgeo/feature/line_string.rb +4 -5
 - data/lib/rgeo/feature/linear_ring.rb +0 -1
 - data/lib/rgeo/feature/multi_curve.rb +0 -6
 - data/lib/rgeo/feature/multi_surface.rb +3 -4
 - data/lib/rgeo/feature/point.rb +4 -5
 - data/lib/rgeo/feature/polygon.rb +1 -2
 - data/lib/rgeo/feature/surface.rb +3 -4
 - data/lib/rgeo/feature/types.rb +69 -85
 - data/lib/rgeo/geographic/factory.rb +98 -125
 - data/lib/rgeo/geographic/interface.rb +69 -166
 - data/lib/rgeo/geographic/projected_feature_classes.rb +21 -9
 - data/lib/rgeo/geographic/projected_feature_methods.rb +67 -42
 - data/lib/rgeo/geographic/projected_window.rb +36 -22
 - data/lib/rgeo/geographic/{proj4_projector.rb → projector.rb} +3 -5
 - data/lib/rgeo/geographic/simple_mercator_projector.rb +26 -25
 - data/lib/rgeo/geographic/spherical_feature_classes.rb +29 -9
 - data/lib/rgeo/geographic/spherical_feature_methods.rb +86 -9
 - data/lib/rgeo/geographic/spherical_math.rb +17 -20
 - data/lib/rgeo/geographic.rb +1 -1
 - data/lib/rgeo/geos/capi_factory.rb +87 -158
 - data/lib/rgeo/geos/capi_feature_classes.rb +50 -36
 - data/lib/rgeo/geos/ffi_factory.rb +105 -173
 - data/lib/rgeo/geos/ffi_feature_classes.rb +34 -10
 - data/lib/rgeo/geos/ffi_feature_methods.rb +105 -127
 - data/lib/rgeo/geos/interface.rb +20 -59
 - data/lib/rgeo/geos/utils.rb +5 -5
 - data/lib/rgeo/geos/zm_factory.rb +53 -95
 - data/lib/rgeo/geos/zm_feature_methods.rb +30 -33
 - data/lib/rgeo/geos.rb +8 -8
 - data/lib/rgeo/impl_helper/basic_geometry_collection_methods.rb +9 -22
 - data/lib/rgeo/impl_helper/basic_geometry_methods.rb +1 -2
 - data/lib/rgeo/impl_helper/basic_line_string_methods.rb +28 -56
 - data/lib/rgeo/impl_helper/basic_point_methods.rb +2 -14
 - data/lib/rgeo/impl_helper/basic_polygon_methods.rb +17 -26
 - data/lib/rgeo/impl_helper/utils.rb +21 -0
 - data/lib/rgeo/impl_helper/valid_op.rb +350 -0
 - data/lib/rgeo/impl_helper/validity_check.rb +139 -0
 - data/lib/rgeo/impl_helper.rb +1 -0
 - data/lib/rgeo/version.rb +1 -1
 - data/lib/rgeo/wkrep/wkb_generator.rb +73 -63
 - data/lib/rgeo/wkrep/wkb_parser.rb +33 -31
 - data/lib/rgeo/wkrep/wkt_generator.rb +52 -45
 - data/lib/rgeo/wkrep/wkt_parser.rb +48 -35
 - data/lib/rgeo.rb +1 -3
 - metadata +50 -13
 - data/lib/rgeo/coord_sys/srs_database/entry.rb +0 -107
 - data/lib/rgeo/coord_sys/srs_database/sr_org.rb +0 -64
 - data/lib/rgeo/coord_sys/srs_database/url_reader.rb +0 -65
 
| 
         @@ -78,7 +78,6 @@ module RGeo 
     | 
|
| 
       78 
78 
     | 
    
         
             
                # Therefore, if an implementation cannot provide a suitable test for
         
     | 
| 
       79 
79 
     | 
    
         
             
                # their equivalence types, they must degrade to use a stronger form
         
     | 
| 
       80 
80 
     | 
    
         
             
                # of equivalence.
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
81 
     | 
    
         
             
                module Geometry
         
     | 
| 
       83 
82 
     | 
    
         
             
                  extend Type
         
     | 
| 
       84 
83 
     | 
    
         | 
| 
         @@ -90,7 +89,7 @@ module RGeo 
     | 
|
| 
       90 
89 
     | 
    
         
             
                  # operations on them.)
         
     | 
| 
       91 
90 
     | 
    
         | 
| 
       92 
91 
     | 
    
         
             
                  def factory
         
     | 
| 
       93 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 92 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#factory not defined."
         
     | 
| 
       94 
93 
     | 
    
         
             
                  end
         
     | 
| 
       95 
94 
     | 
    
         | 
| 
       96 
95 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -105,7 +104,37 @@ module RGeo 
     | 
|
| 
       105 
104 
     | 
    
         
             
                  # point geometries, 1 for curves, and 2 for surfaces.
         
     | 
| 
       106 
105 
     | 
    
         | 
| 
       107 
106 
     | 
    
         
             
                  def dimension
         
     | 
| 
       108 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 107 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#dimension not defined."
         
     | 
| 
      
 108 
     | 
    
         
            +
                  end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                  # === SFS 1.2 Description
         
     | 
| 
      
 111 
     | 
    
         
            +
                  #
         
     | 
| 
      
 112 
     | 
    
         
            +
                  # The coordinate dimension is the dimension of direct positions (coordinate tuples) used in
         
     | 
| 
      
 113 
     | 
    
         
            +
                  # the definition of this geometric object
         
     | 
| 
      
 114 
     | 
    
         
            +
                  #
         
     | 
| 
      
 115 
     | 
    
         
            +
                  # === Notes
         
     | 
| 
      
 116 
     | 
    
         
            +
                  #
         
     | 
| 
      
 117 
     | 
    
         
            +
                  # Difference between this and dimension is that this is the dimension of the coordinate
         
     | 
| 
      
 118 
     | 
    
         
            +
                  # not the dimension of the geometry.
         
     | 
| 
      
 119 
     | 
    
         
            +
                  #
         
     | 
| 
      
 120 
     | 
    
         
            +
                  # @return [Integer]
         
     | 
| 
      
 121 
     | 
    
         
            +
                  def coordinate_dimension
         
     | 
| 
      
 122 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#coordinate_dimension not defined."
         
     | 
| 
      
 123 
     | 
    
         
            +
                  end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                  # === SFS 1.2 Description
         
     | 
| 
      
 126 
     | 
    
         
            +
                  #
         
     | 
| 
      
 127 
     | 
    
         
            +
                  # The spatial dimension is the dimension of the spatial portion of the direct positions
         
     | 
| 
      
 128 
     | 
    
         
            +
                  # (coordinate tuples) used in the definition of this geometric object. If the direct positions
         
     | 
| 
      
 129 
     | 
    
         
            +
                  # do not carry a measure coordinate, this will be equal to the coordinate dimension.
         
     | 
| 
      
 130 
     | 
    
         
            +
                  #
         
     | 
| 
      
 131 
     | 
    
         
            +
                  # === Notes
         
     | 
| 
      
 132 
     | 
    
         
            +
                  #
         
     | 
| 
      
 133 
     | 
    
         
            +
                  # Similar to coordinate_dimension except it will ignore the M component always.
         
     | 
| 
      
 134 
     | 
    
         
            +
                  #
         
     | 
| 
      
 135 
     | 
    
         
            +
                  # @return [Integer]
         
     | 
| 
      
 136 
     | 
    
         
            +
                  def spatial_dimension
         
     | 
| 
      
 137 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#spatial_dimension not defined."
         
     | 
| 
       109 
138 
     | 
    
         
             
                  end
         
     | 
| 
       110 
139 
     | 
    
         | 
| 
       111 
140 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -122,7 +151,7 @@ module RGeo 
     | 
|
| 
       122 
151 
     | 
    
         
             
                  # call the +type_name+ method of the returned module.
         
     | 
| 
       123 
152 
     | 
    
         | 
| 
       124 
153 
     | 
    
         
             
                  def geometry_type
         
     | 
| 
       125 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 154 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#geometry_type not defined."
         
     | 
| 
       126 
155 
     | 
    
         
             
                  end
         
     | 
| 
       127 
156 
     | 
    
         | 
| 
       128 
157 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -137,7 +166,7 @@ module RGeo 
     | 
|
| 
       137 
166 
     | 
    
         
             
                  # stored in either the same or some other datastore.
         
     | 
| 
       138 
167 
     | 
    
         | 
| 
       139 
168 
     | 
    
         
             
                  def srid
         
     | 
| 
       140 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 169 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#srid not defined."
         
     | 
| 
       141 
170 
     | 
    
         
             
                  end
         
     | 
| 
       142 
171 
     | 
    
         | 
| 
       143 
172 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -151,7 +180,7 @@ module RGeo 
     | 
|
| 
       151 
180 
     | 
    
         
             
                  # Returns an object that supports the Geometry interface.
         
     | 
| 
       152 
181 
     | 
    
         | 
| 
       153 
182 
     | 
    
         
             
                  def envelope
         
     | 
| 
       154 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 183 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#envelope not defined."
         
     | 
| 
       155 
184 
     | 
    
         
             
                  end
         
     | 
| 
       156 
185 
     | 
    
         | 
| 
       157 
186 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -164,7 +193,7 @@ module RGeo 
     | 
|
| 
       164 
193 
     | 
    
         
             
                  # Returns an ASCII string.
         
     | 
| 
       165 
194 
     | 
    
         | 
| 
       166 
195 
     | 
    
         
             
                  def as_text
         
     | 
| 
       167 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 196 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#as_text not defined."
         
     | 
| 
       168 
197 
     | 
    
         
             
                  end
         
     | 
| 
       169 
198 
     | 
    
         | 
| 
       170 
199 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -177,7 +206,7 @@ module RGeo 
     | 
|
| 
       177 
206 
     | 
    
         
             
                  # Returns a binary string.
         
     | 
| 
       178 
207 
     | 
    
         | 
| 
       179 
208 
     | 
    
         
             
                  def as_binary
         
     | 
| 
       180 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 209 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#as_binary not defined."
         
     | 
| 
       181 
210 
     | 
    
         
             
                  end
         
     | 
| 
       182 
211 
     | 
    
         | 
| 
       183 
212 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -192,12 +221,7 @@ module RGeo 
     | 
|
| 
       192 
221 
     | 
    
         
             
                  # specification, which stipulates an integer return value.
         
     | 
| 
       193 
222 
     | 
    
         | 
| 
       194 
223 
     | 
    
         
             
                  def empty?
         
     | 
| 
       195 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
       196 
     | 
    
         
            -
                  end
         
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
     | 
    
         
            -
                  def is_empty?
         
     | 
| 
       199 
     | 
    
         
            -
                    warn "The is_empty? method is deprecated, please use the empty? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
         
     | 
| 
       200 
     | 
    
         
            -
                    empty?
         
     | 
| 
      
 224 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#empty? not defined."
         
     | 
| 
       201 
225 
     | 
    
         
             
                  end
         
     | 
| 
       202 
226 
     | 
    
         | 
| 
       203 
227 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -214,12 +238,29 @@ module RGeo 
     | 
|
| 
       214 
238 
     | 
    
         
             
                  # specification, which stipulates an integer return value.
         
     | 
| 
       215 
239 
     | 
    
         | 
| 
       216 
240 
     | 
    
         
             
                  def simple?
         
     | 
| 
       217 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 241 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#simple? not defined."
         
     | 
| 
       218 
242 
     | 
    
         
             
                  end
         
     | 
| 
       219 
243 
     | 
    
         | 
| 
       220 
     | 
    
         
            -
                   
     | 
| 
       221 
     | 
    
         
            -
             
     | 
| 
       222 
     | 
    
         
            -
             
     | 
| 
      
 244 
     | 
    
         
            +
                  # === SFS 1.2 Description
         
     | 
| 
      
 245 
     | 
    
         
            +
                  #
         
     | 
| 
      
 246 
     | 
    
         
            +
                  # Returns 1 (TRUE) if this geometric object has z coordinate values.
         
     | 
| 
      
 247 
     | 
    
         
            +
                  #
         
     | 
| 
      
 248 
     | 
    
         
            +
                  # === Notes
         
     | 
| 
      
 249 
     | 
    
         
            +
                  #
         
     | 
| 
      
 250 
     | 
    
         
            +
                  # @return [Boolean]
         
     | 
| 
      
 251 
     | 
    
         
            +
                  def is_3d?
         
     | 
| 
      
 252 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#is_3d? not defined."
         
     | 
| 
      
 253 
     | 
    
         
            +
                  end
         
     | 
| 
      
 254 
     | 
    
         
            +
             
     | 
| 
      
 255 
     | 
    
         
            +
                  # === SFS 1.2 Description
         
     | 
| 
      
 256 
     | 
    
         
            +
                  #
         
     | 
| 
      
 257 
     | 
    
         
            +
                  # Returns 1 (TRUE) if this geometric object has m coordinate values.
         
     | 
| 
      
 258 
     | 
    
         
            +
                  #
         
     | 
| 
      
 259 
     | 
    
         
            +
                  # === Notes
         
     | 
| 
      
 260 
     | 
    
         
            +
                  #
         
     | 
| 
      
 261 
     | 
    
         
            +
                  # @return [Boolean]
         
     | 
| 
      
 262 
     | 
    
         
            +
                  def measured?
         
     | 
| 
      
 263 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#measured? not defined."
         
     | 
| 
       223 
264 
     | 
    
         
             
                  end
         
     | 
| 
       224 
265 
     | 
    
         | 
| 
       225 
266 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -234,7 +275,7 @@ module RGeo 
     | 
|
| 
       234 
275 
     | 
    
         
             
                  # Returns an object that supports the Geometry interface.
         
     | 
| 
       235 
276 
     | 
    
         | 
| 
       236 
277 
     | 
    
         
             
                  def boundary
         
     | 
| 
       237 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 278 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#boundary not defined."
         
     | 
| 
       238 
279 
     | 
    
         
             
                  end
         
     | 
| 
       239 
280 
     | 
    
         | 
| 
       240 
281 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -252,8 +293,8 @@ module RGeo 
     | 
|
| 
       252 
293 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       253 
294 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       254 
295 
     | 
    
         | 
| 
       255 
     | 
    
         
            -
                  def equals?( 
     | 
| 
       256 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 296 
     | 
    
         
            +
                  def equals?(_another_geometry)
         
     | 
| 
      
 297 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#equals? not defined."
         
     | 
| 
       257 
298 
     | 
    
         
             
                  end
         
     | 
| 
       258 
299 
     | 
    
         | 
| 
       259 
300 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -271,8 +312,8 @@ module RGeo 
     | 
|
| 
       271 
312 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       272 
313 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       273 
314 
     | 
    
         | 
| 
       274 
     | 
    
         
            -
                  def disjoint?( 
     | 
| 
       275 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 315 
     | 
    
         
            +
                  def disjoint?(_another_geometry)
         
     | 
| 
      
 316 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#disjoint? not defined."
         
     | 
| 
       276 
317 
     | 
    
         
             
                  end
         
     | 
| 
       277 
318 
     | 
    
         | 
| 
       278 
319 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -290,8 +331,8 @@ module RGeo 
     | 
|
| 
       290 
331 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       291 
332 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       292 
333 
     | 
    
         | 
| 
       293 
     | 
    
         
            -
                  def intersects?( 
     | 
| 
       294 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 334 
     | 
    
         
            +
                  def intersects?(_another_geometry)
         
     | 
| 
      
 335 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#intersects? not defined."
         
     | 
| 
       295 
336 
     | 
    
         
             
                  end
         
     | 
| 
       296 
337 
     | 
    
         | 
| 
       297 
338 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -309,8 +350,8 @@ module RGeo 
     | 
|
| 
       309 
350 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       310 
351 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       311 
352 
     | 
    
         | 
| 
       312 
     | 
    
         
            -
                  def touches?( 
     | 
| 
       313 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 353 
     | 
    
         
            +
                  def touches?(_another_geometry)
         
     | 
| 
      
 354 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#touches? not defined."
         
     | 
| 
       314 
355 
     | 
    
         
             
                  end
         
     | 
| 
       315 
356 
     | 
    
         | 
| 
       316 
357 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -328,8 +369,8 @@ module RGeo 
     | 
|
| 
       328 
369 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       329 
370 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       330 
371 
     | 
    
         | 
| 
       331 
     | 
    
         
            -
                  def crosses?( 
     | 
| 
       332 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 372 
     | 
    
         
            +
                  def crosses?(_another_geometry)
         
     | 
| 
      
 373 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#crosses? not defined."
         
     | 
| 
       333 
374 
     | 
    
         
             
                  end
         
     | 
| 
       334 
375 
     | 
    
         | 
| 
       335 
376 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -347,8 +388,8 @@ module RGeo 
     | 
|
| 
       347 
388 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       348 
389 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       349 
390 
     | 
    
         | 
| 
       350 
     | 
    
         
            -
                  def within?( 
     | 
| 
       351 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 391 
     | 
    
         
            +
                  def within?(_another_geometry)
         
     | 
| 
      
 392 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#within? not defined."
         
     | 
| 
       352 
393 
     | 
    
         
             
                  end
         
     | 
| 
       353 
394 
     | 
    
         | 
| 
       354 
395 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -366,8 +407,8 @@ module RGeo 
     | 
|
| 
       366 
407 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       367 
408 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       368 
409 
     | 
    
         | 
| 
       369 
     | 
    
         
            -
                  def contains?( 
     | 
| 
       370 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 410 
     | 
    
         
            +
                  def contains?(_another_geometry)
         
     | 
| 
      
 411 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#contains? not defined."
         
     | 
| 
       371 
412 
     | 
    
         
             
                  end
         
     | 
| 
       372 
413 
     | 
    
         | 
| 
       373 
414 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -385,8 +426,8 @@ module RGeo 
     | 
|
| 
       385 
426 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       386 
427 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       387 
428 
     | 
    
         | 
| 
       388 
     | 
    
         
            -
                  def overlaps?( 
     | 
| 
       389 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 429 
     | 
    
         
            +
                  def overlaps?(_another_geometry)
         
     | 
| 
      
 430 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#overlaps? not defined."
         
     | 
| 
       390 
431 
     | 
    
         
             
                  end
         
     | 
| 
       391 
432 
     | 
    
         | 
| 
       392 
433 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -411,8 +452,35 @@ module RGeo 
     | 
|
| 
       411 
452 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       412 
453 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       413 
454 
     | 
    
         | 
| 
       414 
     | 
    
         
            -
                  def relate?( 
     | 
| 
       415 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 455 
     | 
    
         
            +
                  def relate?(_another_geometry, _intersection_pattern_matrix_)
         
     | 
| 
      
 456 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#relate not defined."
         
     | 
| 
      
 457 
     | 
    
         
            +
                  end
         
     | 
| 
      
 458 
     | 
    
         
            +
             
     | 
| 
      
 459 
     | 
    
         
            +
                  # === SFS 1.2 Description
         
     | 
| 
      
 460 
     | 
    
         
            +
                  #
         
     | 
| 
      
 461 
     | 
    
         
            +
                  # Returns a derived geometry collection value that matches the
         
     | 
| 
      
 462 
     | 
    
         
            +
                  # specified m coordinate value.
         
     | 
| 
      
 463 
     | 
    
         
            +
                  #
         
     | 
| 
      
 464 
     | 
    
         
            +
                  # === Notes
         
     | 
| 
      
 465 
     | 
    
         
            +
                  #
         
     | 
| 
      
 466 
     | 
    
         
            +
                  # @param m_value [Float] value to find matches for
         
     | 
| 
      
 467 
     | 
    
         
            +
                  # @return [RGeo::Feature::GeometryCollection]
         
     | 
| 
      
 468 
     | 
    
         
            +
                  def locate_along
         
     | 
| 
      
 469 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#locate_along not defined."
         
     | 
| 
      
 470 
     | 
    
         
            +
                  end
         
     | 
| 
      
 471 
     | 
    
         
            +
             
     | 
| 
      
 472 
     | 
    
         
            +
                  # === SFS 1.2 Description
         
     | 
| 
      
 473 
     | 
    
         
            +
                  #
         
     | 
| 
      
 474 
     | 
    
         
            +
                  # Returns a derived geometry collection value
         
     | 
| 
      
 475 
     | 
    
         
            +
                  # that matches the specified range of m coordinate values inclusively
         
     | 
| 
      
 476 
     | 
    
         
            +
                  #
         
     | 
| 
      
 477 
     | 
    
         
            +
                  # === Notes
         
     | 
| 
      
 478 
     | 
    
         
            +
                  #
         
     | 
| 
      
 479 
     | 
    
         
            +
                  # @param m_start [Float] lower bound of value range
         
     | 
| 
      
 480 
     | 
    
         
            +
                  # @param m_end [Float] upper bound of value range
         
     | 
| 
      
 481 
     | 
    
         
            +
                  # @return [RGeo::Feature::GeometryCollection]
         
     | 
| 
      
 482 
     | 
    
         
            +
                  def locate_between
         
     | 
| 
      
 483 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#locate_between not defined."
         
     | 
| 
       416 
484 
     | 
    
         
             
                  end
         
     | 
| 
       417 
485 
     | 
    
         | 
| 
       418 
486 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -430,8 +498,8 @@ module RGeo 
     | 
|
| 
       430 
498 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of measuring the
         
     | 
| 
       431 
499 
     | 
    
         
             
                  # distance between objects from different factories is undefined.
         
     | 
| 
       432 
500 
     | 
    
         | 
| 
       433 
     | 
    
         
            -
                  def distance( 
     | 
| 
       434 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 501 
     | 
    
         
            +
                  def distance(_another_geometry)
         
     | 
| 
      
 502 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#distance not defined."
         
     | 
| 
       435 
503 
     | 
    
         
             
                  end
         
     | 
| 
       436 
504 
     | 
    
         | 
| 
       437 
505 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -446,7 +514,7 @@ module RGeo 
     | 
|
| 
       446 
514 
     | 
    
         
             
                  # Returns an object that supports the Geometry interface.
         
     | 
| 
       447 
515 
     | 
    
         | 
| 
       448 
516 
     | 
    
         
             
                  def buffer(_distance_)
         
     | 
| 
       449 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 517 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#buffer not defined."
         
     | 
| 
       450 
518 
     | 
    
         
             
                  end
         
     | 
| 
       451 
519 
     | 
    
         | 
| 
       452 
520 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -459,7 +527,7 @@ module RGeo 
     | 
|
| 
       459 
527 
     | 
    
         
             
                  # Returns an object that supports the Geometry interface.
         
     | 
| 
       460 
528 
     | 
    
         | 
| 
       461 
529 
     | 
    
         
             
                  def convex_hull
         
     | 
| 
       462 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 530 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#convex_hull not defined."
         
     | 
| 
       463 
531 
     | 
    
         
             
                  end
         
     | 
| 
       464 
532 
     | 
    
         | 
| 
       465 
533 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -476,8 +544,8 @@ module RGeo 
     | 
|
| 
       476 
544 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of performing
         
     | 
| 
       477 
545 
     | 
    
         
             
                  # operations on objects from different factories is undefined.
         
     | 
| 
       478 
546 
     | 
    
         | 
| 
       479 
     | 
    
         
            -
                  def intersection( 
     | 
| 
       480 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 547 
     | 
    
         
            +
                  def intersection(_another_geometry)
         
     | 
| 
      
 548 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#intersection not defined."
         
     | 
| 
       481 
549 
     | 
    
         
             
                  end
         
     | 
| 
       482 
550 
     | 
    
         | 
| 
       483 
551 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -494,8 +562,8 @@ module RGeo 
     | 
|
| 
       494 
562 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of performing
         
     | 
| 
       495 
563 
     | 
    
         
             
                  # operations on objects from different factories is undefined.
         
     | 
| 
       496 
564 
     | 
    
         | 
| 
       497 
     | 
    
         
            -
                  def union( 
     | 
| 
       498 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 565 
     | 
    
         
            +
                  def union(_another_geometry)
         
     | 
| 
      
 566 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#union not defined."
         
     | 
| 
       499 
567 
     | 
    
         
             
                  end
         
     | 
| 
       500 
568 
     | 
    
         | 
| 
       501 
569 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -512,8 +580,8 @@ module RGeo 
     | 
|
| 
       512 
580 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of performing
         
     | 
| 
       513 
581 
     | 
    
         
             
                  # operations on objects from different factories is undefined.
         
     | 
| 
       514 
582 
     | 
    
         | 
| 
       515 
     | 
    
         
            -
                  def difference( 
     | 
| 
       516 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 583 
     | 
    
         
            +
                  def difference(_another_geometry)
         
     | 
| 
      
 584 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#difference not defined."
         
     | 
| 
       517 
585 
     | 
    
         
             
                  end
         
     | 
| 
       518 
586 
     | 
    
         | 
| 
       519 
587 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -530,8 +598,8 @@ module RGeo 
     | 
|
| 
       530 
598 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of performing
         
     | 
| 
       531 
599 
     | 
    
         
             
                  # operations on objects from different factories is undefined.
         
     | 
| 
       532 
600 
     | 
    
         | 
| 
       533 
     | 
    
         
            -
                  def sym_difference( 
     | 
| 
       534 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 601 
     | 
    
         
            +
                  def sym_difference(_another_geometry)
         
     | 
| 
      
 602 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#sym_difference not defined."
         
     | 
| 
       535 
603 
     | 
    
         
             
                  end
         
     | 
| 
       536 
604 
     | 
    
         | 
| 
       537 
605 
     | 
    
         
             
                  # Returns true if this geometric object is representationally
         
     | 
| 
         @@ -542,8 +610,8 @@ module RGeo 
     | 
|
| 
       542 
610 
     | 
    
         
             
                  # this geometry, strictly speaking, the result of comparing objects
         
     | 
| 
       543 
611 
     | 
    
         
             
                  # from different factories is undefined.
         
     | 
| 
       544 
612 
     | 
    
         | 
| 
       545 
     | 
    
         
            -
                  def rep_equals?( 
     | 
| 
       546 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 613 
     | 
    
         
            +
                  def rep_equals?(_another_geometry)
         
     | 
| 
      
 614 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#rep_equals? not defined."
         
     | 
| 
       547 
615 
     | 
    
         
             
                  end
         
     | 
| 
       548 
616 
     | 
    
         | 
| 
       549 
617 
     | 
    
         
             
                  # Unions a collection of Geometry or a single Geometry
         
     | 
| 
         @@ -560,7 +628,7 @@ module RGeo 
     | 
|
| 
       560 
628 
     | 
    
         
             
                  # returns nil.
         
     | 
| 
       561 
629 
     | 
    
         
             
                  #
         
     | 
| 
       562 
630 
     | 
    
         
             
                  def unary_union
         
     | 
| 
       563 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 631 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#unary_union not defined."
         
     | 
| 
       564 
632 
     | 
    
         
             
                  end
         
     | 
| 
       565 
633 
     | 
    
         | 
| 
       566 
634 
     | 
    
         
             
                  # This method should behave almost the same as the rep_equals?
         
     | 
| 
         @@ -578,12 +646,12 @@ module RGeo 
     | 
|
| 
       578 
646 
     | 
    
         
             
                  # representational equivalence test, this method must fall back on
         
     | 
| 
       579 
647 
     | 
    
         
             
                  # objective equivalence.
         
     | 
| 
       580 
648 
     | 
    
         | 
| 
       581 
     | 
    
         
            -
                  def eql?( 
     | 
| 
       582 
     | 
    
         
            -
                    if  
     | 
| 
      
 649 
     | 
    
         
            +
                  def eql?(other)
         
     | 
| 
      
 650 
     | 
    
         
            +
                    if other.is_a?(RGeo::Feature::Instance)
         
     | 
| 
       583 
651 
     | 
    
         
             
                      begin
         
     | 
| 
       584 
     | 
    
         
            -
                        rep_equals?( 
     | 
| 
      
 652 
     | 
    
         
            +
                        rep_equals?(other)
         
     | 
| 
       585 
653 
     | 
    
         
             
                      rescue Error::UnsupportedOperation
         
     | 
| 
       586 
     | 
    
         
            -
                        equal?( 
     | 
| 
      
 654 
     | 
    
         
            +
                        equal?(other)
         
     | 
| 
       587 
655 
     | 
    
         
             
                      end
         
     | 
| 
       588 
656 
     | 
    
         
             
                    else
         
     | 
| 
       589 
657 
     | 
    
         
             
                      false
         
     | 
| 
         @@ -604,12 +672,12 @@ module RGeo 
     | 
|
| 
       604 
672 
     | 
    
         
             
                  # test, the == operator must fall back on representational or
         
     | 
| 
       605 
673 
     | 
    
         
             
                  # objective equivalence.
         
     | 
| 
       606 
674 
     | 
    
         | 
| 
       607 
     | 
    
         
            -
                  def ==( 
     | 
| 
       608 
     | 
    
         
            -
                    if  
     | 
| 
      
 675 
     | 
    
         
            +
                  def ==(other)
         
     | 
| 
      
 676 
     | 
    
         
            +
                    if other.is_a?(RGeo::Feature::Instance)
         
     | 
| 
       609 
677 
     | 
    
         
             
                      begin
         
     | 
| 
       610 
     | 
    
         
            -
                        equals?( 
     | 
| 
      
 678 
     | 
    
         
            +
                        equals?(other)
         
     | 
| 
       611 
679 
     | 
    
         
             
                      rescue Error::UnsupportedOperation
         
     | 
| 
       612 
     | 
    
         
            -
                        eql?( 
     | 
| 
      
 680 
     | 
    
         
            +
                        eql?(other)
         
     | 
| 
       613 
681 
     | 
    
         
             
                      end
         
     | 
| 
       614 
682 
     | 
    
         
             
                    else
         
     | 
| 
       615 
683 
     | 
    
         
             
                      false
         
     | 
| 
         @@ -621,8 +689,8 @@ module RGeo 
     | 
|
| 
       621 
689 
     | 
    
         
             
                  # types is not specified; an implementation may choose to provide
         
     | 
| 
       622 
690 
     | 
    
         
             
                  # additional capabilities as appropriate.
         
     | 
| 
       623 
691 
     | 
    
         | 
| 
       624 
     | 
    
         
            -
                  def -( 
     | 
| 
       625 
     | 
    
         
            -
                    difference( 
     | 
| 
      
 692 
     | 
    
         
            +
                  def -(other)
         
     | 
| 
      
 693 
     | 
    
         
            +
                    difference(other)
         
     | 
| 
       626 
694 
     | 
    
         
             
                  end
         
     | 
| 
       627 
695 
     | 
    
         | 
| 
       628 
696 
     | 
    
         
             
                  # If the given rhs is a geometry object, this operator must behave
         
     | 
| 
         @@ -630,8 +698,8 @@ module RGeo 
     | 
|
| 
       630 
698 
     | 
    
         
             
                  # is not specified; an implementation may choose to provide
         
     | 
| 
       631 
699 
     | 
    
         
             
                  # additional capabilities as appropriate.
         
     | 
| 
       632 
700 
     | 
    
         | 
| 
       633 
     | 
    
         
            -
                  def +( 
     | 
| 
       634 
     | 
    
         
            -
                    union( 
     | 
| 
      
 701 
     | 
    
         
            +
                  def +(other)
         
     | 
| 
      
 702 
     | 
    
         
            +
                    union(other)
         
     | 
| 
       635 
703 
     | 
    
         
             
                  end
         
     | 
| 
       636 
704 
     | 
    
         | 
| 
       637 
705 
     | 
    
         
             
                  # If the given rhs is a geometry object, this operator must behave
         
     | 
| 
         @@ -639,8 +707,20 @@ module RGeo 
     | 
|
| 
       639 
707 
     | 
    
         
             
                  # types is not specified; an implementation may choose to provide
         
     | 
| 
       640 
708 
     | 
    
         
             
                  # additional capabilities as appropriate.
         
     | 
| 
       641 
709 
     | 
    
         | 
| 
       642 
     | 
    
         
            -
                  def *( 
     | 
| 
       643 
     | 
    
         
            -
                    intersection( 
     | 
| 
      
 710 
     | 
    
         
            +
                  def *(other)
         
     | 
| 
      
 711 
     | 
    
         
            +
                    intersection(other)
         
     | 
| 
      
 712 
     | 
    
         
            +
                  end
         
     | 
| 
      
 713 
     | 
    
         
            +
             
     | 
| 
      
 714 
     | 
    
         
            +
                  # Convenience method to transform/project a geometry
         
     | 
| 
      
 715 
     | 
    
         
            +
                  # to a different coordinate system from the geometry itself
         
     | 
| 
      
 716 
     | 
    
         
            +
                  # instead of the cast method.
         
     | 
| 
      
 717 
     | 
    
         
            +
                  #
         
     | 
| 
      
 718 
     | 
    
         
            +
                  # @note: Not an OGC SFS method
         
     | 
| 
      
 719 
     | 
    
         
            +
                  #
         
     | 
| 
      
 720 
     | 
    
         
            +
                  # @param [RGeo::Feature::Factory] other_factory
         
     | 
| 
      
 721 
     | 
    
         
            +
                  # @return [RGeo::Feature::Geometry]
         
     | 
| 
      
 722 
     | 
    
         
            +
                  def transform(other_factory)
         
     | 
| 
      
 723 
     | 
    
         
            +
                    Feature.cast(self, factory: other_factory, project: true)
         
     | 
| 
       644 
724 
     | 
    
         
             
                  end
         
     | 
| 
       645 
725 
     | 
    
         
             
                end
         
     | 
| 
       646 
726 
     | 
    
         
             
              end
         
     | 
| 
         @@ -28,7 +28,6 @@ module RGeo 
     | 
|
| 
       28 
28 
     | 
    
         
             
                # include this module itself. Therefore, you should not depend on the
         
     | 
| 
       29 
29 
     | 
    
         
             
                # kind_of? method to check type. Instead, use the provided check_type
         
     | 
| 
       30 
30 
     | 
    
         
             
                # class method (or === operator) defined in the Type module.
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
31 
     | 
    
         
             
                module GeometryCollection
         
     | 
| 
       33 
32 
     | 
    
         
             
                  include Geometry
         
     | 
| 
       34 
33 
     | 
    
         
             
                  extend Type
         
     | 
| 
         @@ -44,7 +43,7 @@ module RGeo 
     | 
|
| 
       44 
43 
     | 
    
         
             
                  # Returns an integer.
         
     | 
| 
       45 
44 
     | 
    
         | 
| 
       46 
45 
     | 
    
         
             
                  def num_geometries
         
     | 
| 
       47 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 46 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#num_geometries not defined."
         
     | 
| 
       48 
47 
     | 
    
         
             
                  end
         
     | 
| 
       49 
48 
     | 
    
         | 
| 
       50 
49 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -58,8 +57,8 @@ module RGeo 
     | 
|
| 
       58 
57 
     | 
    
         
             
                  # Also note that this method is different from GeometryCollection#[]
         
     | 
| 
       59 
58 
     | 
    
         
             
                  # in that it does not support negative indexes.
         
     | 
| 
       60 
59 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                  def geometry_n( 
     | 
| 
       62 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 60 
     | 
    
         
            +
                  def geometry_n(_idx)
         
     | 
| 
      
 61 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#geometry_n not defined."
         
     | 
| 
       63 
62 
     | 
    
         
             
                  end
         
     | 
| 
       64 
63 
     | 
    
         | 
| 
       65 
64 
     | 
    
         
             
                  # Alias of the num_geometries method.
         
     | 
| 
         @@ -78,14 +77,14 @@ module RGeo 
     | 
|
| 
       78 
77 
     | 
    
         
             
                  # the same way Ruby's array indexing works. Hence, geometry_n(-1)
         
     | 
| 
       79 
78 
     | 
    
         
             
                  # returns nil, where [-1] returns the last element of the collection.
         
     | 
| 
       80 
79 
     | 
    
         | 
| 
       81 
     | 
    
         
            -
                  def []( 
     | 
| 
       82 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 80 
     | 
    
         
            +
                  def [](_idx)
         
     | 
| 
      
 81 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#[] not defined."
         
     | 
| 
       83 
82 
     | 
    
         
             
                  end
         
     | 
| 
       84 
83 
     | 
    
         | 
| 
       85 
84 
     | 
    
         
             
                  # Nodes the linework in a list of Geometries
         
     | 
| 
       86 
85 
     | 
    
         
             
                  #
         
     | 
| 
       87 
86 
     | 
    
         
             
                  def node
         
     | 
| 
       88 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 87 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#node not defined."
         
     | 
| 
       89 
88 
     | 
    
         
             
                  end
         
     | 
| 
       90 
89 
     | 
    
         | 
| 
       91 
90 
     | 
    
         
             
                  # Iterates over the geometries of this GeometryCollection.
         
     | 
| 
         @@ -95,8 +94,16 @@ module RGeo 
     | 
|
| 
       95 
94 
     | 
    
         
             
                  # Note that all GeometryCollection implementations must also
         
     | 
| 
       96 
95 
     | 
    
         
             
                  # include the Enumerable mixin.
         
     | 
| 
       97 
96 
     | 
    
         | 
| 
       98 
     | 
    
         
            -
                  def each(& 
     | 
| 
       99 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 97 
     | 
    
         
            +
                  def each(&_block)
         
     | 
| 
      
 98 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#each not defined."
         
     | 
| 
      
 99 
     | 
    
         
            +
                  end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                  # Gives a point that is guaranteed to be within the geometry.
         
     | 
| 
      
 102 
     | 
    
         
            +
                  #
         
     | 
| 
      
 103 
     | 
    
         
            +
                  # Extends OGC SFS 1.1 and follows PostGIS standards.
         
     | 
| 
      
 104 
     | 
    
         
            +
                  # @see https://postgis.net/docs/ST_PointOnSurface.html
         
     | 
| 
      
 105 
     | 
    
         
            +
                  def point_on_surface
         
     | 
| 
      
 106 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#each not defined."
         
     | 
| 
       100 
107 
     | 
    
         
             
                  end
         
     | 
| 
       101 
108 
     | 
    
         
             
                end
         
     | 
| 
       102 
109 
     | 
    
         
             
              end
         
     | 
| 
         @@ -20,7 +20,6 @@ module RGeo 
     | 
|
| 
       20 
20 
     | 
    
         
             
                # include this module itself. Therefore, you should not depend on the
         
     | 
| 
       21 
21 
     | 
    
         
             
                # kind_of? method to check type. Instead, use the provided check_type
         
     | 
| 
       22 
22 
     | 
    
         
             
                # class method (or === operator) defined in the Type module.
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
23 
     | 
    
         
             
                module LineString
         
     | 
| 
       25 
24 
     | 
    
         
             
                  include Curve
         
     | 
| 
       26 
25 
     | 
    
         
             
                  extend Type
         
     | 
| 
         @@ -34,7 +33,7 @@ module RGeo 
     | 
|
| 
       34 
33 
     | 
    
         
             
                  # Returns an integer.
         
     | 
| 
       35 
34 
     | 
    
         | 
| 
       36 
35 
     | 
    
         
             
                  def num_points
         
     | 
| 
       37 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 36 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#num_points not defined."
         
     | 
| 
       38 
37 
     | 
    
         
             
                  end
         
     | 
| 
       39 
38 
     | 
    
         | 
| 
       40 
39 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -47,15 +46,15 @@ module RGeo 
     | 
|
| 
       47 
46 
     | 
    
         
             
                  # if the given N is out of range. N is zero-based.
         
     | 
| 
       48 
47 
     | 
    
         
             
                  # Does not support negative indexes.
         
     | 
| 
       49 
48 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
                  def point_n( 
     | 
| 
       51 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 49 
     | 
    
         
            +
                  def point_n(_idx)
         
     | 
| 
      
 50 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#point_n not defined."
         
     | 
| 
       52 
51 
     | 
    
         
             
                  end
         
     | 
| 
       53 
52 
     | 
    
         | 
| 
       54 
53 
     | 
    
         
             
                  # Returns the constituent points as an array of objects that
         
     | 
| 
       55 
54 
     | 
    
         
             
                  # support the Point interface.
         
     | 
| 
       56 
55 
     | 
    
         | 
| 
       57 
56 
     | 
    
         
             
                  def points
         
     | 
| 
       58 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 57 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#points not defined."
         
     | 
| 
       59 
58 
     | 
    
         
             
                  end
         
     | 
| 
       60 
59 
     | 
    
         
             
                end
         
     | 
| 
       61 
60 
     | 
    
         
             
              end
         
     | 
| 
         @@ -19,7 +19,6 @@ module RGeo 
     | 
|
| 
       19 
19 
     | 
    
         
             
                # include this module itself. Therefore, you should not depend on the
         
     | 
| 
       20 
20 
     | 
    
         
             
                # kind_of? method to check type. Instead, use the provided check_type
         
     | 
| 
       21 
21 
     | 
    
         
             
                # class method (or === operator) defined in the Type module.
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
22 
     | 
    
         
             
                module LinearRing
         
     | 
| 
       24 
23 
     | 
    
         
             
                  include LineString
         
     | 
| 
       25 
24 
     | 
    
         
             
                  extend Type
         
     | 
| 
         @@ -37,7 +37,6 @@ module RGeo 
     | 
|
| 
       37 
37 
     | 
    
         
             
                # include this module itself. Therefore, you should not depend on the
         
     | 
| 
       38 
38 
     | 
    
         
             
                # kind_of? method to check type. Instead, use the provided check_type
         
     | 
| 
       39 
39 
     | 
    
         
             
                # class method (or === operator) defined in the Type module.
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
40 
     | 
    
         
             
                module MultiCurve
         
     | 
| 
       42 
41 
     | 
    
         
             
                  include GeometryCollection
         
     | 
| 
       43 
42 
     | 
    
         
             
                  extend Type
         
     | 
| 
         @@ -68,11 +67,6 @@ module RGeo 
     | 
|
| 
       68 
67 
     | 
    
         
             
                  def closed?
         
     | 
| 
       69 
68 
     | 
    
         
             
                    raise Error::UnsupportedOperation, "Method MultiCurve#closed? not defined."
         
     | 
| 
       70 
69 
     | 
    
         
             
                  end
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                  def is_closed?
         
     | 
| 
       73 
     | 
    
         
            -
                    warn "The is_closed? method is deprecated, please use the closed? counterpart, will be removed in v3" unless ENV["RGEO_SILENCE_DEPRECATION"]
         
     | 
| 
       74 
     | 
    
         
            -
                    closed?
         
     | 
| 
       75 
     | 
    
         
            -
                  end
         
     | 
| 
       76 
70 
     | 
    
         
             
                end
         
     | 
| 
       77 
71 
     | 
    
         
             
              end
         
     | 
| 
       78 
72 
     | 
    
         
             
            end
         
     | 
| 
         @@ -28,7 +28,6 @@ module RGeo 
     | 
|
| 
       28 
28 
     | 
    
         
             
                # include this module itself. Therefore, you should not depend on the
         
     | 
| 
       29 
29 
     | 
    
         
             
                # kind_of? method to check type. Instead, use the provided check_type
         
     | 
| 
       30 
30 
     | 
    
         
             
                # class method (or === operator) defined in the Type module.
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
31 
     | 
    
         
             
                module MultiSurface
         
     | 
| 
       33 
32 
     | 
    
         
             
                  include GeometryCollection
         
     | 
| 
       34 
33 
     | 
    
         
             
                  extend Type
         
     | 
| 
         @@ -43,7 +42,7 @@ module RGeo 
     | 
|
| 
       43 
42 
     | 
    
         
             
                  # Returns a floating-point scalar value.
         
     | 
| 
       44 
43 
     | 
    
         | 
| 
       45 
44 
     | 
    
         
             
                  def area
         
     | 
| 
       46 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 45 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#area not defined."
         
     | 
| 
       47 
46 
     | 
    
         
             
                  end
         
     | 
| 
       48 
47 
     | 
    
         | 
| 
       49 
48 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -56,7 +55,7 @@ module RGeo 
     | 
|
| 
       56 
55 
     | 
    
         
             
                  # Returns an object that supports the Point interface.
         
     | 
| 
       57 
56 
     | 
    
         | 
| 
       58 
57 
     | 
    
         
             
                  def centroid
         
     | 
| 
       59 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 58 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#centroid not defined."
         
     | 
| 
       60 
59 
     | 
    
         
             
                  end
         
     | 
| 
       61 
60 
     | 
    
         | 
| 
       62 
61 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -68,7 +67,7 @@ module RGeo 
     | 
|
| 
       68 
67 
     | 
    
         
             
                  # Returns an object that supports the Point interface.
         
     | 
| 
       69 
68 
     | 
    
         | 
| 
       70 
69 
     | 
    
         
             
                  def point_on_surface
         
     | 
| 
       71 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 70 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#point_on_surface not defined."
         
     | 
| 
       72 
71 
     | 
    
         
             
                  end
         
     | 
| 
       73 
72 
     | 
    
         
             
                end
         
     | 
| 
       74 
73 
     | 
    
         
             
              end
         
     | 
    
        data/lib/rgeo/feature/point.rb
    CHANGED
    
    | 
         @@ -33,7 +33,6 @@ module RGeo 
     | 
|
| 
       33 
33 
     | 
    
         
             
                # replace them with empty GeometryCollection objects. Therefore,
         
     | 
| 
       34 
34 
     | 
    
         
             
                # currently, every RGeo Point object represents an actual location
         
     | 
| 
       35 
35 
     | 
    
         
             
                # with real coordinates.
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
36 
     | 
    
         
             
                module Point
         
     | 
| 
       38 
37 
     | 
    
         
             
                  include Geometry
         
     | 
| 
       39 
38 
     | 
    
         
             
                  extend Type
         
     | 
| 
         @@ -47,7 +46,7 @@ module RGeo 
     | 
|
| 
       47 
46 
     | 
    
         
             
                  # Returns a floating-point scalar value.
         
     | 
| 
       48 
47 
     | 
    
         | 
| 
       49 
48 
     | 
    
         
             
                  def x
         
     | 
| 
       50 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 49 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#x not defined."
         
     | 
| 
       51 
50 
     | 
    
         
             
                  end
         
     | 
| 
       52 
51 
     | 
    
         | 
| 
       53 
52 
     | 
    
         
             
                  # === SFS 1.1 Description
         
     | 
| 
         @@ -59,7 +58,7 @@ module RGeo 
     | 
|
| 
       59 
58 
     | 
    
         
             
                  # Returns a floating-point scalar value.
         
     | 
| 
       60 
59 
     | 
    
         | 
| 
       61 
60 
     | 
    
         
             
                  def y
         
     | 
| 
       62 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 61 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#y not defined."
         
     | 
| 
       63 
62 
     | 
    
         
             
                  end
         
     | 
| 
       64 
63 
     | 
    
         | 
| 
       65 
64 
     | 
    
         
             
                  # Returns the z-coordinate for this Point as a floating-point
         
     | 
| 
         @@ -69,7 +68,7 @@ module RGeo 
     | 
|
| 
       69 
68 
     | 
    
         
             
                  # not support Z coordinates.
         
     | 
| 
       70 
69 
     | 
    
         | 
| 
       71 
70 
     | 
    
         
             
                  def z
         
     | 
| 
       72 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 71 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#z not defined."
         
     | 
| 
       73 
72 
     | 
    
         
             
                  end
         
     | 
| 
       74 
73 
     | 
    
         | 
| 
       75 
74 
     | 
    
         
             
                  # Returns the m-coordinate for this Point as a floating-point
         
     | 
| 
         @@ -79,7 +78,7 @@ module RGeo 
     | 
|
| 
       79 
78 
     | 
    
         
             
                  # not support M coordinates.
         
     | 
| 
       80 
79 
     | 
    
         | 
| 
       81 
80 
     | 
    
         
             
                  def m
         
     | 
| 
       82 
     | 
    
         
            -
                    raise Error::UnsupportedOperation, "Method  
     | 
| 
      
 81 
     | 
    
         
            +
                    raise Error::UnsupportedOperation, "Method #{self.class}#m not defined."
         
     | 
| 
       83 
82 
     | 
    
         
             
                  end
         
     | 
| 
       84 
83 
     | 
    
         
             
                end
         
     | 
| 
       85 
84 
     | 
    
         
             
              end
         
     | 
    
        data/lib/rgeo/feature/polygon.rb
    CHANGED
    
    | 
         @@ -45,7 +45,6 @@ module RGeo 
     | 
|
| 
       45 
45 
     | 
    
         
             
                # include this module itself. Therefore, you should not depend on the
         
     | 
| 
       46 
46 
     | 
    
         
             
                # kind_of? method to check type. Instead, use the provided check_type
         
     | 
| 
       47 
47 
     | 
    
         
             
                # class method (or === operator) defined in the Type module.
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
48 
     | 
    
         
             
                module Polygon
         
     | 
| 
       50 
49 
     | 
    
         
             
                  include Surface
         
     | 
| 
       51 
50 
     | 
    
         
             
                  extend Type
         
     | 
| 
         @@ -84,7 +83,7 @@ module RGeo 
     | 
|
| 
       84 
83 
     | 
    
         
             
                  # if the given N is out of range. N is zero-based.
         
     | 
| 
       85 
84 
     | 
    
         
             
                  # Does not support negative indexes.
         
     | 
| 
       86 
85 
     | 
    
         | 
| 
       87 
     | 
    
         
            -
                  def interior_ring_n( 
     | 
| 
      
 86 
     | 
    
         
            +
                  def interior_ring_n(_idx)
         
     | 
| 
       88 
87 
     | 
    
         
             
                    raise Error::UnsupportedOperation, "Method Polygon#interior_ring_n not defined."
         
     | 
| 
       89 
88 
     | 
    
         
             
                  end
         
     | 
| 
       90 
89 
     | 
    
         |