rgeo 0.3.3 → 0.3.4

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 (167) hide show
  1. data/History.rdoc +6 -0
  2. data/README.rdoc +1 -1
  3. data/Version +1 -1
  4. data/ext/geos_c_impl/extconf.rb +13 -13
  5. data/ext/geos_c_impl/factory.c +30 -18
  6. data/ext/geos_c_impl/factory.h +18 -12
  7. data/ext/geos_c_impl/geometry.c +11 -11
  8. data/ext/geos_c_impl/geometry.h +7 -7
  9. data/ext/geos_c_impl/geometry_collection.c +15 -15
  10. data/ext/geos_c_impl/geometry_collection.h +8 -8
  11. data/ext/geos_c_impl/line_string.c +14 -14
  12. data/ext/geos_c_impl/line_string.h +7 -7
  13. data/ext/geos_c_impl/main.c +7 -7
  14. data/ext/geos_c_impl/point.c +9 -9
  15. data/ext/geos_c_impl/point.h +7 -7
  16. data/ext/geos_c_impl/polygon.c +9 -9
  17. data/ext/geos_c_impl/polygon.h +7 -7
  18. data/ext/geos_c_impl/preface.h +7 -7
  19. data/ext/proj4_c_impl/extconf.rb +13 -13
  20. data/ext/proj4_c_impl/main.c +12 -12
  21. data/lib/rgeo.rb +26 -26
  22. data/lib/rgeo/cartesian.rb +12 -12
  23. data/lib/rgeo/cartesian/analysis.rb +26 -26
  24. data/lib/rgeo/cartesian/bounding_box.rb +83 -83
  25. data/lib/rgeo/cartesian/calculations.rb +36 -36
  26. data/lib/rgeo/cartesian/factory.rb +78 -78
  27. data/lib/rgeo/cartesian/feature_classes.rb +74 -74
  28. data/lib/rgeo/cartesian/feature_methods.rb +34 -34
  29. data/lib/rgeo/cartesian/interface.rb +33 -33
  30. data/lib/rgeo/coord_sys.rb +15 -15
  31. data/lib/rgeo/coord_sys/cs/entities.rb +533 -534
  32. data/lib/rgeo/coord_sys/cs/factories.rb +69 -69
  33. data/lib/rgeo/coord_sys/cs/wkt_parser.rb +44 -44
  34. data/lib/rgeo/coord_sys/proj4.rb +85 -85
  35. data/lib/rgeo/coord_sys/srs_database/active_record_table.rb +31 -31
  36. data/lib/rgeo/coord_sys/srs_database/interface.rb +44 -44
  37. data/lib/rgeo/coord_sys/srs_database/proj4_data.rb +31 -31
  38. data/lib/rgeo/coord_sys/srs_database/sr_org.rb +31 -31
  39. data/lib/rgeo/coord_sys/srs_database/url_reader.rb +29 -29
  40. data/lib/rgeo/error.rb +17 -17
  41. data/lib/rgeo/feature.rb +15 -15
  42. data/lib/rgeo/feature/curve.rb +58 -58
  43. data/lib/rgeo/feature/factory.rb +84 -84
  44. data/lib/rgeo/feature/factory_generator.rb +32 -32
  45. data/lib/rgeo/feature/geometry.rb +215 -215
  46. data/lib/rgeo/feature/geometry_collection.rb +46 -46
  47. data/lib/rgeo/feature/line.rb +21 -21
  48. data/lib/rgeo/feature/line_string.rb +35 -35
  49. data/lib/rgeo/feature/linear_ring.rb +20 -20
  50. data/lib/rgeo/feature/mixins.rb +61 -61
  51. data/lib/rgeo/feature/multi_curve.rb +37 -37
  52. data/lib/rgeo/feature/multi_line_string.rb +20 -20
  53. data/lib/rgeo/feature/multi_point.rb +22 -22
  54. data/lib/rgeo/feature/multi_polygon.rb +28 -28
  55. data/lib/rgeo/feature/multi_surface.rb +39 -39
  56. data/lib/rgeo/feature/point.rb +42 -42
  57. data/lib/rgeo/feature/polygon.rb +50 -50
  58. data/lib/rgeo/feature/surface.rb +42 -42
  59. data/lib/rgeo/feature/types.rb +58 -58
  60. data/lib/rgeo/geographic.rb +14 -14
  61. data/lib/rgeo/geographic/factory.rb +87 -87
  62. data/lib/rgeo/geographic/interface.rb +55 -55
  63. data/lib/rgeo/geographic/proj4_projector.rb +35 -35
  64. data/lib/rgeo/geographic/projected_feature_classes.rb +95 -95
  65. data/lib/rgeo/geographic/projected_feature_methods.rb +81 -81
  66. data/lib/rgeo/geographic/projected_window.rb +103 -103
  67. data/lib/rgeo/geographic/simple_mercator_projector.rb +32 -32
  68. data/lib/rgeo/geographic/spherical_feature_classes.rb +93 -93
  69. data/lib/rgeo/geographic/spherical_feature_methods.rb +25 -25
  70. data/lib/rgeo/geographic/spherical_math.rb +58 -58
  71. data/lib/rgeo/geos.rb +22 -17
  72. data/lib/rgeo/geos/factory.rb +93 -93
  73. data/lib/rgeo/geos/ffi_classes.rb +306 -231
  74. data/lib/rgeo/geos/ffi_factory.rb +100 -96
  75. data/lib/rgeo/geos/impl_additions.rb +22 -22
  76. data/lib/rgeo/geos/interface.rb +45 -45
  77. data/lib/rgeo/geos/zm_factory.rb +90 -90
  78. data/lib/rgeo/geos/zm_impl.rb +167 -167
  79. data/lib/rgeo/impl_helper.rb +11 -11
  80. data/lib/rgeo/impl_helper/basic_geometry_collection_methods.rb +71 -71
  81. data/lib/rgeo/impl_helper/basic_geometry_methods.rb +29 -29
  82. data/lib/rgeo/impl_helper/basic_line_string_methods.rb +61 -61
  83. data/lib/rgeo/impl_helper/basic_point_methods.rb +43 -43
  84. data/lib/rgeo/impl_helper/basic_polygon_methods.rb +35 -35
  85. data/lib/rgeo/impl_helper/math.rb +13 -13
  86. data/lib/rgeo/version.rb +10 -10
  87. data/lib/rgeo/wkrep.rb +16 -16
  88. data/lib/rgeo/wkrep/wkb_generator.rb +51 -51
  89. data/lib/rgeo/wkrep/wkb_parser.rb +52 -52
  90. data/lib/rgeo/wkrep/wkt_generator.rb +51 -51
  91. data/lib/rgeo/wkrep/wkt_parser.rb +66 -66
  92. data/lib/rgeo/yaml.rb +14 -14
  93. data/test/common/geometry_collection_tests.rb +53 -53
  94. data/test/common/line_string_tests.rb +57 -57
  95. data/test/common/multi_line_string_tests.rb +43 -43
  96. data/test/common/multi_point_tests.rb +43 -43
  97. data/test/common/multi_polygon_tests.rb +43 -43
  98. data/test/common/point_tests.rb +75 -75
  99. data/test/common/polygon_tests.rb +37 -37
  100. data/test/coord_sys/tc_active_record_table.rb +25 -25
  101. data/test/coord_sys/tc_ogc_cs.rb +72 -72
  102. data/test/coord_sys/tc_proj4.rb +51 -51
  103. data/test/coord_sys/tc_proj4_srs_data.rb +17 -17
  104. data/test/coord_sys/tc_sr_org.rb +15 -15
  105. data/test/coord_sys/tc_url_reader.rb +19 -19
  106. data/test/geos_capi/tc_factory.rb +21 -21
  107. data/test/geos_capi/tc_geometry_collection.rb +15 -15
  108. data/test/geos_capi/tc_line_string.rb +15 -15
  109. data/test/geos_capi/tc_misc.rb +33 -22
  110. data/test/geos_capi/tc_multi_line_string.rb +15 -15
  111. data/test/geos_capi/tc_multi_point.rb +15 -15
  112. data/test/geos_capi/tc_multi_polygon.rb +15 -15
  113. data/test/geos_capi/tc_parsing_unparsing.rb +19 -19
  114. data/test/geos_capi/tc_point.rb +21 -21
  115. data/test/geos_capi/tc_polygon.rb +19 -19
  116. data/test/geos_capi/tc_zmfactory.rb +17 -17
  117. data/test/geos_ffi/tc_factory.rb +21 -21
  118. data/test/geos_ffi/tc_geometry_collection.rb +15 -15
  119. data/test/geos_ffi/tc_line_string.rb +15 -15
  120. data/test/geos_ffi/tc_misc.rb +49 -15
  121. data/test/geos_ffi/tc_multi_line_string.rb +15 -15
  122. data/test/geos_ffi/tc_multi_point.rb +15 -15
  123. data/test/geos_ffi/tc_multi_polygon.rb +15 -15
  124. data/test/geos_ffi/tc_parsing_unparsing.rb +19 -19
  125. data/test/geos_ffi/tc_point.rb +21 -21
  126. data/test/geos_ffi/tc_polygon.rb +19 -19
  127. data/test/geos_ffi/tc_zmfactory.rb +17 -17
  128. data/test/projected_geographic/tc_geometry_collection.rb +15 -15
  129. data/test/projected_geographic/tc_line_string.rb +15 -15
  130. data/test/projected_geographic/tc_multi_line_string.rb +15 -15
  131. data/test/projected_geographic/tc_multi_point.rb +15 -15
  132. data/test/projected_geographic/tc_multi_polygon.rb +15 -15
  133. data/test/projected_geographic/tc_point.rb +23 -23
  134. data/test/projected_geographic/tc_polygon.rb +15 -15
  135. data/test/simple_cartesian/tc_calculations.rb +31 -31
  136. data/test/simple_cartesian/tc_geometry_collection.rb +17 -17
  137. data/test/simple_cartesian/tc_line_string.rb +17 -17
  138. data/test/simple_cartesian/tc_multi_line_string.rb +17 -17
  139. data/test/simple_cartesian/tc_multi_point.rb +17 -17
  140. data/test/simple_cartesian/tc_multi_polygon.rb +17 -17
  141. data/test/simple_cartesian/tc_point.rb +21 -21
  142. data/test/simple_cartesian/tc_polygon.rb +17 -17
  143. data/test/simple_mercator/tc_geometry_collection.rb +15 -15
  144. data/test/simple_mercator/tc_line_string.rb +15 -15
  145. data/test/simple_mercator/tc_multi_line_string.rb +15 -15
  146. data/test/simple_mercator/tc_multi_point.rb +15 -15
  147. data/test/simple_mercator/tc_multi_polygon.rb +15 -15
  148. data/test/simple_mercator/tc_point.rb +23 -23
  149. data/test/simple_mercator/tc_polygon.rb +15 -15
  150. data/test/simple_mercator/tc_window.rb +50 -50
  151. data/test/spherical_geographic/tc_calculations.rb +47 -47
  152. data/test/spherical_geographic/tc_geometry_collection.rb +17 -17
  153. data/test/spherical_geographic/tc_line_string.rb +17 -17
  154. data/test/spherical_geographic/tc_multi_line_string.rb +17 -17
  155. data/test/spherical_geographic/tc_multi_point.rb +17 -17
  156. data/test/spherical_geographic/tc_multi_polygon.rb +17 -17
  157. data/test/spherical_geographic/tc_point.rb +23 -23
  158. data/test/spherical_geographic/tc_polygon.rb +17 -17
  159. data/test/tc_cartesian_analysis.rb +23 -23
  160. data/test/tc_mixins.rb +39 -39
  161. data/test/tc_oneoff.rb +15 -15
  162. data/test/tc_types.rb +17 -17
  163. data/test/wkrep/tc_wkb_generator.rb +67 -67
  164. data/test/wkrep/tc_wkb_parser.rb +73 -73
  165. data/test/wkrep/tc_wkt_generator.rb +75 -75
  166. data/test/wkrep/tc_wkt_parser.rb +97 -97
  167. metadata +3 -3
@@ -1,15 +1,15 @@
1
1
  # -----------------------------------------------------------------------------
2
- #
2
+ #
3
3
  # Proj4 wrapper for RGeo
4
- #
4
+ #
5
5
  # -----------------------------------------------------------------------------
6
- # Copyright 2010 Daniel Azuma
7
- #
6
+ # Copyright 2010-2012 Daniel Azuma
7
+ #
8
8
  # All rights reserved.
9
- #
9
+ #
10
10
  # Redistribution and use in source and binary forms, with or without
11
11
  # modification, are permitted provided that the following conditions are met:
12
- #
12
+ #
13
13
  # * Redistributions of source code must retain the above copyright notice,
14
14
  # this list of conditions and the following disclaimer.
15
15
  # * Redistributions in binary form must reproduce the above copyright notice,
@@ -18,7 +18,7 @@
18
18
  # * Neither the name of the copyright holder, nor the names of any other
19
19
  # contributors to this software, may be used to endorse or promote products
20
20
  # derived from this software without specific prior written permission.
21
- #
21
+ #
22
22
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
23
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
24
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -35,67 +35,67 @@
35
35
 
36
36
 
37
37
  module RGeo
38
-
38
+
39
39
  module CoordSys
40
-
41
-
40
+
41
+
42
42
  # This is a Ruby wrapper around a Proj4 coordinate system.
43
43
  # It represents a single geographic coordinate system, which may be
44
44
  # a flat projection, a geocentric (3-dimensional) coordinate system,
45
45
  # or a geographic (latitude-longitude) coordinate system.
46
- #
46
+ #
47
47
  # Generally, these are used to define the projection for a
48
48
  # Feature::Factory. You can then convert between coordinate systems
49
49
  # by casting geometries between such factories using the :project
50
50
  # option. You may also use this object directly to perform low-level
51
51
  # coordinate transformations.
52
-
52
+
53
53
  class Proj4
54
-
55
-
54
+
55
+
56
56
  def inspect # :nodoc:
57
57
  "#<#{self.class}:0x#{object_id.to_s(16)} #{canonical_str.inspect}>"
58
58
  end
59
-
60
-
59
+
60
+
61
61
  def to_s # :nodoc:
62
62
  canonical_str
63
63
  end
64
-
65
-
64
+
65
+
66
66
  def hash # :nodoc:
67
67
  canonical_hash.hash
68
68
  end
69
-
70
-
69
+
70
+
71
71
  # Returns true if this Proj4 is equivalent to the given Proj4.
72
- #
72
+ #
73
73
  # Note: this tests for equivalence by comparing only the hash
74
74
  # definitions of the Proj4 objects, and returning true if those
75
75
  # definitions are equivalent. In some cases, this may still return
76
76
  # false even if the actual coordinate systems are identical, since
77
77
  # there are sometimes multiple ways to express a given coordinate
78
78
  # system.
79
-
79
+
80
80
  def eql?(rhs_)
81
81
  rhs_.class == self.class && rhs_.canonical_hash == canonical_hash && rhs_._radians? == _radians?
82
82
  end
83
83
  alias_method :==, :eql?
84
-
85
-
84
+
85
+
86
86
  # Marshal support
87
-
87
+
88
88
  def marshal_dump # :nodoc:
89
89
  {'rad' => radians?, 'str' => original_str || canonical_str}
90
90
  end
91
-
91
+
92
92
  def marshal_load(data_) # :nodoc:
93
93
  _set_value(data_['str'], data_['rad'])
94
94
  end
95
-
96
-
95
+
96
+
97
97
  # Psych support
98
-
98
+
99
99
  def init_with(coder_) # :nodoc:
100
100
  if coder_.type == :scalar
101
101
  _set_value(coder_.scalar, false)
@@ -103,29 +103,29 @@ module RGeo
103
103
  _set_value(coder_['proj4'], coder_['radians'])
104
104
  end
105
105
  end
106
-
106
+
107
107
  def encode_with(coder_) # :nodoc:
108
108
  coder_['proj4'] = original_str || canonical_str
109
109
  coder_['radians'] = radians?
110
110
  end
111
-
112
-
111
+
112
+
113
113
  # Returns the "canonical" string definition for this coordinate
114
114
  # system, as reported by Proj4. This may be slightly different
115
115
  # from the definition used to construct this object.
116
-
116
+
117
117
  def canonical_str
118
118
  unless defined?(@canonical_str)
119
119
  @canonical_str = _canonical_str
120
120
  end
121
121
  @canonical_str
122
122
  end
123
-
124
-
123
+
124
+
125
125
  # Returns the "canonical" hash definition for this coordinate
126
126
  # system, as reported by Proj4. This may be slightly different
127
127
  # from the definition used to construct this object.
128
-
128
+
129
129
  def canonical_hash
130
130
  unless defined?(@canonical_hash)
131
131
  @canonical_hash = {}
@@ -137,68 +137,68 @@ module RGeo
137
137
  end
138
138
  @canonical_hash
139
139
  end
140
-
141
-
140
+
141
+
142
142
  # Returns the string definition originally used to construct this
143
143
  # object. Returns nil if this object wasn't created by a string
144
144
  # definition; i.e. if it was created using get_geographic.
145
-
145
+
146
146
  def original_str
147
147
  _original_str
148
148
  end
149
-
150
-
149
+
150
+
151
151
  # Returns true if this Proj4 object is a geographic (lat-long)
152
152
  # coordinate system.
153
-
153
+
154
154
  def geographic?
155
155
  _geographic?
156
156
  end
157
-
158
-
157
+
158
+
159
159
  # Returns true if this Proj4 object is a geocentric (3dz)
160
160
  # coordinate system.
161
-
161
+
162
162
  def geocentric?
163
163
  _geocentric?
164
164
  end
165
-
166
-
165
+
166
+
167
167
  # Returns true if this Proj4 object uses radians rather than degrees
168
168
  # if it is a geographic coordinate system.
169
-
169
+
170
170
  def radians?
171
171
  _radians?
172
172
  end
173
-
174
-
173
+
174
+
175
175
  # Get the geographic (unprojected lat-long) coordinate system
176
176
  # corresponding to this coordinate system; i.e. the one that uses
177
177
  # the same ellipsoid and datum.
178
-
178
+
179
179
  def get_geographic
180
180
  _get_geographic
181
181
  end
182
-
183
-
182
+
183
+
184
184
  class << self
185
-
186
-
185
+
186
+
187
187
  # Returns true if Proj4 is supported in this installation.
188
188
  # If this returns false, the other methods such as create
189
189
  # will not work.
190
-
190
+
191
191
  def supported?
192
192
  respond_to?(:_create)
193
193
  end
194
-
195
-
194
+
195
+
196
196
  # Create a new Proj4 object, given a definition, which may be
197
197
  # either a string or a hash. Returns nil if the given definition
198
198
  # is invalid or Proj4 is not supported.
199
- #
199
+ #
200
200
  # Recognized options include:
201
- #
201
+ #
202
202
  # [<tt>:radians</tt>]
203
203
  # If set to true, then this proj4 will represent geographic
204
204
  # (latitude/longitude) coordinates in radians rather than
@@ -209,7 +209,7 @@ module RGeo
209
209
  # radians as its units. If this is a geocentric or other type of
210
210
  # coordinate system, this has no effect. Default is false.
211
211
  # (That is all coordinates are in degrees by default.)
212
-
212
+
213
213
  def create(defn_, opts_={})
214
214
  result_ = nil
215
215
  if supported?
@@ -224,14 +224,14 @@ module RGeo
224
224
  end
225
225
  result_
226
226
  end
227
-
228
-
227
+
228
+
229
229
  # Create a new Proj4 object, given a definition, which may be
230
230
  # either a string or a hash. Raises Error::UnsupportedOperation
231
231
  # if the given definition is invalid or Proj4 is not supported.
232
- #
232
+ #
233
233
  # Recognized options include:
234
- #
234
+ #
235
235
  # [<tt>:radians</tt>]
236
236
  # If set to true, then this proj4 will represent geographic
237
237
  # (latitude/longitude) coordinates in radians rather than
@@ -242,7 +242,7 @@ module RGeo
242
242
  # radians as its units. If this is a geocentric or other type of
243
243
  # coordinate system, this has no effect. Default is false.
244
244
  # (That is all coordinates are in degrees by default.)
245
-
245
+
246
246
  def new(defn_, opts_={})
247
247
  result_ = create(defn_, opts_)
248
248
  unless result_
@@ -250,13 +250,13 @@ module RGeo
250
250
  end
251
251
  result_
252
252
  end
253
-
254
-
253
+
254
+
255
255
  # Low-level coordinate transform method.
256
256
  # Transforms the given coordinate (x, y, [z]) from one proj4
257
257
  # coordinate system to another. Returns an array with either two
258
258
  # or three elements.
259
-
259
+
260
260
  def transform_coords(from_proj_, to_proj_, x_, y_, z_=nil)
261
261
  if !from_proj_._radians? && from_proj_._geographic?
262
262
  x_ *= ImplHelper::Math::RADIANS_PER_DEGREE
@@ -269,14 +269,14 @@ module RGeo
269
269
  end
270
270
  result_
271
271
  end
272
-
273
-
272
+
273
+
274
274
  # Low-level geometry transform method.
275
275
  # Transforms the given geometry between the given two projections.
276
276
  # The resulting geometry is constructed using the to_factory.
277
277
  # Any projections associated with the factories themselves are
278
278
  # ignored.
279
-
279
+
280
280
  def transform(from_proj_, from_geometry_, to_proj_, to_factory_)
281
281
  case from_geometry_
282
282
  when Feature::Point
@@ -299,8 +299,8 @@ module RGeo
299
299
  to_factory_.collection(from_geometry_.map{ |g_| transform(from_proj_, g_, to_proj_, to_factory_) })
300
300
  end
301
301
  end
302
-
303
-
302
+
303
+
304
304
  def _transform_point(from_proj_, from_point_, to_proj_, to_factory_) # :nodoc:
305
305
  from_factory_ = from_point_.factory
306
306
  from_has_z_ = from_factory_.property(:has_z_coordinate)
@@ -327,26 +327,26 @@ module RGeo
327
327
  nil
328
328
  end
329
329
  end
330
-
331
-
330
+
331
+
332
332
  def _transform_linear_ring(from_proj_, from_ring_, to_proj_, to_factory_) # :nodoc:
333
333
  to_factory_.linear_ring(from_ring_.points[0..-2].map{ |p_| _transform_point(from_proj_, p_, to_proj_, to_factory_) })
334
334
  end
335
-
336
-
335
+
336
+
337
337
  def _transform_polygon(from_proj_, from_polygon_, to_proj_, to_factory_) # :nodoc:
338
338
  ext_ = _transform_linear_ring(from_proj_, from_polygon_.exterior_ring, to_proj_, to_factory_)
339
339
  int_ = from_polygon_.interior_rings.map{ |r_| _transform_linear_ring(from_proj_, r_, to_proj_, to_factory_) }
340
340
  to_factory_.polygon(ext_, int_)
341
341
  end
342
-
343
-
342
+
343
+
344
344
  end
345
-
346
-
345
+
346
+
347
347
  end
348
-
349
-
348
+
349
+
350
350
  end
351
-
351
+
352
352
  end
@@ -1,15 +1,15 @@
1
1
  # -----------------------------------------------------------------------------
2
- #
2
+ #
3
3
  # SRS database interface
4
- #
4
+ #
5
5
  # -----------------------------------------------------------------------------
6
- # Copyright 2010 Daniel Azuma
7
- #
6
+ # Copyright 2010-2012 Daniel Azuma
7
+ #
8
8
  # All rights reserved.
9
- #
9
+ #
10
10
  # Redistribution and use in source and binary forms, with or without
11
11
  # modification, are permitted provided that the following conditions are met:
12
- #
12
+ #
13
13
  # * Redistributions of source code must retain the above copyright notice,
14
14
  # this list of conditions and the following disclaimer.
15
15
  # * Redistributions in binary form must reproduce the above copyright notice,
@@ -18,7 +18,7 @@
18
18
  # * Neither the name of the copyright holder, nor the names of any other
19
19
  # contributors to this software, may be used to endorse or promote products
20
20
  # derived from this software without specific prior written permission.
21
- #
21
+ #
22
22
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
23
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
24
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -35,26 +35,26 @@
35
35
 
36
36
 
37
37
  module RGeo
38
-
38
+
39
39
  module CoordSys
40
-
40
+
41
41
  module SRSDatabase
42
-
43
-
42
+
43
+
44
44
  # A spatial reference database implementation that uses ActiveRecord
45
45
  # to access a spatial reference table provided by a spatial database
46
46
  # implementation. You can use this class to obtain coordinate system
47
47
  # information from your installation of, e.g. PostGIS.
48
-
48
+
49
49
  class ActiveRecordTable
50
-
50
+
51
51
  @@class_counter = 0
52
-
53
-
52
+
53
+
54
54
  # Create a new ActiveRecord-backed database connection.
55
- #
55
+ #
56
56
  # Options include:
57
- #
57
+ #
58
58
  # [<tt>:ar_class</tt>]
59
59
  # An ActiveRecord class to use. You may provide this if you
60
60
  # already have an ActiveRecord class that accesses the table.
@@ -109,7 +109,7 @@ module RGeo
109
109
  # If set to true, entries are cached when first retrieved, so
110
110
  # subsequent requests do not have to make a database round trip.
111
111
  # Default is false.
112
- #
112
+ #
113
113
  # Some option settings may be provided by the ActiveRecord
114
114
  # connection adapter, if the ActiveRecord class's connection uses
115
115
  # an adapter that is RGeo-savvy. The "postgis" and "spatialite"
@@ -118,7 +118,7 @@ module RGeo
118
118
  # the database-provided spatial reference table as defaults.
119
119
  # However, you can still override those settings if you want to
120
120
  # use a custom table.
121
-
121
+
122
122
  def initialize(opts_={})
123
123
  @cache = opts_[:cache] ? {} : nil
124
124
  @ar_class = opts_[:ar_class]
@@ -148,10 +148,10 @@ module RGeo
148
148
  @srtext_column = opts_[:srtext_column]
149
149
  @proj4text_column = opts_[:proj4text_column]
150
150
  end
151
-
152
-
151
+
152
+
153
153
  # Retrieve an Entry given an integer SRID.
154
-
154
+
155
155
  def get(ident_)
156
156
  ident_ = ident_.to_i
157
157
  return @cache[ident_] if @cache && @cache.include?(ident_)
@@ -175,20 +175,20 @@ module RGeo
175
175
  @cache[ident_] = result_ if @cache
176
176
  result_
177
177
  end
178
-
179
-
178
+
179
+
180
180
  # Clears the cache if a cache is active.
181
-
181
+
182
182
  def clear_cache
183
183
  @cache.clear if @cache
184
184
  end
185
-
186
-
185
+
186
+
187
187
  end
188
-
189
-
188
+
189
+
190
190
  end
191
-
191
+
192
192
  end
193
-
193
+
194
194
  end