gis-distance 1.0.2 → 1.1.0
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/{CHANGES → CHANGES.md} +7 -3
- data/Gemfile +3 -0
- data/{MANIFEST → MANIFEST.md} +4 -3
- data/{README → README.md} +16 -7
- data/Rakefile +5 -8
- data/gis-distance.gemspec +5 -4
- data/lib/gis/distance.rb +1 -1
- data/spec/gis_distance_spec.rb +94 -0
- metadata +45 -24
- metadata.gz.sig +0 -0
- data/test/test_gis_distance.rb +0 -99
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d53bfba92587a4e24a8e79783b523961f5649f8e677197160d1788230ff741b4
|
4
|
+
data.tar.gz: 78540a52eeac8d58a13bf99d03bccbbf7277f7aac8db0c9c1913301e4ef9d7ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b87053488d8079fcd34c5260f6ee01777cff4499af6ab5f88928d98f26977e4195a4584199dfb13f70d986a7bb50934ded14e3dc46fc95c9329e2a8b2ab9340
|
7
|
+
data.tar.gz: 2b1b1e061f1fd25dc19ccf2163216a9fe822462d6d9c40b3e834b269d8817e3b965e5879598638ed9366f735cb48b4104ee2b1d34f6fd324e179322b92a85560
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/{CHANGES → CHANGES.md}
RENAMED
@@ -1,4 +1,8 @@
|
|
1
|
-
|
1
|
+
## 1.1.0 - 27-Feb-2021
|
2
|
+
* Switched from test-unit to rspec.
|
3
|
+
* Added a Gemfile.
|
4
|
+
|
5
|
+
## 1.0.2 - 22-Mar-2018
|
2
6
|
* Added 'cosines' as a supported formula. This will use the Law of cosines
|
3
7
|
to calculate the distance.
|
4
8
|
* Added metadata to the gemspec.
|
@@ -6,8 +10,8 @@
|
|
6
10
|
* Rakefile now assumes Rubygems 2.x, and other minor updates.
|
7
11
|
* Added a gis-distance.rb file for convenience.
|
8
12
|
|
9
|
-
|
13
|
+
## 1.0.1 - 26-Oct-2014
|
10
14
|
* Updated gemspec, Rakefile.
|
11
15
|
|
12
|
-
|
16
|
+
## 1.0.0 - 10-Oct-2009
|
13
17
|
* Initial release
|
data/Gemfile
ADDED
data/{MANIFEST → MANIFEST.md}
RENAMED
data/{README → README.md}
RENAMED
@@ -1,11 +1,12 @@
|
|
1
|
-
|
1
|
+
## Description
|
2
2
|
The gis-distance library allows you to calculate geographic distance between
|
3
3
|
two points using the formula of your choice.
|
4
4
|
|
5
|
-
|
6
|
-
gem install gis-distance
|
5
|
+
## Installation
|
6
|
+
`gem install gis-distance`
|
7
7
|
|
8
|
-
|
8
|
+
## Synopsis
|
9
|
+
```ruby
|
9
10
|
require 'gis/distance' # or 'gis-distance'
|
10
11
|
|
11
12
|
# New York to Los Angeles
|
@@ -17,10 +18,18 @@ gis.formula = 'haversine'
|
|
17
18
|
|
18
19
|
p gis.distance # Kilometers
|
19
20
|
p gis.distance.mi # Miles
|
21
|
+
```
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
+
## Available Formulas
|
24
|
+
* haversine (https://en.wikipedia.org/wiki/Haversine_formula)
|
25
|
+
* cosine (https://en.wikipedia.org/wiki/Law_of_cosines)
|
23
26
|
|
24
|
-
|
27
|
+
## See Also
|
28
|
+
http://en.wikipedia.org/wiki/Earth_radius
|
29
|
+
|
30
|
+
## License
|
31
|
+
Artistic-2.0
|
32
|
+
|
33
|
+
## Authors
|
25
34
|
* Daniel Berger
|
26
35
|
* Ardith Falkner
|
data/Rakefile
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
require 'rake'
|
2
2
|
require 'rake/clean'
|
3
|
-
require 'rake/testtask'
|
4
3
|
require 'rbconfig'
|
5
|
-
|
4
|
+
require 'rspec/core/rake_task'
|
6
5
|
|
7
6
|
CLEAN.include('**/*.gem', '**/*.log')
|
8
7
|
|
@@ -12,7 +11,7 @@ namespace 'gem' do
|
|
12
11
|
require 'rubygems/package'
|
13
12
|
spec = eval(IO.read('gis-distance.gemspec'))
|
14
13
|
spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
|
15
|
-
Gem::Package.build(spec
|
14
|
+
Gem::Package.build(spec)
|
16
15
|
end
|
17
16
|
|
18
17
|
desc 'Install the gis-distance gem'
|
@@ -22,9 +21,7 @@ namespace 'gem' do
|
|
22
21
|
end
|
23
22
|
end
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
t.verbose = true
|
28
|
-
end
|
24
|
+
desc "Run the test suite"
|
25
|
+
RSpec::Core::RakeTask.new(:spec)
|
29
26
|
|
30
|
-
task :default => :
|
27
|
+
task :default => :spec
|
data/gis-distance.gemspec
CHANGED
@@ -2,17 +2,18 @@ require 'rubygems'
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'gis-distance'
|
5
|
-
spec.version = '1.0
|
5
|
+
spec.version = '1.1.0'
|
6
6
|
spec.authors = ['Daniel J. Berger', 'Ardith Falkner']
|
7
|
-
spec.license = 'Artistic
|
7
|
+
spec.license = 'Artistic-2.0'
|
8
8
|
spec.description = 'Calculate the distance between two points on Earth'
|
9
9
|
spec.email = 'djberg96@gmail.com'
|
10
10
|
spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
|
11
|
-
spec.test_files = ['
|
11
|
+
spec.test_files = Dir['spec/*_spec.rb']
|
12
12
|
spec.homepage = 'http://github.com/djberg96/gis-distance'
|
13
13
|
spec.cert_chain = ['certs/djberg96_pub.pem']
|
14
14
|
|
15
|
-
spec.
|
15
|
+
spec.add_development_dependency('rake')
|
16
|
+
spec.add_development_dependency('rspec', '~> 3.9')
|
16
17
|
|
17
18
|
spec.metadata = {
|
18
19
|
'homepage_uri' => 'https://github.com/djberg96/gis-distance',
|
data/lib/gis/distance.rb
CHANGED
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'gis/distance'
|
3
|
+
|
4
|
+
RSpec.describe GIS::Distance do
|
5
|
+
let(:gis){ GIS::Distance.new(40.47, 73.58, 34.3, 118.15) }
|
6
|
+
|
7
|
+
example "version" do
|
8
|
+
expect(GIS::Distance::VERSION).to eq('1.1.0')
|
9
|
+
expect(GIS::Distance::VERSION).to be_frozen
|
10
|
+
end
|
11
|
+
|
12
|
+
example "distance basic functionality" do
|
13
|
+
expect(gis).to respond_to(:distance)
|
14
|
+
expect{ gis.distance }.not_to raise_error
|
15
|
+
expect(gis.distance).to be_kind_of(Float)
|
16
|
+
end
|
17
|
+
|
18
|
+
example "distance method returns expected result" do
|
19
|
+
expect(gis.distance).to be_within(0.01).of(3952.39)
|
20
|
+
expect(GIS::Distance.new(40.47, 73.58, 40.47, 73.58).distance).to eq(0.0)
|
21
|
+
end
|
22
|
+
|
23
|
+
example "constructor requires four arguments" do
|
24
|
+
expect{ GIS::Distance.new }.to raise_error(ArgumentError)
|
25
|
+
expect{ GIS::Distance.new(40.47) }.to raise_error(ArgumentError)
|
26
|
+
expect{ GIS::Distance.new(40.47, 73.58) }.to raise_error(ArgumentError)
|
27
|
+
expect{ GIS::Distance.new(40.47, 73.58, 34.3) }.to raise_error(ArgumentError)
|
28
|
+
end
|
29
|
+
|
30
|
+
example "latitude and longitude must be within range" do
|
31
|
+
expect{ GIS::Distance.new(91.0, 100.0, 45.0, 45.0) }.to raise_error(GIS::Distance::Error)
|
32
|
+
expect{ GIS::Distance.new(90.0, 190.0, 45.0, 45.0) }.to raise_error(GIS::Distance::Error)
|
33
|
+
end
|
34
|
+
|
35
|
+
example "radius basic functionality" do
|
36
|
+
expect(gis).to respond_to(:radius)
|
37
|
+
expect{ gis.radius }.not_to raise_error
|
38
|
+
expect( gis.radius).to be_kind_of(Float)
|
39
|
+
end
|
40
|
+
|
41
|
+
example "default radius returns expected value" do
|
42
|
+
expect(gis.radius).to eq(6367.45)
|
43
|
+
end
|
44
|
+
|
45
|
+
example "radius does not accept an argument" do
|
46
|
+
expect{ gis.radius(1) }.to raise_error(ArgumentError)
|
47
|
+
end
|
48
|
+
|
49
|
+
example "radius setter basic functionality" do
|
50
|
+
expect(gis).to respond_to(:radius=)
|
51
|
+
expect{ gis.radius = 6368.0 }.not_to raise_error
|
52
|
+
expect( gis.radius).to eq(6368.0)
|
53
|
+
end
|
54
|
+
|
55
|
+
example "radius value must be within a certain range" do
|
56
|
+
expect{ gis.radius = 6200 }.to raise_error(GIS::Distance::Error)
|
57
|
+
expect{ gis.radius = 6400 }.to raise_error(GIS::Distance::Error)
|
58
|
+
end
|
59
|
+
|
60
|
+
example "formula basic functionality" do
|
61
|
+
expect(gis).to respond_to(:formula)
|
62
|
+
expect{ gis.formula }.not_to raise_error
|
63
|
+
expect(gis.formula).to be_kind_of(String)
|
64
|
+
end
|
65
|
+
|
66
|
+
example "formula default value" do
|
67
|
+
expect(gis.formula).to eq('haversine')
|
68
|
+
end
|
69
|
+
|
70
|
+
example "formula setter basic functionality" do
|
71
|
+
expect(gis).to respond_to(:formula=)
|
72
|
+
expect{ gis.formula = 'haversine' }.not_to raise_error
|
73
|
+
end
|
74
|
+
|
75
|
+
example "formula setter validates value" do
|
76
|
+
expect{ gis.formula(1) }.to raise_error(ArgumentError)
|
77
|
+
expect{ gis.formula = 'foo' }.to raise_error(GIS::Distance::Error)
|
78
|
+
end
|
79
|
+
|
80
|
+
example "mi basic functionality" do
|
81
|
+
expect(gis.distance).to respond_to(:mi)
|
82
|
+
expect{ gis.distance.mi }.not_to raise_error
|
83
|
+
expect(gis.distance.mi).to be_kind_of(Float)
|
84
|
+
end
|
85
|
+
|
86
|
+
example "mi behaves as expected" do
|
87
|
+
expect(gis.distance).to be > gis.distance.mi
|
88
|
+
expect(gis.distance.mi).to be_within(0.1).of(2455.9)
|
89
|
+
end
|
90
|
+
|
91
|
+
example "mi_expected_errors" do
|
92
|
+
expect{ gis.distance.mi(1) }.to raise_error(ArgumentError)
|
93
|
+
end
|
94
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gis-distance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
8
8
|
- Ardith Falkner
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain:
|
12
12
|
- |
|
@@ -36,33 +36,55 @@ cert_chain:
|
|
36
36
|
ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
|
37
37
|
WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
|
38
38
|
-----END CERTIFICATE-----
|
39
|
-
date:
|
40
|
-
dependencies:
|
39
|
+
date: 2021-02-27 00:00:00.000000000 Z
|
40
|
+
dependencies:
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.9'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.9'
|
41
69
|
description: Calculate the distance between two points on Earth
|
42
70
|
email: djberg96@gmail.com
|
43
71
|
executables: []
|
44
72
|
extensions: []
|
45
|
-
extra_rdoc_files:
|
46
|
-
- README
|
47
|
-
- CHANGES
|
48
|
-
- MANIFEST
|
73
|
+
extra_rdoc_files: []
|
49
74
|
files:
|
50
|
-
-
|
75
|
+
- CHANGES.md
|
76
|
+
- Gemfile
|
77
|
+
- MANIFEST.md
|
78
|
+
- README.md
|
79
|
+
- Rakefile
|
51
80
|
- certs/djberg96_pub.pem
|
52
|
-
- CHANGES
|
53
81
|
- gis-distance.gemspec
|
54
|
-
- lib
|
55
|
-
- lib/gis
|
56
|
-
- lib/gis/distance.rb
|
57
82
|
- lib/gis-distance.rb
|
58
|
-
-
|
59
|
-
-
|
60
|
-
- README
|
61
|
-
- test
|
62
|
-
- test/test_gis_distance.rb
|
83
|
+
- lib/gis/distance.rb
|
84
|
+
- spec/gis_distance_spec.rb
|
63
85
|
homepage: http://github.com/djberg96/gis-distance
|
64
86
|
licenses:
|
65
|
-
- Artistic
|
87
|
+
- Artistic-2.0
|
66
88
|
metadata:
|
67
89
|
homepage_uri: https://github.com/djberg96/gis-distance
|
68
90
|
bug_tracker_uri: https://github.com/djberg96/gis-distance/issues
|
@@ -70,7 +92,7 @@ metadata:
|
|
70
92
|
documentation_uri: https://github.com/djberg96/gis-distance/wiki
|
71
93
|
source_code_uri: https://github.com/djberg96/gis-distance
|
72
94
|
wiki_uri: https://github.com/djberg96/gis-distance/wiki
|
73
|
-
post_install_message:
|
95
|
+
post_install_message:
|
74
96
|
rdoc_options: []
|
75
97
|
require_paths:
|
76
98
|
- lib
|
@@ -85,11 +107,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
107
|
- !ruby/object:Gem::Version
|
86
108
|
version: '0'
|
87
109
|
requirements: []
|
88
|
-
|
89
|
-
|
90
|
-
signing_key:
|
110
|
+
rubygems_version: 3.0.3
|
111
|
+
signing_key:
|
91
112
|
specification_version: 4
|
92
113
|
summary: The gis-distance library provides a simple interface for calculating the
|
93
114
|
distance between two points on Earth using latitude and longitude.
|
94
115
|
test_files:
|
95
|
-
-
|
116
|
+
- spec/gis_distance_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|
data/test/test_gis_distance.rb
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'gis/distance'
|
3
|
-
|
4
|
-
class TC_GIS_Distance < Test::Unit::TestCase
|
5
|
-
def setup
|
6
|
-
@gis = GIS::Distance.new(40.47, 73.58, 34.3, 118.15)
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_version
|
10
|
-
assert_equal('1.0.2', GIS::Distance::VERSION)
|
11
|
-
assert_true(GIS::Distance::VERSION.frozen?)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_distance_basic_functionality
|
15
|
-
assert_respond_to(@gis, :distance)
|
16
|
-
assert_nothing_raised{ @gis.distance }
|
17
|
-
assert_kind_of(Float, @gis.distance)
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_distance
|
21
|
-
assert_in_delta(0.01, 3952.39, @gis.distance)
|
22
|
-
assert_equal(0.0, GIS::Distance.new(40.47, 73.58, 40.47, 73.58).distance)
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_distance_expected_argument_errors
|
26
|
-
assert_raise(ArgumentError){ GIS::Distance.new }
|
27
|
-
assert_raise(ArgumentError){ GIS::Distance.new(40.47) }
|
28
|
-
assert_raise(ArgumentError){ GIS::Distance.new(40.47, 73.58) }
|
29
|
-
assert_raise(ArgumentError){ GIS::Distance.new(40.47, 73.58, 34.3) }
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_distance_expected_range_errors
|
33
|
-
assert_raise(GIS::Distance::Error){ GIS::Distance.new(91.0, 100.0, 45.0, 45.0) }
|
34
|
-
assert_raise(GIS::Distance::Error){ GIS::Distance.new(90.0, 190.0, 45.0, 45.0) }
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_radius_basic_functionality
|
38
|
-
assert_respond_to(@gis, :radius)
|
39
|
-
assert_nothing_raised{ @gis.radius }
|
40
|
-
assert_kind_of(Float, @gis.radius)
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_default_radius
|
44
|
-
assert_equal(6367.45, @gis.radius)
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_radius_expected_errors
|
48
|
-
assert_raise(ArgumentError){ @gis.radius(1) }
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_radius_setter_basic_functionality
|
52
|
-
assert_respond_to(@gis, :radius=)
|
53
|
-
assert_nothing_raised{ @gis.radius = 6368.0 }
|
54
|
-
assert_equal(6368.0, @gis.radius)
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_radius_setter_expected_errors
|
58
|
-
assert_raise(GIS::Distance::Error){ @gis.radius = 6200 }
|
59
|
-
assert_raise(GIS::Distance::Error){ @gis.radius = 6400 }
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_formula_basic_functionality
|
63
|
-
assert_respond_to(@gis, :formula)
|
64
|
-
assert_nothing_raised{ @gis.formula }
|
65
|
-
assert_kind_of(String, @gis.formula)
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_formula
|
69
|
-
assert_equal('haversine', @gis.formula)
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_formula_setter_basic_functionality
|
73
|
-
assert_respond_to(@gis, :formula=)
|
74
|
-
assert_nothing_raised{ @gis.formula = 'haversine' }
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_formula_expected_errors
|
78
|
-
assert_raise(ArgumentError){ @gis.formula(1) }
|
79
|
-
assert_raise(GIS::Distance::Error){ @gis.formula = 'foo' }
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_mi_basic_functionality
|
83
|
-
assert_respond_to(@gis.distance, :mi)
|
84
|
-
assert_nothing_raised{ @gis.distance.mi }
|
85
|
-
assert_kind_of(Float, @gis.distance.mi)
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_mi
|
89
|
-
assert(@gis.distance > @gis.distance.mi)
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_mi_expected_errors
|
93
|
-
assert_raise(ArgumentError){ @gis.distance.mi(1) }
|
94
|
-
end
|
95
|
-
|
96
|
-
def teardown
|
97
|
-
@gis = nil
|
98
|
-
end
|
99
|
-
end
|