geo_calc 0.7.3 → 0.7.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.
data/Gemfile CHANGED
@@ -2,16 +2,17 @@ source "http://rubygems.org"
2
2
 
3
3
  gem "require_all", "~> 1.2.0"
4
4
  gem "sugar-high", "~> 0.4.6.3"
5
- gem "geo_units", ">= 0.2.0"
5
+ gem "geo_units", "~> 0.2.1"
6
6
  gem 'i18n'
7
7
  gem 'activesupport', '>= 3.0.1'
8
8
 
9
9
  # Add dependencies to develop your gem here.
10
10
  # Include everything needed to run rake, tests, features, etc.
11
11
  group :development do
12
- gem "rspec", ">= 2.5.0"
13
- gem "bundler", ">= 1"
14
- gem "jeweler", ">= 1.5.2"
15
- gem "rcov", ">= 0"
16
- gem "rake", ">= 0.9"
12
+ gem "geo_point", ">= 0.2.1"
13
+ gem "rspec", ">= 2.5.0"
14
+ gem "bundler", ">= 1"
15
+ gem "jeweler", ">= 1.5.2"
16
+ gem "rcov", ">= 0"
17
+ gem "rake", ">= 0.9"
17
18
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.3
1
+ 0.7.4
data/geo_calc.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{geo_calc}
8
- s.version = "0.7.3"
8
+ s.version = "0.7.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Kristian Mandrup}]
12
- s.date = %q{2011-06-13}
12
+ s.date = %q{2011-06-19}
13
13
  s.description = %q{Geo calculations in ruby and javascript}
14
14
  s.email = %q{kmandrup@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -39,6 +39,7 @@ Gem::Specification.new do |s|
39
39
  "lib/geo_calc/extensions/hash.rb",
40
40
  "lib/geo_calc/extensions/string.rb",
41
41
  "lib/geo_calc/extensions/symbol.rb",
42
+ "lib/geo_calc/geo_calculations.rb",
42
43
  "lib/geo_calc/pretty_print.rb",
43
44
  "spec/geo_calc/calculations_spec.rb",
44
45
  "spec/geo_calc/core_ext/array_ext_spec.rb",
@@ -62,9 +63,10 @@ Gem::Specification.new do |s|
62
63
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
64
  s.add_runtime_dependency(%q<require_all>, ["~> 1.2.0"])
64
65
  s.add_runtime_dependency(%q<sugar-high>, ["~> 0.4.6.3"])
65
- s.add_runtime_dependency(%q<geo_units>, [">= 0.2.0"])
66
+ s.add_runtime_dependency(%q<geo_units>, ["~> 0.2.1"])
66
67
  s.add_runtime_dependency(%q<i18n>, [">= 0"])
67
68
  s.add_runtime_dependency(%q<activesupport>, [">= 3.0.1"])
69
+ s.add_development_dependency(%q<geo_point>, [">= 0.2.1"])
68
70
  s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
69
71
  s.add_development_dependency(%q<bundler>, [">= 1"])
70
72
  s.add_development_dependency(%q<jeweler>, [">= 1.5.2"])
@@ -73,9 +75,10 @@ Gem::Specification.new do |s|
73
75
  else
74
76
  s.add_dependency(%q<require_all>, ["~> 1.2.0"])
75
77
  s.add_dependency(%q<sugar-high>, ["~> 0.4.6.3"])
76
- s.add_dependency(%q<geo_units>, [">= 0.2.0"])
78
+ s.add_dependency(%q<geo_units>, ["~> 0.2.1"])
77
79
  s.add_dependency(%q<i18n>, [">= 0"])
78
80
  s.add_dependency(%q<activesupport>, [">= 3.0.1"])
81
+ s.add_dependency(%q<geo_point>, [">= 0.2.1"])
79
82
  s.add_dependency(%q<rspec>, [">= 2.5.0"])
80
83
  s.add_dependency(%q<bundler>, [">= 1"])
81
84
  s.add_dependency(%q<jeweler>, [">= 1.5.2"])
@@ -85,9 +88,10 @@ Gem::Specification.new do |s|
85
88
  else
86
89
  s.add_dependency(%q<require_all>, ["~> 1.2.0"])
87
90
  s.add_dependency(%q<sugar-high>, ["~> 0.4.6.3"])
88
- s.add_dependency(%q<geo_units>, [">= 0.2.0"])
91
+ s.add_dependency(%q<geo_units>, ["~> 0.2.1"])
89
92
  s.add_dependency(%q<i18n>, [">= 0"])
90
93
  s.add_dependency(%q<activesupport>, [">= 3.0.1"])
94
+ s.add_dependency(%q<geo_point>, [">= 0.2.1"])
91
95
  s.add_dependency(%q<rspec>, [">= 2.5.0"])
92
96
  s.add_dependency(%q<bundler>, [">= 1"])
93
97
  s.add_dependency(%q<jeweler>, [">= 1.5.2"])
@@ -1,16 +1,17 @@
1
1
  module GeoCalc
2
2
  module Bearing
3
+ # @returns [Numeric] bearing in degrees
3
4
  def bearing_to point
4
- GeoCalc::Calc::Bearing.bearing_to self, point
5
+ GeoCalc::Bearing.bearing_to self, point
5
6
  end
6
7
 
7
8
  # Returns the (initial) bearing from this point to the supplied point, in degrees
8
- # see http:#williams.best.vwh.net/avform.htm#Crs
9
+ # see(http:#williams.best.vwh.net/avform.htm#Crs)
9
10
  #
10
- # - Point point: Latitude/longitude of destination point
11
+ # @param [GeoPoint] Latitude/longitude of destination point
11
12
  #
12
- # Returns - Numeric: Initial bearing in degrees from North
13
-
13
+ # @return [Numeric] initial bearing in degrees from North
14
+ #
14
15
  def self.bearing_to base_point, point
15
16
  lat1 = base_point.lat.to_rad
16
17
  lat2 = point.lat.to_rad
@@ -24,16 +25,16 @@ module GeoCalc
24
25
  end
25
26
 
26
27
  def final_bearing_to point
27
- GeoCalc::Calc::Bearing.final_bearing_to self, point
28
+ GeoCalc::Bearing.final_bearing_to self, point
28
29
  end
29
30
 
30
31
  # Returns final bearing arriving at supplied destination point from this point; the final bearing
31
32
  # will differ from the initial bearing by varying degrees according to distance and latitude
32
33
  #
33
- # - GeoPoint point: Latitude/longitude of destination point
34
+ # @param [GeoPoint] Latitude/longitude of destination point
35
+ #
36
+ # @return [Numeric] final bearing in degrees from North
34
37
  #
35
- # Returns Numeric: Final bearing in degrees from North
36
-
37
38
  def self.final_bearing_to base_point, point
38
39
  # get initial bearing from supplied point back to this point...
39
40
  lat1 = point.lat.to_rad
@@ -1,17 +1,17 @@
1
1
  module GeoCalc
2
2
  module Destination
3
3
  def destination_point brng, dist
4
- GeoCalc::Calc::Destination.destination_point self, brng, dist
4
+ GeoCalc::Destination.destination_point self, brng, dist
5
5
  end
6
6
 
7
7
  # Returns the destination point from this point having travelled the given distance (in km) on the
8
8
  # given initial bearing (bearing may vary before destination is reached)
9
9
  #
10
- # see http:#williams.best.vwh.net/avform.htm#LL
10
+ # see(http:#williams.best.vwh.net/avform.htm#LL)
11
11
  #
12
- # - Numeric bearing: Initial bearing in degrees
13
- # - Numeric dist: Distance in km
14
- # Returns GeoPoint: Destination point
12
+ # @param [Numeric] Initial bearing in degrees
13
+ # @param [Numeric] Distance in km
14
+ # @return [Array] Destination point
15
15
 
16
16
  def self.destination_point base_point, brng, dist
17
17
  dist = dist / base_point.earth_radius_km # convert dist to angular distance in radians
@@ -6,7 +6,7 @@
6
6
  module GeoCalc
7
7
  module Distance
8
8
  def distance_to point, precision = 4
9
- GeoCalc::Calc::Distance.distance_to self, point, precision
9
+ GeoCalc::Distance.distance_to self, point, precision
10
10
  end
11
11
 
12
12
  # Returns the distance from this point to the supplied point, in km
@@ -15,10 +15,10 @@ module GeoCalc
15
15
  # from: Haversine formula - R. W. Sinnott, "Virtues of the Haversine",
16
16
  # Sky and Telescope, vol 68, no 2, 1984
17
17
  #
18
- # GeoPoint point: Latitude/longitude of destination point
19
- # - Numeric precision=4: number of significant digits to use for returned value
18
+ # @param [GeoPoint] Latitude/longitude of destination point
19
+ # @param [Numeric] number of significant digits to use for returned value
20
20
  #
21
- # Returns - Numeric distance in km between this point and destination point
21
+ # @return [Numeric] distance in km between this point and destination point
22
22
 
23
23
  def self.distance_to base_point, point, precision = 4
24
24
  # default 4 sig figs reflects typical 0.3% accuracy of spherical model
@@ -1,7 +1,7 @@
1
1
  module GeoCalc
2
2
  module Intersection
3
3
  def intersection brng1, p2, brng2
4
- GeoCalc::Calc::Intersection.intersection self, brng1, p2, brng2
4
+ GeoCalc::Intersection.intersection self, brng1, p2, brng2
5
5
  end
6
6
 
7
7
  # Returns the point of intersection of two paths defined by point and bearing
@@ -12,7 +12,7 @@ module GeoCalc
12
12
  # @param [Number] brng1: Initial bearing from first point
13
13
  # @param [GeoPoint] p2: Second point
14
14
  # @param [Number] brng2: Initial bearing from second point
15
- # @returns [Array] Destination point (null if no unique intersection defined)
15
+ # @return [Array] Destination point (null if no unique intersection defined)
16
16
 
17
17
  def self.intersection p1, brng1, p2, brng2
18
18
  lat1 = p1.lat.to_rad
@@ -1,7 +1,7 @@
1
1
  module GeoCalc
2
2
  module Midpoint
3
3
  def midpoint_to point
4
- GeoCalc::Calc::Midpoint.midpoint_to self, point
4
+ GeoCalc::Midpoint.midpoint_to self, point
5
5
  end
6
6
 
7
7
  # Returns the midpoint between this point and the supplied point.
@@ -7,7 +7,7 @@ module GeoCalc
7
7
  # @param [GeoPoint] Destination point latitude and longitude of
8
8
  # @return [Numeric] Distance in km between start and destination point
9
9
  def rhumb_distance_to point
10
- GeoCalc::Calc::Rhumb.rhumb_distance_to self, point
10
+ GeoCalc::Rhumb.rhumb_distance_to self, point
11
11
  end
12
12
 
13
13
  # Returns the distance from this point to the supplied point, in km, travelling along a rhumb line
@@ -45,7 +45,7 @@ module GeoCalc
45
45
  # @return [Numeric] Bearing in degrees from North
46
46
  #
47
47
  def rhumb_bearing_to point
48
- GeoCalc::Calc::Rhumb.rhumb_bearing_to self, point
48
+ GeoCalc::Rhumb.rhumb_bearing_to self, point
49
49
  end
50
50
  # Returns the bearing from this point to the supplied point along a rhumb line, in degrees
51
51
  #
@@ -75,7 +75,7 @@ module GeoCalc
75
75
  # @param [Number] dist: Distance in km
76
76
  # @returns [Array] Destination point as an array [lat, long]
77
77
  def rhumb_destination_point brng, dist
78
- GeoCalc::Calc::Rhumb.rhumb_destination_point self, brng, dist
78
+ GeoCalc::Rhumb.rhumb_destination_point self, brng, dist
79
79
  end
80
80
 
81
81
  # Returns the destination point from this point having travelled the given distance (in km) on the
@@ -1,4 +1,4 @@
1
- class Array
1
+ class Array
2
2
  def to_lat_lng
3
3
  raise "Array must contain at least two elements to be converted to latitude and longitude" if !(size >= 2)
4
4
  [to_lat, to_lng]
@@ -0,0 +1,278 @@
1
+ module GeoCalculations
2
+ extend self
3
+
4
+ ##
5
+ # Compass point names, listed clockwise starting at North.
6
+ #
7
+ # If you want bearings named using more, fewer, or different points
8
+ # override Geocoder::Calculations.COMPASS_POINTS with your own array.
9
+ #
10
+ COMPASS_POINTS = %w[N NE E SE S SW W NW]
11
+
12
+ ##
13
+ # Radius of the Earth, in kilometers.
14
+ # Value taken from: http://en.wikipedia.org/wiki/Earth_radius
15
+ #
16
+ EARTH_RADIUS = 6371.0
17
+
18
+ ##
19
+ # Conversion factor: multiply by kilometers to get miles.
20
+ #
21
+ KM_IN_MI = 0.621371192
22
+
23
+ ##
24
+ # Distance spanned by one degree of latitude in the given units.
25
+ #
26
+ def latitude_degree_distance(units = :mi)
27
+ 2 * Math::PI * earth_radius(units) / 360
28
+ end
29
+
30
+ ##
31
+ # Distance spanned by one degree of longitude at the given latitude.
32
+ # This ranges from around 69 miles at the equator to zero at the poles.
33
+ #
34
+ def longitude_degree_distance(latitude, units = :mi)
35
+ latitude_degree_distance(units) * Math.cos(to_radians(latitude))
36
+ end
37
+
38
+ ##
39
+ # Distance between two points on Earth (Haversine formula).
40
+ # Takes two points and an options hash.
41
+ # The points are given in the same way that points are given to all
42
+ # Geocoder methods that accept points as arguments. They can be:
43
+ #
44
+ # * an array of coordinates ([lat,lon])
45
+ # * a geocodable address (string)
46
+ # * a geocoded object (one which implements a +to_coordinates+ method
47
+ # which returns a [lat,lon] array
48
+ #
49
+ # The options hash supports:
50
+ #
51
+ # * <tt>:units</tt> - <tt>:mi</tt> (default) or <tt>:km</tt>
52
+ #
53
+ def distance_between(point1, point2, options = {})
54
+
55
+ # set default options
56
+ options[:units] ||= :mi
57
+
58
+ # convert to coordinate arrays
59
+ point1 = extract_coordinates(point1)
60
+ point2 = extract_coordinates(point2)
61
+
62
+ # convert degrees to radians
63
+ point1 = to_radians(point1)
64
+ point2 = to_radians(point2)
65
+
66
+ # compute deltas
67
+ dlat = point2[0] - point1[0]
68
+ dlon = point2[1] - point1[1]
69
+
70
+ a = (Math.sin(dlat / 2))**2 + Math.cos(point1[0]) *
71
+ (Math.sin(dlon / 2))**2 * Math.cos(point2[0])
72
+ c = 2 * Math.atan2( Math.sqrt(a), Math.sqrt(1-a))
73
+ c * earth_radius(options[:units])
74
+ end
75
+
76
+ ##
77
+ # Bearing between two points on Earth.
78
+ # Returns a number of degrees from due north (clockwise).
79
+ #
80
+ # See Geocoder::Calculations.distance_between for
81
+ # ways of specifying the points. Also accepts an options hash:
82
+ #
83
+ # * <tt>:method</tt> - <tt>:linear</tt> (default) or <tt>:spherical</tt>;
84
+ # the spherical method is "correct" in that it returns the shortest path
85
+ # (one along a great circle) but the linear method is the default as it
86
+ # is less confusing (returns due east or west when given two points with
87
+ # the same latitude)
88
+ #
89
+ # Based on: http://www.movable-type.co.uk/scripts/latlong.html
90
+ #
91
+ def bearing_between(point1, point2, options = {})
92
+
93
+ # set default options
94
+ options[:method] = :linear unless options[:method] == :spherical
95
+
96
+ # convert to coordinate arrays
97
+ point1 = extract_coordinates(point1)
98
+ point2 = extract_coordinates(point2)
99
+
100
+ # convert degrees to radians
101
+ point1 = to_radians(point1)
102
+ point2 = to_radians(point2)
103
+
104
+ # compute deltas
105
+ dlat = point2[0] - point1[0]
106
+ dlon = point2[1] - point1[1]
107
+
108
+ case options[:method]
109
+ when :linear
110
+ y = dlon
111
+ x = dlat
112
+
113
+ when :spherical
114
+ y = Math.sin(dlon) * Math.cos(point2[0])
115
+ x = Math.cos(point1[0]) * Math.sin(point2[0]) -
116
+ Math.sin(point1[0]) * Math.cos(point2[0]) * Math.cos(dlon)
117
+ end
118
+
119
+ bearing = Math.atan2(x,y)
120
+ # Answer is in radians counterclockwise from due east.
121
+ # Convert to degrees clockwise from due north:
122
+ (90 - to_degrees(bearing) + 360) % 360
123
+ end
124
+
125
+ ##
126
+ # Translate a bearing (float) into a compass direction (string, eg "North").
127
+ #
128
+ def compass_point(bearing, points = COMPASS_POINTS)
129
+ seg_size = 360 / points.size
130
+ points[((bearing + (seg_size / 2)) % 360) / seg_size]
131
+ end
132
+
133
+ ##
134
+ # Compute the geographic center (aka geographic midpoint, center of
135
+ # gravity) for an array of geocoded objects and/or [lat,lon] arrays
136
+ # (can be mixed). Any objects missing coordinates are ignored. Follows
137
+ # the procedure documented at http://www.geomidpoint.com/calculation.html.
138
+ #
139
+ def geographic_center(points)
140
+
141
+ # convert objects to [lat,lon] arrays and convert degrees to radians
142
+ coords = points.map{ |p| to_radians(extract_coordinates(p)) }
143
+
144
+ # convert to Cartesian coordinates
145
+ x = []; y = []; z = []
146
+ coords.each do |p|
147
+ x << Math.cos(p[0]) * Math.cos(p[1])
148
+ y << Math.cos(p[0]) * Math.sin(p[1])
149
+ z << Math.sin(p[0])
150
+ end
151
+
152
+ # compute average coordinate values
153
+ xa, ya, za = [x,y,z].map do |c|
154
+ c.inject(0){ |tot,i| tot += i } / c.size.to_f
155
+ end
156
+
157
+ # convert back to latitude/longitude
158
+ lon = Math.atan2(ya, xa)
159
+ hyp = Math.sqrt(xa**2 + ya**2)
160
+ lat = Math.atan2(za, hyp)
161
+
162
+ # return answer in degrees
163
+ to_degrees [lat, lon]
164
+ end
165
+
166
+ ##
167
+ # Returns coordinates of the lower-left and upper-right corners of a box
168
+ # with the given point at its center. The radius is the shortest distance
169
+ # from the center point to any side of the box (the length of each side
170
+ # is twice the radius).
171
+ #
172
+ # This is useful for finding corner points of a map viewport, or for
173
+ # roughly limiting the possible solutions in a geo-spatial search
174
+ # (ActiveRecord queries use it thusly).
175
+ #
176
+ # See Geocoder::Calculations.distance_between for
177
+ # ways of specifying the point. Also accepts an options hash:
178
+ #
179
+ # * <tt>:units</tt> - <tt>:mi</tt> (default) or <tt>:km</tt>
180
+ #
181
+ def bounding_box(point, radius, options = {})
182
+ lat,lon = extract_coordinates(point)
183
+ radius = radius.to_f
184
+ units = options[:units] || :mi
185
+ [
186
+ lat - (radius / latitude_degree_distance(units)),
187
+ lon - (radius / longitude_degree_distance(lat, units)),
188
+ lat + (radius / latitude_degree_distance(units)),
189
+ lon + (radius / longitude_degree_distance(lat, units))
190
+ ]
191
+ end
192
+
193
+ ##
194
+ # Convert degrees to radians.
195
+ # If an array (or multiple arguments) is passed,
196
+ # converts each value and returns array.
197
+ #
198
+ def to_radians(*args)
199
+ args = args.first if args.first.is_a?(Array)
200
+ if args.size == 1
201
+ args.first * (Math::PI / 180)
202
+ else
203
+ args.map{ |i| to_radians(i) }
204
+ end
205
+ end
206
+
207
+ ##
208
+ # Convert radians to degrees.
209
+ # If an array (or multiple arguments) is passed,
210
+ # converts each value and returns array.
211
+ #
212
+ def to_degrees(*args)
213
+ args = args.first if args.first.is_a?(Array)
214
+ if args.size == 1
215
+ (args.first * 180.0) / Math::PI
216
+ else
217
+ args.map{ |i| to_degrees(i) }
218
+ end
219
+ end
220
+
221
+ def distance_to_radians(distance, units = :mi)
222
+ distance.to_f / earth_radius(units)
223
+ end
224
+
225
+ def radians_to_distance(radians, units = :mi)
226
+ radians * earth_radius(units)
227
+ end
228
+
229
+ ##
230
+ # Convert miles to kilometers.
231
+ #
232
+ def to_kilometers(mi)
233
+ mi * mi_in_km
234
+ end
235
+
236
+ ##
237
+ # Convert kilometers to miles.
238
+ #
239
+ def to_miles(km)
240
+ km * km_in_mi
241
+ end
242
+
243
+ ##
244
+ # Radius of the Earth in the given units (:mi or :km). Default is :mi.
245
+ #
246
+ def earth_radius(units = :mi)
247
+ units == :km ? EARTH_RADIUS : to_miles(EARTH_RADIUS)
248
+ end
249
+
250
+ ##
251
+ # Conversion factor: km to mi.
252
+ #
253
+ def km_in_mi
254
+ KM_IN_MI
255
+ end
256
+
257
+ ##
258
+ # Conversion factor: mi to km.
259
+ #
260
+ def mi_in_km
261
+ 1.0 / KM_IN_MI
262
+ end
263
+
264
+ ##
265
+ # Takes an object which is a [lat,lon] array, a geocodable string,
266
+ # or an object that implements +to_coordinates+ and returns a
267
+ # [lat,lon] array. Note that if a string is passed this may be a slow-
268
+ # running method and may return nil.
269
+ #
270
+ def extract_coordinates(point)
271
+ case point
272
+ when Array; point
273
+ when String; Geocoder.coordinates(point)
274
+ else point.to_coordinates
275
+ end
276
+ end
277
+ end
278
+
data/lib/geo_calc.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'geo_units'
2
2
  require 'sugar-high/math'
3
3
  require 'geo_calc/calc'
4
+ require 'geo_calc/geo_calculations'
4
5
 
5
6
  module GeoCalc
6
7
  autoload :PrettyPrint, 'geo_calc/pretty_print'
@@ -96,7 +96,7 @@ describe GeoCalc do
96
96
  # Intersection point: 50°54′06″N, 004°29′39″E
97
97
  describe '#intersection' do
98
98
  it 'should return the intersection between p1 and p2 as (50 54 06 N, 004 29 39 E)' do
99
- GeoCalc::Calc::Intersection.intersection(@p1, @brng1, @p2, @brng2).to_dms.should match /50.+54.+06.+N, 004.+29.+39.+E/
99
+ GeoCalc::Intersection.intersection(@p1, @brng1, @p2, @brng2).to_dms.should match /50.+54.+06.+N, 004.+29.+39.+E/
100
100
  end
101
101
  end
102
102
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geo_calc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-06-13 00:00:00.000000000Z
12
+ date: 2011-06-19 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: require_all
16
- requirement: &2153783140 !ruby/object:Gem::Requirement
16
+ requirement: &2164287640 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153783140
24
+ version_requirements: *2164287640
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sugar-high
27
- requirement: &2153782640 !ruby/object:Gem::Requirement
27
+ requirement: &2164286840 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,21 +32,21 @@ dependencies:
32
32
  version: 0.4.6.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2153782640
35
+ version_requirements: *2164286840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: geo_units
38
- requirement: &2153782120 !ruby/object:Gem::Requirement
38
+ requirement: &2164286060 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
- - - ! '>='
41
+ - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: 0.2.0
43
+ version: 0.2.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2153782120
46
+ version_requirements: *2164286060
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: i18n
49
- requirement: &2153781640 !ruby/object:Gem::Requirement
49
+ requirement: &2164285160 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2153781640
57
+ version_requirements: *2164285160
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activesupport
60
- requirement: &2153781060 !ruby/object:Gem::Requirement
60
+ requirement: &2164284460 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,21 @@ dependencies:
65
65
  version: 3.0.1
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2153781060
68
+ version_requirements: *2164284460
69
+ - !ruby/object:Gem::Dependency
70
+ name: geo_point
71
+ requirement: &2164283680 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: 0.2.1
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2164283680
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: rspec
71
- requirement: &2153780540 !ruby/object:Gem::Requirement
82
+ requirement: &2164282980 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: 2.5.0
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *2153780540
90
+ version_requirements: *2164282980
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: bundler
82
- requirement: &2153779960 !ruby/object:Gem::Requirement
93
+ requirement: &2164282340 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ! '>='
@@ -87,10 +98,10 @@ dependencies:
87
98
  version: '1'
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *2153779960
101
+ version_requirements: *2164282340
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: jeweler
93
- requirement: &2153779440 !ruby/object:Gem::Requirement
104
+ requirement: &2162210200 !ruby/object:Gem::Requirement
94
105
  none: false
95
106
  requirements:
96
107
  - - ! '>='
@@ -98,10 +109,10 @@ dependencies:
98
109
  version: 1.5.2
99
110
  type: :development
100
111
  prerelease: false
101
- version_requirements: *2153779440
112
+ version_requirements: *2162210200
102
113
  - !ruby/object:Gem::Dependency
103
114
  name: rcov
104
- requirement: &2153778720 !ruby/object:Gem::Requirement
115
+ requirement: &2162209620 !ruby/object:Gem::Requirement
105
116
  none: false
106
117
  requirements:
107
118
  - - ! '>='
@@ -109,10 +120,10 @@ dependencies:
109
120
  version: '0'
110
121
  type: :development
111
122
  prerelease: false
112
- version_requirements: *2153778720
123
+ version_requirements: *2162209620
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: rake
115
- requirement: &2153778000 !ruby/object:Gem::Requirement
126
+ requirement: &2162209080 !ruby/object:Gem::Requirement
116
127
  none: false
117
128
  requirements:
118
129
  - - ! '>='
@@ -120,7 +131,7 @@ dependencies:
120
131
  version: '0.9'
121
132
  type: :development
122
133
  prerelease: false
123
- version_requirements: *2153778000
134
+ version_requirements: *2162209080
124
135
  description: Geo calculations in ruby and javascript
125
136
  email: kmandrup@gmail.com
126
137
  executables: []
@@ -151,6 +162,7 @@ files:
151
162
  - lib/geo_calc/extensions/hash.rb
152
163
  - lib/geo_calc/extensions/string.rb
153
164
  - lib/geo_calc/extensions/symbol.rb
165
+ - lib/geo_calc/geo_calculations.rb
154
166
  - lib/geo_calc/pretty_print.rb
155
167
  - spec/geo_calc/calculations_spec.rb
156
168
  - spec/geo_calc/core_ext/array_ext_spec.rb
@@ -176,7 +188,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
188
  version: '0'
177
189
  segments:
178
190
  - 0
179
- hash: -4458324713817276308
191
+ hash: -3260923342157281303
180
192
  required_rubygems_version: !ruby/object:Gem::Requirement
181
193
  none: false
182
194
  requirements: