rgeo 0.1.21 → 0.1.22

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.
Files changed (73) hide show
  1. data/History.rdoc +11 -0
  2. data/README.rdoc +1 -1
  3. data/Spatial_Programming_With_RGeo.rdoc +382 -0
  4. data/Version +1 -1
  5. data/lib/active_record/connection_adapters/postgis_adapter.rb +1 -1
  6. data/lib/rgeo.rb +4 -4
  7. data/lib/rgeo/active_record/base_modifications.rb +1 -1
  8. data/lib/rgeo/all.rb +1 -1
  9. data/lib/rgeo/cartesian/bounding_box.rb +2 -2
  10. data/lib/rgeo/cartesian/factory.rb +18 -11
  11. data/lib/rgeo/cartesian/interface.rb +4 -4
  12. data/lib/rgeo/coord_sys.rb +8 -1
  13. data/lib/rgeo/coord_sys/proj4.rb +4 -4
  14. data/lib/rgeo/feature/factory.rb +68 -49
  15. data/lib/rgeo/feature/factory_generator.rb +2 -2
  16. data/lib/rgeo/feature/types.rb +4 -4
  17. data/lib/rgeo/geo_json/coder.rb +5 -5
  18. data/lib/rgeo/{geography.rb → geographic.rb} +15 -15
  19. data/lib/rgeo/{geography → geographic}/factory.rb +27 -20
  20. data/lib/rgeo/{geography → geographic}/interface.rb +43 -29
  21. data/lib/rgeo/{geography → geographic}/proj4_projector.rb +2 -2
  22. data/lib/rgeo/{geography → geographic}/projected_feature_classes.rb +2 -2
  23. data/lib/rgeo/{geography → geographic}/projected_feature_methods.rb +2 -2
  24. data/lib/rgeo/{geography → geographic}/projected_window.rb +5 -5
  25. data/lib/rgeo/{geography → geographic}/simple_mercator_projector.rb +2 -2
  26. data/lib/rgeo/{geography → geographic}/spherical_feature_classes.rb +2 -2
  27. data/lib/rgeo/{geography → geographic}/spherical_feature_methods.rb +2 -2
  28. data/lib/rgeo/{geography → geographic}/spherical_math.rb +1 -1
  29. data/lib/rgeo/geos/factory.rb +22 -15
  30. data/lib/rgeo/geos/interface.rb +3 -3
  31. data/lib/rgeo/geos/zm_factory.rb +20 -6
  32. data/lib/rgeo/impl_helper/basic_point_methods.rb +2 -2
  33. data/lib/rgeo/shapefile/reader.rb +5 -5
  34. data/lib/rgeo/wkrep/wkb_generator.rb +2 -2
  35. data/lib/rgeo/wkrep/wkb_parser.rb +4 -4
  36. data/lib/rgeo/wkrep/wkt_generator.rb +2 -2
  37. data/lib/rgeo/wkrep/wkt_parser.rb +7 -7
  38. data/test/active_record/common_setup_methods.rb +1 -1
  39. data/test/geos/tc_point.rb +3 -3
  40. data/test/geos/tc_zmfactory.rb +7 -7
  41. data/test/{projected_geography → projected_geographic}/tc_geometry_collection.rb +2 -2
  42. data/test/{projected_geography → projected_geographic}/tc_line_string.rb +2 -2
  43. data/test/{projected_geography → projected_geographic}/tc_multi_line_string.rb +2 -2
  44. data/test/{projected_geography → projected_geographic}/tc_multi_point.rb +2 -2
  45. data/test/{projected_geography → projected_geographic}/tc_multi_polygon.rb +3 -3
  46. data/test/{projected_geography → projected_geographic}/tc_point.rb +5 -5
  47. data/test/{projected_geography → projected_geographic}/tc_polygon.rb +2 -2
  48. data/test/shapefile/tc_shapelib_tests.rb +10 -10
  49. data/test/simple_cartesian/tc_point.rb +3 -3
  50. data/test/simple_mercator/tc_geometry_collection.rb +1 -1
  51. data/test/simple_mercator/tc_line_string.rb +1 -1
  52. data/test/simple_mercator/tc_multi_line_string.rb +1 -1
  53. data/test/simple_mercator/tc_multi_point.rb +1 -1
  54. data/test/simple_mercator/tc_multi_polygon.rb +2 -2
  55. data/test/simple_mercator/tc_point.rb +4 -4
  56. data/test/simple_mercator/tc_polygon.rb +1 -1
  57. data/test/simple_mercator/tc_window.rb +39 -39
  58. data/test/spherical_geographic/tc_calculations.rb +203 -0
  59. data/test/{spherical_geography → spherical_geographic}/tc_geometry_collection.rb +2 -2
  60. data/test/{spherical_geography → spherical_geographic}/tc_line_string.rb +2 -2
  61. data/test/{spherical_geography → spherical_geographic}/tc_multi_line_string.rb +2 -2
  62. data/test/{spherical_geography → spherical_geographic}/tc_multi_point.rb +2 -2
  63. data/test/{spherical_geography → spherical_geographic}/tc_multi_polygon.rb +3 -3
  64. data/test/{spherical_geography → spherical_geographic}/tc_point.rb +6 -6
  65. data/test/{spherical_geography → spherical_geographic}/tc_polygon.rb +2 -2
  66. data/test/tc_geojson.rb +3 -3
  67. data/test/tc_oneoff.rb +5 -5
  68. data/test/wkrep/tc_wkb_generator.rb +3 -3
  69. data/test/wkrep/tc_wkb_parser.rb +16 -16
  70. data/test/wkrep/tc_wkt_generator.rb +3 -3
  71. data/test/wkrep/tc_wkt_parser.rb +21 -21
  72. metadata +46 -44
  73. data/test/spherical_geography/tc_calculations.rb +0 -203
@@ -36,11 +36,11 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
 
42
42
  # This class implements the various factories for geography features.
43
- # See methods of the RGeo::Geography module for the API for creating
43
+ # See methods of the RGeo::Geographic module for the API for creating
44
44
  # geography factories.
45
45
 
46
46
  class Factory
@@ -50,17 +50,17 @@ module RGeo
50
50
 
51
51
  def initialize(impl_prefix_, opts_={}) # :nodoc:
52
52
  @impl_prefix = impl_prefix_
53
- @point_class = Geography.const_get("#{impl_prefix_}PointImpl")
54
- @line_string_class = Geography.const_get("#{impl_prefix_}LineStringImpl")
55
- @linear_ring_class = Geography.const_get("#{impl_prefix_}LinearRingImpl")
56
- @line_class = Geography.const_get("#{impl_prefix_}LineImpl")
57
- @polygon_class = Geography.const_get("#{impl_prefix_}PolygonImpl")
58
- @geometry_collection_class = Geography.const_get("#{impl_prefix_}GeometryCollectionImpl")
59
- @multi_point_class = Geography.const_get("#{impl_prefix_}MultiPointImpl")
60
- @multi_line_string_class = Geography.const_get("#{impl_prefix_}MultiLineStringImpl")
61
- @multi_polygon_class = Geography.const_get("#{impl_prefix_}MultiPolygonImpl")
62
- @support_z = opts_[:support_z_coordinate] ? true : false
63
- @support_m = opts_[:support_m_coordinate] ? true : false
53
+ @point_class = Geographic.const_get("#{impl_prefix_}PointImpl")
54
+ @line_string_class = Geographic.const_get("#{impl_prefix_}LineStringImpl")
55
+ @linear_ring_class = Geographic.const_get("#{impl_prefix_}LinearRingImpl")
56
+ @line_class = Geographic.const_get("#{impl_prefix_}LineImpl")
57
+ @polygon_class = Geographic.const_get("#{impl_prefix_}PolygonImpl")
58
+ @geometry_collection_class = Geographic.const_get("#{impl_prefix_}GeometryCollectionImpl")
59
+ @multi_point_class = Geographic.const_get("#{impl_prefix_}MultiPointImpl")
60
+ @multi_line_string_class = Geographic.const_get("#{impl_prefix_}MultiLineStringImpl")
61
+ @multi_polygon_class = Geographic.const_get("#{impl_prefix_}MultiPolygonImpl")
62
+ @support_z = opts_[:has_z_coordinate] ? true : false
63
+ @support_m = opts_[:has_m_coordinate] ? true : false
64
64
  @srid = opts_[:srid] || 4326
65
65
  @proj4 = opts_[:proj4]
66
66
  if CoordSys::Proj4.supported?
@@ -81,7 +81,7 @@ module RGeo
81
81
  # Equivalence test.
82
82
 
83
83
  def eql?(rhs_)
84
- rhs_.is_a?(Geography::Factory) &&
84
+ rhs_.is_a?(Geographic::Factory) &&
85
85
  @impl_prefix == rhs_.instance_variable_get(:@impl_prefix) &&
86
86
  @support_z == rhs_.instance_variable_get(:@support_z) &&
87
87
  @support_m == rhs_.instance_variable_get(:@support_m) &&
@@ -166,16 +166,16 @@ module RGeo
166
166
  end
167
167
 
168
168
 
169
- # See ::RGeo::Feature::Factory#has_capability?
169
+ # See ::RGeo::Feature::Factory#property
170
170
 
171
- def has_capability?(name_)
171
+ def property(name_)
172
172
  case name_
173
- when :z_coordinate
173
+ when :has_z_coordinate
174
174
  @support_z
175
- when :m_coordinate
175
+ when :has_m_coordinate
176
176
  @support_m
177
- when :proj4
178
- @proj4 ? true : false
177
+ when :is_geographic
178
+ true
179
179
  else
180
180
  nil
181
181
  end
@@ -266,6 +266,13 @@ module RGeo
266
266
  end
267
267
 
268
268
 
269
+ # See ::RGeo::Feature::Factory#coord_sys
270
+
271
+ def coord_sys
272
+ nil
273
+ end
274
+
275
+
269
276
  end
270
277
 
271
278
  end
@@ -36,7 +36,7 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
  class << self
42
42
 
@@ -82,10 +82,10 @@ module RGeo
82
82
  # You may use the following options when creating a spherical
83
83
  # factory:
84
84
  #
85
- # <tt>:support_z_coordinate</tt>::
86
- # Support <tt>z_coordinate</tt>. Default is false.
87
- # <tt>:support_m_coordinate</tt>::
88
- # Support <tt>m_coordinate</tt>. Default is false.
85
+ # <tt>:has_z_coordinate</tt>::
86
+ # Support a Z coordinate. Default is false.
87
+ # <tt>:has_m_coordinate</tt>::
88
+ # Support an M coordinate. Default is false.
89
89
  # <tt>:proj4</tt>::
90
90
  # Provide the coordinate system in Proj4 format. You may pass
91
91
  # either an RGeo::CoordSys::Proj4 object, or a string or hash
@@ -102,7 +102,7 @@ module RGeo
102
102
  # implies an ellipsoidal datum, not a spherical datum.
103
103
 
104
104
  def spherical_factory(opts_={})
105
- Geography::Factory.new('Spherical', :support_z_coordinate => opts_[:support_z_coordinate], :support_m_coordinate => opts_[:support_m_coordinate], :proj4 => opts_[:proj4] || '+proj=longlat +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +no_defs', :srid => opts_[:srid] || 4055)
105
+ Geographic::Factory.new('Spherical', :has_z_coordinate => opts_[:has_z_coordinate], :has_m_coordinate => opts_[:has_m_coordinate], :proj4 => opts_[:proj4] || '+proj=longlat +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +no_defs', :srid => opts_[:srid] || 4055)
106
106
  end
107
107
 
108
108
 
@@ -161,20 +161,14 @@ module RGeo
161
161
  # 4-sided polygon. A resolution of 2 would cause that buffer
162
162
  # to be approximated by an 8-sided polygon. The exact behavior
163
163
  # for different kinds of buffers is defined by GEOS.
164
- # <tt>:support_z_coordinate</tt>::
165
- # Support <tt>z_coordinate</tt>. Default is false.
166
- # Note that simple_mercator factories cannot support both
167
- # <tt>z_coordinate</tt> and <tt>m_coordinate</tt>. They may at
168
- # most support one or the other.
169
- # <tt>:support_m_coordinate</tt>::
170
- # Support <tt>m_coordinate</tt>. Default is false.
171
- # Note that simple_mercator factories cannot support both
172
- # <tt>z_coordinate</tt> and <tt>m_coordinate</tt>. They may at
173
- # most support one or the other.
164
+ # <tt>:has_z_coordinate</tt>::
165
+ # Support a Z coordinate. Default is false.
166
+ # <tt>:has_m_coordinate</tt>::
167
+ # Support an M coordinate. Default is false.
174
168
 
175
169
  def simple_mercator_factory(opts_={})
176
- factory_ = Geography::Factory.new('Projected', :proj4 => '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs', :srid => 4326, :support_z_coordinate => opts_[:support_z_coordinate], :support_m_coordinate => opts_[:support_m_coordinate])
177
- projector_ = Geography::SimpleMercatorProjector.new(factory_, :buffer_resolution => opts_[:buffer_resolution], :lenient_multi_polygon_assertions => opts_[:lenient_multi_polygon_assertions], :support_z_coordinate => opts_[:support_z_coordinate], :support_m_coordinate => opts_[:support_m_coordinate])
170
+ factory_ = Geographic::Factory.new('Projected', :proj4 => '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs', :srid => 4326, :has_z_coordinate => opts_[:has_z_coordinate], :has_m_coordinate => opts_[:has_m_coordinate])
171
+ projector_ = Geographic::SimpleMercatorProjector.new(factory_, :buffer_resolution => opts_[:buffer_resolution], :lenient_multi_polygon_assertions => opts_[:lenient_multi_polygon_assertions], :has_z_coordinate => opts_[:has_z_coordinate], :has_m_coordinate => opts_[:has_m_coordinate])
178
172
  factory_._set_projector(projector_)
179
173
  factory_
180
174
  end
@@ -188,7 +182,7 @@ module RGeo
188
182
  # calculations report results in the projected units.
189
183
  #
190
184
  # This implementation is intended for advanced GIS applications
191
- # requiring intimate control over the projection being used.
185
+ # requiring greater control over the projection being used.
192
186
  #
193
187
  # === Options
194
188
  #
@@ -203,7 +197,7 @@ module RGeo
203
197
  #
204
198
  # <tt>:projection_factory</tt>::
205
199
  # Specify an existing Cartesian factory to use for the projection.
206
- # This factory must support the <tt>:proj4</tt> capability.
200
+ # This factory must have a non-nil Proj4.
207
201
  #
208
202
  # Note that in this case, the geography factory's z-coordinate and
209
203
  # m-coordinate availability will be set to match the projection's
@@ -232,21 +226,41 @@ module RGeo
232
226
  # 4-sided polygon. A resolution of 2 would cause that buffer
233
227
  # to be approximated by an 8-sided polygon. The exact behavior
234
228
  # for different kinds of buffers is defined by GEOS.
235
- # <tt>:support_z_coordinate</tt>::
236
- # Support <tt>z_coordinate</tt>. Default is false.
237
- # <tt>:support_m_coordinate</tt>::
238
- # Support <tt>m_coordinate</tt>. Default is false.
229
+ # <tt>:has_z_coordinate</tt>::
230
+ # Support a Z coordinate. Default is false.
231
+ # <tt>:has_m_coordinate</tt>::
232
+ # Support an M coordinate. Default is false.
233
+ #
234
+ # Normally, this geographic factory's actual proj4 projection is
235
+ # derived from the projection's proj4, by extracting the
236
+ # corresponding geographic coordinate system from the projected
237
+ # coordinate system. However, you can override this and provide
238
+ # your own geographic coordinate system by setting the
239
+ # <tt>:proj4</tt> option.
239
240
 
240
241
  def projected_factory(opts_={})
241
242
  unless CoordSys::Proj4.supported?
242
243
  raise Error::UnsupportedCapability, "Proj4 is not supported because the proj4 library was not found at install time."
243
244
  end
244
245
  if (projection_factory_ = opts_[:projection_factory])
245
- factory_ = Geography::Factory.new('Projected', :proj4 => opts_[:proj4] || '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs', :srid => opts_[:srid] || 4326, :support_z_coordinate => projection_factory_.has_capability?(:z_coordinate), :support_m_coordinate => projection_factory_.has_capability?(:m_coordinate))
246
- projector_ = Geography::Proj4Projector.create_from_existing_factory(factory_, projection_factory_)
247
- elsif opts_[:projection_proj4]
248
- factory_ = Geography::Factory.new('Projected', :proj4 => opts_[:proj4] || '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs', :srid => opts_[:srid] || 4326, :support_z_coordinate => opts_[:support_z_coordinate], :support_m_coordinate => opts_[:support_m_coordinate])
249
- projector_ = Geography::Proj4Projector.create_from_proj4(factory_, opts_[:projection_proj4], :srid => opts_[:projection_srid], :buffer_resolution => opts_[:buffer_resolution], :lenient_multi_polygon_assertions => opts_[:lenient_multi_polygon_assertions], :support_z_coordinate => opts_[:support_z_coordinate], :support_m_coordinate => opts_[:support_m_coordinate])
246
+ projection_proj4_ = projection_factory_.proj4
247
+ unless projection_proj4_
248
+ raise ::ArgumentError, 'The :projection_factory does not have a proj4.'
249
+ end
250
+ proj4_ = opts_[:proj4] || projection_proj4_.get_geographic || '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'
251
+ factory_ = Geographic::Factory.new('Projected', :proj4 => proj4_, :srid => opts_[:srid] || 4326, :has_z_coordinate => projection_factory_.property(:has_z_coordinate), :has_m_coordinate => projection_factory_.property(:has_m_coordinate))
252
+ projector_ = Geographic::Proj4Projector.create_from_existing_factory(factory_, projection_factory_)
253
+ elsif (projection_proj4_ = opts_[:projection_proj4])
254
+ if projection_proj4_.kind_of?(::String) || projection_proj4_.kind_of?(::Hash)
255
+ actual_projection_proj4_ = CoordSys::Proj4.create(projection_proj4_)
256
+ unless actual_projection_proj4_
257
+ raise ::ArgumentError, "Bad proj4 syntax: #{projection_proj4_.inspect}"
258
+ end
259
+ projection_proj4_ = actual_projection_proj4_
260
+ end
261
+ proj4_ = opts_[:proj4] || projection_proj4_.get_geographic || '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'
262
+ factory_ = Geographic::Factory.new('Projected', :proj4 => proj4_, :srid => opts_[:srid] || 4326, :has_z_coordinate => opts_[:has_z_coordinate], :has_m_coordinate => opts_[:has_m_coordinate])
263
+ projector_ = Geographic::Proj4Projector.create_from_proj4(factory_, opts_[:projection_proj4], :srid => opts_[:projection_srid], :buffer_resolution => opts_[:buffer_resolution], :lenient_multi_polygon_assertions => opts_[:lenient_multi_polygon_assertions], :has_z_coordinate => opts_[:has_z_coordinate], :has_m_coordinate => opts_[:has_m_coordinate])
250
264
  else
251
265
  raise ::ArgumentError, 'You must provide either :projection_proj4 or :projection_factory.'
252
266
  end
@@ -36,7 +36,7 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
 
42
42
  class Proj4Projector # :nodoc:
@@ -82,7 +82,7 @@ module RGeo
82
82
 
83
83
 
84
84
  def create_from_proj4(geography_factory_, proj4_, opts_={})
85
- projection_factory_ = Cartesian.preferred_factory(:proj4 => proj4_, :srid => opts_[:srid], :buffer_resolution => opts_[:buffer_resolution], :lenient_multi_polygon_assertions => opts_[:lenient_multi_polygon_assertions], :support_z_coordinate => opts_[:support_z_coordinate], :support_m_coordinate => opts_[:support_m_coordinate])
85
+ projection_factory_ = Cartesian.preferred_factory(:proj4 => proj4_, :srid => opts_[:srid], :buffer_resolution => opts_[:buffer_resolution], :lenient_multi_polygon_assertions => opts_[:lenient_multi_polygon_assertions], :has_z_coordinate => opts_[:has_z_coordinate], :has_m_coordinate => opts_[:has_m_coordinate])
86
86
  new(geography_factory_, projection_factory_)
87
87
  end
88
88
 
@@ -1,6 +1,6 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  #
3
- # Mercator geography feature classes
3
+ # Projtected geographic feature classes
4
4
  #
5
5
  # -----------------------------------------------------------------------------
6
6
  # Copyright 2010 Daniel Azuma
@@ -36,7 +36,7 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
 
42
42
  class ProjectedPointImpl # :nodoc:
@@ -1,6 +1,6 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  #
3
- # Mercator geography common method definitions
3
+ # Projected geographic common method definitions
4
4
  #
5
5
  # -----------------------------------------------------------------------------
6
6
  # Copyright 2010 Daniel Azuma
@@ -36,7 +36,7 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
 
42
42
  module ProjectedGeometryMethods # :nodoc:
@@ -36,19 +36,19 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
 
42
42
  # This object represents an axis-aligned rectangle in a map projection
43
43
  # coordinate system. It is commonly used to specify the viewport for a
44
44
  # map visualization, an envelope in a projected coordinate system, or
45
- # a spatial constraint. It must be attached to a Geography::Factory
45
+ # a spatial constraint. It must be attached to a Geographic::Factory
46
46
  # that has a projection.
47
47
 
48
48
  class ProjectedWindow
49
49
 
50
50
 
51
- # Create a new ProjectedWindow given the Geography::Factory, and the
51
+ # Create a new ProjectedWindow given the Geographic::Factory, and the
52
52
  # x and y extents of the rectangle.
53
53
  #
54
54
  # The window will be intelligently clamped to the limits imposed by
@@ -110,10 +110,10 @@ module RGeo
110
110
  end
111
111
 
112
112
 
113
- # Returns the Geography::Factory associated with this window.
113
+ # Returns the Geographic::Factory associated with this window.
114
114
  # Note that this factory is the overall geography factory, not the
115
115
  # projected factory (which can be obtained by calling
116
- # Geography::Factory#projection_factory on this factory).
116
+ # Geographic::Factory#projection_factory on this factory).
117
117
 
118
118
  def factory
119
119
  @factory
@@ -36,7 +36,7 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
 
42
42
  class SimpleMercatorProjector # :nodoc:
@@ -46,7 +46,7 @@ module RGeo
46
46
 
47
47
  def initialize(geography_factory_, opts_={})
48
48
  @geography_factory = geography_factory_
49
- @projection_factory = Cartesian.preferred_factory(:srid => 3857, :proj4 => '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', :buffer_resolution => opts_[:buffer_resolution], :lenient_multi_polygon_assertions => opts_[:lenient_multi_polygon_assertions], :support_z_coordinate => opts_[:support_z_coordinate], :support_m_coordinate => opts_[:support_m_coordinate])
49
+ @projection_factory = Cartesian.preferred_factory(:srid => 3857, :proj4 => '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', :buffer_resolution => opts_[:buffer_resolution], :lenient_multi_polygon_assertions => opts_[:lenient_multi_polygon_assertions], :has_z_coordinate => opts_[:has_z_coordinate], :has_m_coordinate => opts_[:has_m_coordinate])
50
50
  end
51
51
 
52
52
 
@@ -1,6 +1,6 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  #
3
- # Spherical geography feature classes
3
+ # Spherical geographic feature classes
4
4
  #
5
5
  # -----------------------------------------------------------------------------
6
6
  # Copyright 2010 Daniel Azuma
@@ -36,7 +36,7 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
 
42
42
  class SphericalPointImpl # :nodoc:
@@ -1,6 +1,6 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  #
3
- # Spherical geometry common methods
3
+ # Spherical geographic common methods
4
4
  #
5
5
  # -----------------------------------------------------------------------------
6
6
  # Copyright 2010 Daniel Azuma
@@ -36,7 +36,7 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
 
42
42
  module SphericalGeometryMethods # :nodoc:
@@ -36,7 +36,7 @@
36
36
 
37
37
  module RGeo
38
38
 
39
- module Geography
39
+ module Geographic
40
40
 
41
41
  module SphericalMath # :nodoc:
42
42
 
@@ -59,8 +59,8 @@ module RGeo
59
59
  return nil unless respond_to?(:_create)
60
60
  flags_ = 0
61
61
  flags_ |= 1 if opts_[:lenient_multi_polygon_assertions]
62
- flags_ |= 2 if opts_[:support_z_coordinate]
63
- flags_ |= 4 if opts_[:support_m_coordinate]
62
+ flags_ |= 2 if opts_[:has_z_coordinate]
63
+ flags_ |= 4 if opts_[:has_m_coordinate]
64
64
  if flags_ & 6 == 6
65
65
  raise Error::UnsupportedCapability, "GEOS cannot support both Z and M coordinates at the same time."
66
66
  end
@@ -119,16 +119,16 @@ module RGeo
119
119
  end
120
120
 
121
121
 
122
- # See ::RGeo::Feature::Factory#has_capability?
122
+ # See ::RGeo::Feature::Factory#property
123
123
 
124
- def has_capability?(name_)
124
+ def property(name_)
125
125
  case name_
126
- when :z_coordinate
126
+ when :has_z_coordinate
127
127
  _flags & 0x2 != 0
128
- when :m_coordinate
128
+ when :has_m_coordinate
129
129
  _flags & 0x4 != 0
130
- when :proj4
131
- !@proj4.nil?
130
+ when :is_cartesian
131
+ true
132
132
  else
133
133
  nil
134
134
  end
@@ -223,6 +223,20 @@ module RGeo
223
223
  end
224
224
 
225
225
 
226
+ # See ::RGeo::Feature::Factory#proj4
227
+
228
+ def proj4
229
+ @proj4
230
+ end
231
+
232
+
233
+ # See ::RGeo::Feature::Factory#coord_sys
234
+
235
+ def coord_sys
236
+ nil
237
+ end
238
+
239
+
226
240
  # See ::RGeo::Feature::Factory#override_cast
227
241
 
228
242
  def override_cast(original_, ntype_, flags_)
@@ -262,13 +276,6 @@ module RGeo
262
276
  end
263
277
 
264
278
 
265
- # See ::RGeo::Feature::Factory#proj4
266
-
267
- def proj4
268
- @proj4
269
- end
270
-
271
-
272
279
  end
273
280
 
274
281
 
@@ -88,14 +88,14 @@ module RGeo
88
88
  # <tt>:srid</tt>::
89
89
  # Set the SRID returned by geometries created by this factory.
90
90
  # Default is 0.
91
- # <tt>:support_z_coordinate</tt>::
91
+ # <tt>:has_z_coordinate</tt>::
92
92
  # Support <tt>z_coordinate</tt>. Default is false.
93
- # <tt>:support_m_coordinate</tt>::
93
+ # <tt>:has_m_coordinate</tt>::
94
94
  # Support <tt>m_coordinate</tt>. Default is false.
95
95
 
96
96
  def factory(opts_={})
97
97
  if supported?
98
- if opts_[:support_z_coordinate] && opts_[:support_m_coordinate]
98
+ if opts_[:has_z_coordinate] && opts_[:has_m_coordinate]
99
99
  ZMFactory.new(opts_)
100
100
  else
101
101
  Factory.create(opts_)