rgeo 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
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