georuby 2.2.0 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18405683e03e3da7a272be360c5bb5c8bff05a25
4
- data.tar.gz: 5ceefaf8c76fdf9f8d9b47b54ec1530b8eb485b4
3
+ metadata.gz: 1df3941993b62765a00e7f70707184ef283c189a
4
+ data.tar.gz: 14626bcff00c29e6ac59747d54501e2d0e5b4be7
5
5
  SHA512:
6
- metadata.gz: c4a344a8b430b5bdf67e3f90c5f4b9327d53a69eb23ef87b3bdebfe97bf65c7ab4ebee285f970e5b1ae61896a7622f2c0deb237d268a3c54b2a4f39d1d0a7ed3
7
- data.tar.gz: bbd50a644084b9f1e60cd128438cd7f33b88e9de603263553be23a47528f917b0e7d2c1de8f0d3d3588d08515a16aeeca6cd925fa03d065f06dea9ddad437730
6
+ metadata.gz: 98448b91aa33033dc06db092a68e72d1e04a0dcad9c895cd34953c78acc9da96c28adbb74d3c951c835a98c2f01cfaa658d1f9028f127e282f05bc89c7dc7ff5
7
+ data.tar.gz: 2bba7b1eed46c75f3871508f82b4015803eef2617d1d474fcfe4dd3c7830c054d9a88c9f6e5b5e5121cb43da9129d376366a0d94c1ae0dc542d72cad404c8c78
@@ -37,7 +37,7 @@ module GeoRuby
37
37
  output[:geometry] = geometry
38
38
  output[:properties] = properties
39
39
  output[:id] = id unless id.nil?
40
- output.to_json(options)
40
+ output.as_json(options)
41
41
  end
42
42
 
43
43
  def to_json(options = {})
@@ -55,7 +55,7 @@ module GeoRuby
55
55
 
56
56
  #Zoom level
57
57
  def zoom
58
- distance = lower_corner.spherical_distance(upper_corner)/10000
58
+ distance = lower_corner.spherical_distance(upper_corner) / 10_000
59
59
  @zoom = case distance
60
60
  when 150..9000 then 5
61
61
  when 80..149 then 6
@@ -156,7 +156,7 @@ module GeoRuby
156
156
  end
157
157
 
158
158
  #Creates a new envelope. Accept a sequence of point coordinates as argument : ((x,y),(x,y))
159
- def self.from_coordinates(points,srid=DEFAULT_SRID,with_z=false)
159
+ def self.from_coordinates(points, srid = DEFAULT_SRID, with_z = false)
160
160
  e = Envelope.new(srid,with_z)
161
161
  e.lower_corner, e.upper_corner = points.collect{|point_coords| Point.from_coordinates(point_coords,srid,with_z)}
162
162
  e
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- require "geo_ruby/simple_features/geometry"
2
+ require 'geo_ruby/simple_features/geometry'
3
3
 
4
4
  module GeoRuby
5
5
  module SimpleFeatures
@@ -10,7 +10,8 @@ module GeoRuby
10
10
  attr_accessor :x,:y,:z,:m
11
11
  attr_reader :r, :t # radium and theta
12
12
 
13
- # if you prefer calling the coordinates lat and lon (or lng, for GeoKit compatibility)
13
+ # If you prefer calling the coordinates lat and lon
14
+ # (or lng, for GeoKit compatibility)
14
15
  alias :lon :x
15
16
  alias :lng :x
16
17
  alias :lat :y
@@ -21,10 +22,12 @@ module GeoRuby
21
22
  def initialize(srid = DEFAULT_SRID, with_z = false, with_m = false)
22
23
  super(srid, with_z, with_m)
23
24
  @x = @y = 0.0
24
- @z=0.0 #default value : meaningful if with_z
25
- @m=0.0 #default value : meaningful if with_m
25
+ @z = 0.0 #default value : meaningful if with_z
26
+ @m = 0.0 #default value : meaningful if with_m
26
27
  end
27
- #sets all coordinates in one call. Use the +m+ accessor to set the m.
28
+
29
+ # Sets all coordinates in one call.
30
+ # Use the +m+ accessor to set the m.
28
31
  def set_x_y_z(x, y, z)
29
32
  @x = x && !x.is_a?(Numeric) ? x.to_f : x
30
33
  @y = y && !y.is_a?(Numeric) ? y.to_f : y
@@ -33,7 +36,7 @@ module GeoRuby
33
36
  end
34
37
  alias :set_lon_lat_z :set_x_y_z
35
38
 
36
- #sets all coordinates of a 2D point in one call
39
+ # Sets all coordinates of a 2D point in one call
37
40
  def set_x_y(x, y)
38
41
  @x = x && !x.is_a?(Numeric) ? x.to_f : x
39
42
  @y = y && !y.is_a?(Numeric) ? y.to_f : y
@@ -41,21 +44,26 @@ module GeoRuby
41
44
  end
42
45
  alias :set_lon_lat :set_x_y
43
46
 
44
- # Return the distance between the 2D points (ie taking care only of the x and y coordinates), assuming
45
- # the points are in projected coordinates. Euclidian distance in whatever unit the x and y ordinates are.
47
+ # Return the distance between the 2D points (ie taking care only
48
+ # of the x and y coordinates), assuming the points are in
49
+ # projected coordinates.
50
+ #
51
+ # Euclidian distance in whatever unit the x and y ordinates are.
46
52
  def euclidian_distance(point)
47
53
  Math.sqrt((point.x - x)**2 + (point.y - y)**2)
48
54
  end
49
55
 
50
56
  # Spherical distance in meters, using 'Haversine' formula.
51
57
  # with a radius of 6471000m
52
- # Assumes x is the lon and y the lat, in degrees (Changed in version 1.1).
53
- # The user has to make sure using this distance makes sense (ie she should be in latlon coordinates)
58
+ # Assumes x is the lon and y the lat, in degrees.
59
+ # The user has to make sure using this distance makes sense
60
+ # (ie she should be in latlon coordinates)
54
61
  def spherical_distance(point, r = 6370997.0)
55
62
  dlat = (point.lat - lat) * DEG2RAD / 2
56
63
  dlon = (point.lon - lon) * DEG2RAD / 2
57
64
 
58
- a = Math.sin(dlat)**2 + Math.cos(lat * DEG2RAD) * Math.cos(point.lat * DEG2RAD) * Math.sin(dlon)**2
65
+ a = Math.sin(dlat)**2 + Math.cos(lat * DEG2RAD) *
66
+ Math.cos(point.lat * DEG2RAD) * Math.sin(dlon)**2
59
67
  c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a))
60
68
  r * c
61
69
  end
@@ -65,7 +73,7 @@ module GeoRuby
65
73
  # b is the semi-minor axis (polar radius) of the ellipsoid
66
74
  # Their values by default are set to the ones of the WGS84 ellipsoid
67
75
  def ellipsoidal_distance(point, a = 6378137.0, b = 6356752.3142)
68
- f = (a-b) / a
76
+ f = (a - b) / a
69
77
  l = (point.lon - lon) * DEG2RAD
70
78
 
71
79
  u1 = Math.atan((1-f) * Math.tan(lat * DEG2RAD ))
@@ -79,33 +87,43 @@ module GeoRuby
79
87
  lambdaP = 2 * Math::PI
80
88
  iterLimit = 20
81
89
 
82
- while (lambda-lambdaP).abs > 1e-12 && --iterLimit>0
90
+ while (lambda - lambdaP).abs > 1e-12 && --iterLimit > 0
83
91
  sinLambda = Math.sin(lambda)
84
92
  cosLambda = Math.cos(lambda)
85
- sinSigma = Math.sqrt((cosU2*sinLambda) * (cosU2*sinLambda) + (cosU1*sinU2-sinU1*cosU2*cosLambda) * (cosU1*sinU2-sinU1*cosU2*cosLambda))
93
+ sinSigma =\
94
+ Math.sqrt((cosU2 * sinLambda) * (cosU2 * sinLambda) +
95
+ (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) *
96
+ (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda))
86
97
 
87
- return 0 if sinSigma == 0 #coincident points
98
+ return 0 if sinSigma == 0 # coincident points
88
99
 
89
- cosSigma = sinU1*sinU2 + cosU1*cosU2*cosLambda
90
- sigma = Math.atan2(sinSigma, cosSigma)
91
- sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma
92
- cosSqAlpha = 1 - sinAlpha*sinAlpha
93
- cos2SigmaM = cosSigma - 2*sinU1*sinU2/cosSqAlpha
100
+ cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda
101
+ sigma = Math.atan2(sinSigma, cosSigma)
102
+ sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma
103
+ cosSqAlpha = 1 - sinAlpha * sinAlpha
104
+ cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSqAlpha
94
105
 
95
- cos2SigmaM = 0 if (cos2SigmaM.nan?) #equatorial line: cosSqAlpha=0
106
+ # equatorial line: cosSqAlpha=0
107
+ cos2SigmaM = 0 if (cos2SigmaM.nan?)
96
108
 
97
- c = f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha))
109
+ c = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha))
98
110
  lambdaP = lambda
99
- lambda = l + (1-c) * f * sinAlpha * (sigma + c * sinSigma * (cos2SigmaM + c * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)))
111
+ lambda = l + (1 - c) * f * sinAlpha * (sigma + c * sinSigma *
112
+ (cos2SigmaM + c * cosSigma * (-1 + 2 * cos2SigmaM *
113
+ cos2SigmaM)))
100
114
  end
115
+
101
116
  return NaN if iterLimit==0 #formula failed to converge
102
117
 
103
118
  uSq = cosSqAlpha * (a*a - b*b) / (b*b)
104
119
  a_bis = 1 + uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)))
105
- b_bis = uSq/1024 * (256+uSq*(-128+uSq*(74-47*uSq)))
106
- deltaSigma = b_bis * sinSigma*(cos2SigmaM + b_bis/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)- b_bis/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)))
120
+ b_bis = uSq/1024 * (256+uSq*(-128 + uSq * (74 - 47 * uSq)))
121
+ deltaSigma = b_bis * sinSigma * (cos2SigmaM + b_bis / 4 *
122
+ (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) - b_bis / 6 *
123
+ cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 *
124
+ cos2SigmaM * cos2SigmaM)))
107
125
 
108
- b*a_bis*(sigma-deltaSigma)
126
+ b * a_bis * (sigma - deltaSigma)
109
127
  end
110
128
 
111
129
  # Orthogonal Distance
@@ -120,13 +138,14 @@ module GeoRuby
120
138
  return 0.0 if len.zero?
121
139
  res = dot / len
122
140
 
123
- xx, yy = if res < 0
124
- [head.x, head.y]
125
- elsif res > 1
126
- [tail.x, tail.y]
127
- else
128
- [head.x + res * c, head.y + res * d]
129
- end
141
+ xx, yy =\
142
+ if res < 0
143
+ [head.x, head.y]
144
+ elsif res > 1
145
+ [tail.x, tail.y]
146
+ else
147
+ [head.x + res * c, head.y + res * d]
148
+ end
130
149
  # todo benchmark if worth creating an instance
131
150
  # euclidian_distance(Point.from_x_y(xx, yy))
132
151
  Math.sqrt((@x - xx) ** 2 + (@y - yy) ** 2)
@@ -158,10 +177,10 @@ module GeoRuby
158
177
 
159
178
  # Bounding box in 2D/3D. Returns an array of 2 points
160
179
  def bounding_box
161
- unless with_z
162
- [Point.from_x_y(@x,@y),Point.from_x_y(@x,@y)]
163
- else
180
+ if with_z
164
181
  [Point.from_x_y_z(@x,@y,@z),Point.from_x_y_z(@x,@y,@z)]
182
+ else
183
+ [Point.from_x_y(@x,@y),Point.from_x_y(@x,@y)]
165
184
  end
166
185
  end
167
186
 
@@ -172,14 +191,14 @@ module GeoRuby
172
191
  # Tests the equality of the position of points + m
173
192
  def ==(other)
174
193
  return false unless other.kind_of?(Point)
175
- @x == other.x and @y == other.y and @z == other.z and @m == other.m
194
+ @x == other.x && @y == other.y && @z == other.z && @m == other.m
176
195
  end
177
196
 
178
197
  # Binary representation of a point. It lacks some headers to be a valid EWKB representation.
179
198
  def binary_representation(allow_z=true,allow_m=true) #:nodoc:
180
- bin_rep = [@x.to_f,@y.to_f].pack("EE")
181
- bin_rep += [@z.to_f].pack("E") if @with_z and allow_z #Default value so no crash
182
- bin_rep += [@m.to_f].pack("E") if @with_m and allow_m #idem
199
+ bin_rep = [@x.to_f,@y.to_f].pack('EE')
200
+ bin_rep += [@z.to_f].pack('E') if @with_z && allow_z #Default value so no crash
201
+ bin_rep += [@m.to_f].pack('E') if @with_m && allow_m #idem
183
202
  bin_rep
184
203
  end
185
204
 
@@ -191,14 +210,14 @@ module GeoRuby
191
210
  # Text representation of a point
192
211
  def text_representation(allow_z=true,allow_m=true) #:nodoc:
193
212
  tex_rep = "#{@x} #{@y}"
194
- tex_rep += " #{@z}" if @with_z and allow_z
195
- tex_rep += " #{@m}" if @with_m and allow_m
213
+ tex_rep += " #{@z}" if @with_z && allow_z
214
+ tex_rep += " #{@m}" if @with_m && allow_m
196
215
  tex_rep
197
216
  end
198
217
 
199
218
  # WKT geometry type of a point
200
219
  def text_geometry_type #:nodoc:
201
- "POINT"
220
+ 'POINT'
202
221
  end
203
222
 
204
223
  # georss simple representation
@@ -223,9 +242,12 @@ module GeoRuby
223
242
  out += "</#{gml_ns}:pos>\n</#{gml_ns}:Point>\n</#{georss_ns}:where>\n"
224
243
  end
225
244
 
226
- # outputs the geometry in kml format : options are <tt>:id</tt>, <tt>:tesselate</tt>, <tt>:extrude</tt>,
227
- # <tt>:altitude_mode</tt>. If the altitude_mode option is not present, the Z (if present) will not be output (since
228
- # it won't be used by GE anyway: clampToGround is the default)
245
+ # outputs the geometry in kml format : options are
246
+ # <tt>:id</tt>, <tt>:tesselate</tt>, <tt>:extrude</tt>,
247
+ # <tt>:altitude_mode</tt>.
248
+ # If the altitude_mode option is not present, the Z (if present)
249
+ # will not be output (since it won't be used by GE anyway:
250
+ # clampToGround is the default)
229
251
  def kml_representation(options = {}) #:nodoc:
230
252
  out = "<Point#{options[:id_attr]}>\n"
231
253
  out += options[:geom_data] if options[:geom_data]
@@ -237,10 +259,10 @@ module GeoRuby
237
259
 
238
260
  def html_representation(options = {})
239
261
  options[:coord] = true if options[:coord].nil?
240
- out = "<span class='geo'>"
262
+ out = '<span class=\'geo\'>'
241
263
  out += "<abbr class='latitude' title='#{x}'>#{as_lat(options)}</abbr>"
242
264
  out += "<abbr class='longitude' title='#{y}'>#{as_long(options)}</abbr>"
243
- out += "</span>"
265
+ out += '</span>'
244
266
  end
245
267
 
246
268
  # Human representation of the geom, don't use directly, use:
@@ -249,12 +271,12 @@ module GeoRuby
249
271
  g.map do |k, v|
250
272
  deg = v.to_i.abs
251
273
  min = (60 * (v.abs - deg)).to_i
252
- labs = (v * 1000000).abs / 1000000
253
- sec = ((((labs - labs.to_i) * 60) - ((labs - labs.to_i) * 60).to_i) * 100000) * 60 / 100000
274
+ labs = (v * 1_000_000).abs / 1_000_000
275
+ sec = ((((labs - labs.to_i) * 60) - ((labs - labs.to_i) * 60).to_i) * 100_000) * 60 / 100_000
254
276
  str = options[:full] ? "%.i°%.2i′%05.2f″" : "%.i°%.2i′%02.0f″"
255
277
  if options[:coord]
256
278
  out = str % [deg,min,sec]
257
- out += k == :x ? v > 0 ? "N" : "S" : v > 0 ? "E" : "W"
279
+ out += k == :x ? v > 0 ? 'N' : 'S' : v > 0 ? 'E' : 'W'
258
280
  else
259
281
  str % [v.to_i, min, sec]
260
282
  end
@@ -277,7 +299,7 @@ module GeoRuby
277
299
  # Outputs the geometry in coordinates format:
278
300
  # 47°52′48″, -20°06′00″
279
301
  def as_latlong(options = {})
280
- human_representation(options).join(", ")
302
+ human_representation(options).join(', ')
281
303
  end
282
304
  alias :as_ll :as_latlong
283
305
 
@@ -286,9 +308,11 @@ module GeoRuby
286
308
  # http://www.engineeringtoolbox.com/converting-cartesian-polar-coordinates-d_1347.html
287
309
  # http://rcoordinate.rubyforge.org/svn/point.rb
288
310
  # outputs radium
289
- def r; Math.sqrt(@x**2 + @y**2); end
311
+ def r
312
+ Math.sqrt(@x**2 + @y**2)
313
+ end
290
314
 
291
- # outputs theta
315
+ # Outputs theta
292
316
  def theta_rad
293
317
  if @x.zero?
294
318
  @y < 0 ? 3 * HALFPI : HALFPI
@@ -298,13 +322,17 @@ module GeoRuby
298
322
  end
299
323
  end
300
324
 
301
- # outputs theta in degrees
302
- def theta_deg; theta_rad / DEG2RAD; end
325
+ # Outputs theta in degrees
326
+ def theta_deg
327
+ theta_rad / DEG2RAD
328
+ end
303
329
 
304
- # outputs an array containing polar distance and theta
305
- def as_polar; [r,t]; end
330
+ # Outputs an array containing polar distance and theta
331
+ def as_polar
332
+ [r, t]
333
+ end
306
334
 
307
- # invert signal of all coordinates
335
+ # Invert signal of all coordinates
308
336
  def -@
309
337
  set_x_y_z(-@x, -@y, -@z)
310
338
  end
@@ -312,86 +340,95 @@ module GeoRuby
312
340
  # TODO Perhaps should support with_m analogous to from_coordinates?
313
341
  def to_coordinates
314
342
  if with_z
315
- [x,y,z]
343
+ [x, y, z]
316
344
  else
317
- [x,y]
345
+ [x, y]
318
346
  end
319
347
  end
320
348
 
349
+ # Simple helper for 2D maps
350
+ def to_xy
351
+ [x, y]
352
+ end
353
+
354
+ # Simple helper for 3D maps
355
+ def to_xyz
356
+ [x, y, z]
357
+ end
358
+
321
359
  def as_json(options = {})
322
- {:type => 'Point',
323
- :coordinates => self.to_coordinates}
360
+ { :type => 'Point', :coordinates => self.to_coordinates }
324
361
  end
325
362
 
326
- # simple geojson representation
363
+ # Simple geojson representation
327
364
  # TODO add CRS / SRID support?
328
365
  def to_json(options = {})
329
366
  as_json(options).to_json(options)
330
367
  end
331
368
  alias :as_geojson :to_json
332
369
 
333
- #creates a point from an array of coordinates
334
- def self.from_coordinates(coords,srid=DEFAULT_SRID,with_z=false,with_m=false)
335
- if ! (with_z or with_m)
336
- from_x_y(coords[0],coords[1],srid)
337
- elsif with_z and with_m
338
- from_x_y_z_m(coords[0],coords[1],coords[2],coords[3],srid)
370
+ # Creates a point from an array of coordinates
371
+ def self.from_coordinates(coords, srid = DEFAULT_SRID, with_z = false, with_m = false)
372
+ if ! (with_z || with_m)
373
+ from_x_y(coords[0], coords[1], srid)
374
+ elsif with_z && with_m
375
+ from_x_y_z_m(coords[0], coords[1], coords[2], coords[3], srid)
339
376
  elsif with_z
340
- from_x_y_z(coords[0],coords[1],coords[2],srid)
377
+ from_x_y_z(coords[0], coords[1], coords[2], srid)
341
378
  else
342
- from_x_y_m(coords[0],coords[1],coords[2],srid)
379
+ from_x_y_m(coords[0], coords[1], coords[2], srid)
343
380
  end
344
381
  end
345
382
 
346
- #creates a point from the X and Y coordinates
347
- def self.from_x_y(x, y, srid=DEFAULT_SRID)
348
- point= new(srid)
349
- point.set_x_y(x,y)
383
+ # Creates a point from the X and Y coordinates
384
+ def self.from_x_y(x, y, srid = DEFAULT_SRID)
385
+ point = new(srid)
386
+ point.set_x_y(x, y)
350
387
  end
351
388
 
352
- #creates a point from the X, Y and Z coordinates
353
- def self.from_x_y_z(x, y, z, srid=DEFAULT_SRID)
354
- point= new(srid,true)
355
- point.set_x_y_z(x,y,z)
389
+ # Creates a point from the X, Y and Z coordinates
390
+ def self.from_x_y_z(x, y, z, srid = DEFAULT_SRID)
391
+ point = new(srid, true)
392
+ point.set_x_y_z(x, y, z)
356
393
  end
357
394
 
358
- #creates a point from the X, Y and M coordinates
359
- def self.from_x_y_m(x, y, m, srid=DEFAULT_SRID)
360
- point= new(srid,false,true)
361
- point.m=m
362
- point.set_x_y(x,y)
395
+ # Creates a point from the X, Y and M coordinates
396
+ def self.from_x_y_m(x, y, m, srid = DEFAULT_SRID)
397
+ point = new(srid, false, true)
398
+ point.m = m
399
+ point.set_x_y(x, y)
363
400
  end
364
401
 
365
- #creates a point from the X, Y, Z and M coordinates
366
- def self.from_x_y_z_m(x, y, z, m, srid=DEFAULT_SRID)
367
- point= new(srid,true,true)
368
- point.m=m
369
- point.set_x_y_z(x,y,z)
402
+ # Creates a point from the X, Y, Z and M coordinates
403
+ def self.from_x_y_z_m(x, y, z, m, srid = DEFAULT_SRID)
404
+ point = new(srid, true, true)
405
+ point.m = m
406
+ point.set_x_y_z(x, y, z)
370
407
  end
371
408
 
372
- #creates a point using polar coordinates
373
- #r and theta(degrees)
374
- def self.from_r_t(r, t, srid=DEFAULT_SRID)
409
+ # Creates a point using polar coordinates
410
+ # r and theta(degrees)
411
+ def self.from_r_t(r, t, srid = DEFAULT_SRID)
375
412
  t *= DEG2RAD
376
413
  x = r * Math.cos(t)
377
414
  y = r * Math.sin(t)
378
- point= new(srid)
379
- point.set_x_y(x,y)
415
+ point = new(srid)
416
+ point.set_x_y(x, y)
380
417
  end
381
418
 
382
- #creates a point using coordinates like 22`34 23.45N
383
- def self.from_latlong(lat, lon, srid=DEFAULT_SRID)
384
- p = [lat,lon].map do |l|
419
+ # Creates a point using coordinates like 22`34 23.45N
420
+ def self.from_latlong(lat, lon, srid = DEFAULT_SRID)
421
+ p = [lat, lon].map do |l|
385
422
  sig, deg, min, sec, cen = l.scan(/(-)?(\d{1,2})\D*(\d{2})\D*(\d{2})(\D*(\d{1,3}))?/).flatten
386
423
  sig = true if l =~ /W|S/
387
424
  dec = deg.to_i + (min.to_i * 60 + "#{sec}#{cen}".to_f) / 3600
388
425
  sig ? dec * -1 : dec
389
426
  end
390
- point= new(srid)
391
- point.set_x_y(p[0],p[1])
427
+ point = new(srid)
428
+ point.set_x_y(p[0], p[1])
392
429
  end
393
430
 
394
- #aliasing the constructors in case you want to use lat/lon instead of y/x
431
+ # Aliasing the constructors in case you like lat/lon instead of y/x
395
432
  class << self
396
433
  alias :xy :from_x_y
397
434
  alias :from_xy :from_x_y
@@ -1,3 +1,3 @@
1
1
  module GeoRuby
2
- VERSION = '2.2.0'
2
+ VERSION = '2.2.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: georuby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guilhem Vellut
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-11-06 00:00:00.000000000 Z
14
+ date: 2013-11-13 00:00:00.000000000 Z
15
15
  dependencies: []
16
16
  description: GeoRuby provides geometric data types from the OGC 'Simple Features'
17
17
  specification.