geo_vectors 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Distance calc notes.txt +64 -0
  4. data/Gemfile +14 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.textile +178 -0
  7. data/Rakefile +53 -0
  8. data/VERSION +1 -0
  9. data/geo_vectors.gemspec +115 -0
  10. data/lib/geo_vectors.rb +7 -0
  11. data/lib/geo_vectors/bearing_vector.rb +87 -0
  12. data/lib/geo_vectors/core_ext.rb +54 -0
  13. data/lib/geo_vectors/direction_vector.rb +59 -0
  14. data/lib/geo_vectors/geo_point.rb +33 -0
  15. data/lib/geo_vectors/geo_vector.rb +56 -0
  16. data/lib/geo_vectors/geo_vectors.rb +92 -0
  17. data/lib/geo_vectors/point_vector.rb +85 -0
  18. data/lib/geo_vectors/point_vector/point_ops.rb +23 -0
  19. data/lib/geo_vectors/point_vector/vector_ops.rb +38 -0
  20. data/lib/geo_vectors/util.rb +3 -0
  21. data/lib/geo_vectors/util/calc.rb +89 -0
  22. data/lib/geo_vectors/util/geo_direction.rb +101 -0
  23. data/lib/geo_vectors/util/geo_distance.rb +135 -0
  24. data/lib/geo_vectors/util/geo_units.rb +53 -0
  25. data/lib/geo_vectors/vector_parser.rb +54 -0
  26. data/spec/geo_vectors/API proposal guide.txt +142 -0
  27. data/spec/geo_vectors/bearing_vector/add_vector_spec.rb +30 -0
  28. data/spec/geo_vectors/bearing_vector/random_spec.rb +18 -0
  29. data/spec/geo_vectors/bearing_vector_spec.rb +34 -0
  30. data/spec/geo_vectors/direction_vector/add_vector_spec.rb +30 -0
  31. data/spec/geo_vectors/direction_vector/point_add_spec.rb +0 -0
  32. data/spec/geo_vectors/direction_vector/random_spec.rb +16 -0
  33. data/spec/geo_vectors/direction_vector/subtract_vector_spec.rb +0 -0
  34. data/spec/geo_vectors/direction_vector_spec.rb +27 -0
  35. data/spec/geo_vectors/geo_vectors_spec.rb +108 -0
  36. data/spec/geo_vectors/point_vector/add_vector_spec.rb +135 -0
  37. data/spec/geo_vectors/point_vector/initializer_spec.rb +82 -0
  38. data/spec/geo_vectors/point_vector/point_add_spec.rb +45 -0
  39. data/spec/geo_vectors/point_vector/random_spec.rb +17 -0
  40. data/spec/geo_vectors/point_vector/scale_vector_spec.rb +52 -0
  41. data/spec/geo_vectors/point_vector/subtract_vector_spec.rb +80 -0
  42. data/spec/geo_vectors/point_vector_spec.rb +111 -0
  43. data/spec/geo_vectors/util/geo_direction_spec.rb +74 -0
  44. data/spec/geo_vectors/util/geo_distance_spec.rb +70 -0
  45. data/spec/geo_vectors/util/geo_units_spec.rb +23 -0
  46. data/spec/spec_helper.rb +7 -0
  47. metadata +218 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --format nested
@@ -0,0 +1,64 @@
1
+ Because of the near-spherical shape of the Earth (technically an oblate spheroid) , calculating an accurate distance between two points requires the use of spherical geometry and trigonometric math functions. However, you can calculate an approximate distance using much simpler math functions. For many applications the approximate distance calculation provides sufficient accuracy with much less complexity.
2
+
3
+ The following approximate distance calculations are relatively simple, but can produce distance errors of 10 percent of more. These approximate calculations are performed using latitude and longitude values in degrees. The first approximation requires only simple math functions:
4
+
5
+ Approximate distance in miles:
6
+
7
+ sqrt(x * x + y * y)
8
+
9
+ where x = 69.1 * (lat2 - lat1)
10
+ and y = 53.0 * (lon2 - lon1)
11
+
12
+ You can improve the accuracy of this approximate distance calculation by adding the cosine math function:
13
+
14
+ Improved approximate distance in miles:
15
+
16
+ sqrt(x * x + y * y)
17
+
18
+ where x = 69.1 * (lat2 - lat1)
19
+ and y = 69.1 * (lon2 - lon1) * cos(lat1/57.3)
20
+
21
+ If you need greater accuracy, you can use the Great Circle Distance Formula. This formula requires use of spherical geometry and a high level of floating point mathematical accuracy - about 15 digits of accuracy (sometimes called "double-precision"). In order to use this formula properly make sure your software application or programming language is capable of double-precision floating point calculations. In addition, the trig math functions used in this formula require conversion of the latitude and longitude values from decimal degrees to radians. To convert latitude or longitude from decimal degrees to radians, divide the latitude and longitude values in this database by 180/pi, or approximately 57.29577951. The radius of the Earth is assumed to be 6,378.8 kilometers, or 3,963.0 miles.
22
+
23
+ If you convert all latitude and longitude values in the database to radians before the calculation, use this equation:
24
+
25
+ Great Circle Distance Formula using radians:
26
+
27
+ 3963.0 * arccos[sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1)]
28
+
29
+ If you do NOT first convert the latitude and longitude values in the database to radians, you must include the degrees-to-radians conversion in the calculation. Substituting degrees for radians, the formula becomes:
30
+
31
+ Great Circle Distance Formula using decimal degrees:
32
+
33
+ 3963.0 * arccos[sin(lat1/57.2958) * sin(lat2/57.2958) + cos(lat1/57.2958) * cos(lat2/57.2958) * cos(lon2/57.2958 -lon1/57.2958)]
34
+
35
+ OR
36
+
37
+ r * acos[sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1)]
38
+
39
+ Where r is the radius of the earth in whatever units you desire.
40
+ r=3437.74677 (nautical miles)
41
+ r=6378.7 (kilometers)
42
+ r=3963.0 (statute miles)
43
+
44
+ If the software application or programming language you are using has no arccosine function, you can calculate the same result using the arctangent function, which most applications and languages do support. Use the following equation:
45
+
46
+ 3963.0 * arctan[sqrt(1-x^2)/x]
47
+
48
+ where
49
+
50
+ x = [sin(lat1/57.2958) * sin(lat2/57.2958)] + [cos(lat1/57.2958) * cos(lat2/57.2958) * cos(lon2/57.2958 - lon1/57.2958)]
51
+
52
+ If your distance calculations produce wildly incorrect results, check for these possible problems:
53
+
54
+ 1. Did you convert the latitude and longitude values from degrees to radians? Trigonometric math functions such as sine and cosine normally require conversion of degrees to radians, as described above.
55
+
56
+ 2. Are the equations implemented correctly with necessary parentheses? Remember the old math precedence rule: MDAS - multiply, divide, add, subtract.
57
+
58
+ 3. Does your software application or programming language provide sufficient mathematical accuracy? For best results, you need about 15 digits of accuracy.
59
+
60
+ 4. When you imported the data from the text files your latitude/longitude values may have been truncated. Make sure you did not lose any of the digits to the right of the decimal point during import.
61
+
62
+ 5. Have you lost any precision of your decimal values due to rounding during importing or calling custom math functions?
63
+
64
+
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'geo_calc', '>= 0.5.4'
4
+ gem 'proxy_party', '>= 0.2.1'
5
+ gem 'sugar-high', '>= 0.4.1'
6
+
7
+ # Add dependencies to develop your gem here.
8
+ # Include everything needed to run rake, tests, features, etc.
9
+ group :development do
10
+ gem "rspec", ">= 2.3.0"
11
+ gem "bundler", ">= 1.0.0"
12
+ gem "jeweler", ">= 1.6.0"
13
+ gem "rcov", ">= 0"
14
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Kristian Mandrup
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.textile ADDED
@@ -0,0 +1,178 @@
1
+ h1. Geo Vectors
2
+
3
+ Vector classes and operations for Geo calculations.
4
+
5
+ h2. Install
6
+
7
+ @require 'geo_vectors_@
8
+
9
+ h3. Gemfile
10
+
11
+ Insert into Gemfile of the app:
12
+
13
+ @gem 'geo_vectors'@
14
+
15
+ Then run bundler from command line to bundle the gem with the app:
16
+
17
+ @$ bundle@
18
+
19
+ h2. Intro
20
+
21
+ A GeoVector can be any of:
22
+
23
+ 1) *bearing vector* - bearing (direction in degrees) and a distance
24
+ 2) *direction vector* - direction (:N, :NW, :NE, :S, :SE, :SW, :E, :W) and a distance
25
+ 3) *point vector* - number of degrees due east/west (+ or -) and a distance due north/south (+ or -)
26
+
27
+ Note that a direction vector is always converted to a bearing vector when added to a point
28
+
29
+ A GeoVector can be applied to a GeoPoint (see geo_calc) or to another GeoVector.
30
+ When multiple vectors are added together, the sum becomes a GeoVectors object.
31
+ If a GeoVectors object is applied, the vectors are simply applied in turn.
32
+
33
+ h2. Quick start (Usage guide)
34
+
35
+ The following gives a quick overview for how to use the GeoVector API.
36
+
37
+ _Note: This is suggested functionality._
38
+
39
+ I plan to use my recently published _geo_calc_ gem as the base for the functionality described here.
40
+ I need a major cleanup up of the current code...
41
+
42
+ h3. Addition
43
+
44
+ Vectors can be added to form a new Vector, using the simple formula vec = v1 + v2 = (v1.x + v2.y, v1.x + v2.y)
45
+
46
+ h3. Vector on Vector addition
47
+
48
+ If both vectors are point vectors, the result is simply a new point vector
49
+
50
+ <pre>
51
+ v1 = [1, 3].vector
52
+ v2 = [-2, 2].vector
53
+ vec = v1 + v2
54
+ vec.unit.should == :degrees
55
+ vec.lat.should == -1
56
+ vec.lng.should == 5
57
+
58
+ # alternative addition operators
59
+ vec = v1 << v2
60
+ </pre>
61
+
62
+ h3. Vector subtraction
63
+
64
+ <pre>
65
+ v1 = [1, 3].vector
66
+ v2 = [2, 1].vector
67
+ vec = v1 - v2 # here v2 inversed (scaled by -1) and then added
68
+ vec.lat.should == -1
69
+ vec.lng.should == 2
70
+ </pre>
71
+
72
+ h3. Vector scaling
73
+
74
+ <pre>
75
+ v1 = [1, 3].vector
76
+ vec = v1 * 2
77
+ vec.lat.should == 2
78
+ vec.lng.should == 6
79
+ </pre>
80
+
81
+ Scale a bearing vector
82
+
83
+ <pre>
84
+ v1 = [32, 3.km].vector
85
+ vec = v1 * 2
86
+ vec.bearing.should == 32
87
+ vec.distance.should == 6.km
88
+ </pre>
89
+
90
+
91
+ Using division operator / for inverse scaling
92
+
93
+ <pre>
94
+ v1 = [4, 2].vector
95
+ vec = v1 / 2
96
+ vec.lat.should == 2
97
+ vec.lng.should == 1
98
+ </pre>
99
+
100
+ h3. GeoVectors
101
+
102
+ Adding a point Vector to a bearing Vector
103
+
104
+ If the vectors are of different type, a GeoVectors object is created
105
+ containing both vectors. A GeoVectors is a composite vector.
106
+
107
+ <pre>
108
+ p1 = [1, -1]
109
+
110
+ v1 = [1, 3].vector # point Vector
111
+
112
+ # 32 deg bearing, 2.km
113
+ v2 = [32, 2.km].vector # bearing Vector
114
+ v2.bearing.should == 32
115
+ v2.distance.should == 2.km
116
+
117
+ vec = v1 + v2 # create a GeoVectors object
118
+ vec.should be_a(GeoVectors)
119
+ vec.vectors.size.should == 2 # should contain 2 vectors
120
+
121
+ # Adding more vectors to the GeoVectors object
122
+ vec.vectors << v3
123
+ vec << v4
124
+
125
+ p2 = p1 + vec # Add GeoVectors to the point
126
+ </pre>
127
+
128
+ h3. Vector on Point addition
129
+
130
+ Add a point Vector to a GeoPoint
131
+
132
+ <pre>
133
+ p1 = [1, 3].geo_point
134
+ vec = [-2, 2].vector
135
+ p2 = p1 + vec
136
+ p2.lat.should == -1
137
+ p2.lng.should == 5
138
+ </pre>
139
+
140
+ Add an inverse point Vector (subtract) to a GeoPoint
141
+
142
+ <pre>
143
+ p1 = [1, 3].geo_point
144
+ vec = [2, 1].vector
145
+ p2 = p1 - vec
146
+ p2.lat.should == -1
147
+ p2.lng.should == 2
148
+ </pre>
149
+
150
+ Add a bearing Vector to a GeoPoint
151
+
152
+ <pre>
153
+ p1 = [1, 3].geo_point
154
+
155
+ # 32 deg bearing, 2.km
156
+ vec = [32, 2.km].vector
157
+
158
+ # use #destination_point from 'geo_calc' project
159
+ p2 = p1 + vec
160
+ </pre>
161
+
162
+ Note: You can also subtract (add with inverse bearing direction)
163
+
164
+ h2. Contributing to geo_vectors
165
+
166
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
167
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
168
+ * Fork the project
169
+ * Start a feature/bugfix branch
170
+ * Commit and push until you are happy with your contribution
171
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
172
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
173
+
174
+ h2. Copyright
175
+
176
+ Copyright (c) 2011 Kristian Mandrup. See LICENSE.txt for
177
+ further details.
178
+
data/Rakefile ADDED
@@ -0,0 +1,53 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
+ gem.name = "geo_vectors"
16
+ gem.homepage = "http://github.com/kristianmandrup/geo_vectors"
17
+ gem.license = "MIT"
18
+ gem.summary = %Q{Geo vector library for applying vectors to GeoPoints and for basic vector math}
19
+ gem.description = %Q{Works with geo_calc and other geo libraries}
20
+ gem.email = "kmandrup@gmail.com"
21
+ gem.authors = ["Kristian Mandrup"]
22
+ # Include your dependencies below. Runtime dependencies are required when using your gem,
23
+ # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
+
25
+ gem.add_runtime_dependency 'proxy_party', '>= 0.2.1'
26
+ gem.add_runtime_dependency 'sugar-high', '>= 0.4.1'
27
+ gem.add_runtime_dependency 'geo_calc', '>= 0.5.4'
28
+ gem.add_development_dependency 'rspec', '>= 2.5.0'
29
+ end
30
+ Jeweler::RubygemsDotOrgTasks.new
31
+
32
+ require 'rspec/core'
33
+ require 'rspec/core/rake_task'
34
+ RSpec::Core::RakeTask.new(:spec) do |spec|
35
+ spec.pattern = FileList['spec/**/*_spec.rb']
36
+ end
37
+
38
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
39
+ spec.pattern = 'spec/**/*_spec.rb'
40
+ spec.rcov = true
41
+ end
42
+
43
+ task :default => :spec
44
+
45
+ require 'rake/rdoctask'
46
+ Rake::RDocTask.new do |rdoc|
47
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
+
49
+ rdoc.rdoc_dir = 'rdoc'
50
+ rdoc.title = "geo_vectors #{version}"
51
+ rdoc.rdoc_files.include('README*')
52
+ rdoc.rdoc_files.include('lib/**/*.rb')
53
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.5.0
@@ -0,0 +1,115 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{geo_vectors}
8
+ s.version = "0.5.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = [%q{Kristian Mandrup}]
12
+ s.date = %q{2011-05-23}
13
+ s.description = %q{Works with geo_calc and other geo libraries}
14
+ s.email = %q{kmandrup@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.textile"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ "Distance calc notes.txt",
23
+ "Gemfile",
24
+ "LICENSE.txt",
25
+ "README.textile",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "geo_vectors.gemspec",
29
+ "lib/geo_vectors.rb",
30
+ "lib/geo_vectors/bearing_vector.rb",
31
+ "lib/geo_vectors/core_ext.rb",
32
+ "lib/geo_vectors/direction_vector.rb",
33
+ "lib/geo_vectors/geo_point.rb",
34
+ "lib/geo_vectors/geo_vector.rb",
35
+ "lib/geo_vectors/geo_vectors.rb",
36
+ "lib/geo_vectors/point_vector.rb",
37
+ "lib/geo_vectors/point_vector/point_ops.rb",
38
+ "lib/geo_vectors/point_vector/vector_ops.rb",
39
+ "lib/geo_vectors/util.rb",
40
+ "lib/geo_vectors/util/calc.rb",
41
+ "lib/geo_vectors/util/geo_direction.rb",
42
+ "lib/geo_vectors/util/geo_distance.rb",
43
+ "lib/geo_vectors/util/geo_units.rb",
44
+ "lib/geo_vectors/vector_parser.rb",
45
+ "spec/geo_vectors/API proposal guide.txt",
46
+ "spec/geo_vectors/bearing_vector/add_vector_spec.rb",
47
+ "spec/geo_vectors/bearing_vector/random_spec.rb",
48
+ "spec/geo_vectors/bearing_vector_spec.rb",
49
+ "spec/geo_vectors/direction_vector/add_vector_spec.rb",
50
+ "spec/geo_vectors/direction_vector/point_add_spec.rb",
51
+ "spec/geo_vectors/direction_vector/random_spec.rb",
52
+ "spec/geo_vectors/direction_vector/subtract_vector_spec.rb",
53
+ "spec/geo_vectors/direction_vector_spec.rb",
54
+ "spec/geo_vectors/geo_vectors_spec.rb",
55
+ "spec/geo_vectors/point_vector/add_vector_spec.rb",
56
+ "spec/geo_vectors/point_vector/initializer_spec.rb",
57
+ "spec/geo_vectors/point_vector/point_add_spec.rb",
58
+ "spec/geo_vectors/point_vector/random_spec.rb",
59
+ "spec/geo_vectors/point_vector/scale_vector_spec.rb",
60
+ "spec/geo_vectors/point_vector/subtract_vector_spec.rb",
61
+ "spec/geo_vectors/point_vector_spec.rb",
62
+ "spec/geo_vectors/util/geo_direction_spec.rb",
63
+ "spec/geo_vectors/util/geo_distance_spec.rb",
64
+ "spec/geo_vectors/util/geo_units_spec.rb",
65
+ "spec/spec_helper.rb"
66
+ ]
67
+ s.homepage = %q{http://github.com/kristianmandrup/geo_vectors}
68
+ s.licenses = [%q{MIT}]
69
+ s.require_paths = [%q{lib}]
70
+ s.rubygems_version = %q{1.8.0}
71
+ s.summary = %q{Geo vector library for applying vectors to GeoPoints and for basic vector math}
72
+
73
+ if s.respond_to? :specification_version then
74
+ s.specification_version = 3
75
+
76
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
77
+ s.add_runtime_dependency(%q<geo_calc>, [">= 0.5.4"])
78
+ s.add_runtime_dependency(%q<proxy_party>, [">= 0.2.1"])
79
+ s.add_runtime_dependency(%q<sugar-high>, [">= 0.4.1"])
80
+ s.add_development_dependency(%q<rspec>, [">= 2.3.0"])
81
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
82
+ s.add_development_dependency(%q<jeweler>, [">= 1.6.0"])
83
+ s.add_development_dependency(%q<rcov>, [">= 0"])
84
+ s.add_runtime_dependency(%q<proxy_party>, [">= 0.2.1"])
85
+ s.add_runtime_dependency(%q<sugar-high>, [">= 0.4.1"])
86
+ s.add_runtime_dependency(%q<geo_calc>, [">= 0.5.4"])
87
+ s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
88
+ else
89
+ s.add_dependency(%q<geo_calc>, [">= 0.5.4"])
90
+ s.add_dependency(%q<proxy_party>, [">= 0.2.1"])
91
+ s.add_dependency(%q<sugar-high>, [">= 0.4.1"])
92
+ s.add_dependency(%q<rspec>, [">= 2.3.0"])
93
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
94
+ s.add_dependency(%q<jeweler>, [">= 1.6.0"])
95
+ s.add_dependency(%q<rcov>, [">= 0"])
96
+ s.add_dependency(%q<proxy_party>, [">= 0.2.1"])
97
+ s.add_dependency(%q<sugar-high>, [">= 0.4.1"])
98
+ s.add_dependency(%q<geo_calc>, [">= 0.5.4"])
99
+ s.add_dependency(%q<rspec>, [">= 2.5.0"])
100
+ end
101
+ else
102
+ s.add_dependency(%q<geo_calc>, [">= 0.5.4"])
103
+ s.add_dependency(%q<proxy_party>, [">= 0.2.1"])
104
+ s.add_dependency(%q<sugar-high>, [">= 0.4.1"])
105
+ s.add_dependency(%q<rspec>, [">= 2.3.0"])
106
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
107
+ s.add_dependency(%q<jeweler>, [">= 1.6.0"])
108
+ s.add_dependency(%q<rcov>, [">= 0"])
109
+ s.add_dependency(%q<proxy_party>, [">= 0.2.1"])
110
+ s.add_dependency(%q<sugar-high>, [">= 0.4.1"])
111
+ s.add_dependency(%q<geo_calc>, [">= 0.5.4"])
112
+ s.add_dependency(%q<rspec>, [">= 2.5.0"])
113
+ end
114
+ end
115
+