silva 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -1
- data/Rakefile +4 -0
- data/lib/silva/exception.rb +10 -0
- data/lib/silva/transform.rb +1 -2
- data/lib/silva/version.rb +1 -1
- data/test/test_bad_data.rb +19 -0
- data/test/test_osgb36.rb +23 -0
- data/test/test_wgs84.rb +0 -6
- metadata +4 -2
data/.gitignore
CHANGED
data/Rakefile
CHANGED
data/lib/silva/exception.rb
CHANGED
@@ -1,7 +1,17 @@
|
|
1
1
|
module Silva
|
2
|
+
##
|
3
|
+
# Indicates that an invalid system name has been passed.
|
2
4
|
class InvalidSystemError < StandardError; end
|
5
|
+
##
|
6
|
+
# Indicates that an invalid transform has been attempted.
|
3
7
|
class InvalidTransformError < StandardError; end
|
8
|
+
##
|
9
|
+
# Indicates that an invalid parameter has been passed.
|
4
10
|
class InvalidParamError < StandardError; end
|
11
|
+
##
|
12
|
+
# Indicates that an invalid parameter value has been passed.
|
5
13
|
class InvalidParamValueError < StandardError; end
|
14
|
+
##
|
15
|
+
# Indicates that an insufficient parameters have been passed.
|
6
16
|
class InsufficientParamsError < StandardError; end
|
7
17
|
end
|
data/lib/silva/transform.rb
CHANGED
@@ -42,6 +42,7 @@ module Silva
|
|
42
42
|
helmert_transform(osgb36, :wgs84, AIRY1830, HELMERT_PARAMS.inject({}) { |h, (k, v)| h[k] = v * -1; h }, GRS80)
|
43
43
|
end
|
44
44
|
|
45
|
+
|
45
46
|
##
|
46
47
|
# Convert a :wgs84 co-ordinate system to :osgb36
|
47
48
|
#
|
@@ -139,7 +140,6 @@ module Silva
|
|
139
140
|
h = source_system.alt
|
140
141
|
|
141
142
|
a1 = ellipsoid_1[:a]
|
142
|
-
b1 = ellipsoid_1[:b]
|
143
143
|
|
144
144
|
# convert co-ordinates to 3D Cartesian. See:
|
145
145
|
# http://www.ordnancesurvey.co.uk/oswebsite/gps/docs/A_Guide_to_Coordinate_Systems_in_Great_Britain.pdf
|
@@ -165,7 +165,6 @@ module Silva
|
|
165
165
|
|
166
166
|
# convert 3D Cartesian co-ordinates back to lat, long, alt
|
167
167
|
a2 = ellipsoid_2[:a]
|
168
|
-
b2 = ellipsoid_2[:b]
|
169
168
|
precision = 4 / a2
|
170
169
|
|
171
170
|
e_sq2 = eccentricity_squared(ellipsoid_2)
|
data/lib/silva/version.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
class TestBadData < Test::Unit::TestCase
|
2
|
+
def setup
|
3
|
+
@data = Silva::Test::DATA_BAD
|
4
|
+
end
|
5
|
+
|
6
|
+
def test_wgs84_to_en
|
7
|
+
l = Silva::Location.from(:wgs84, @data[:wgs84])
|
8
|
+
assert_raise Silva::InvalidParamValueError do
|
9
|
+
l.to(:en)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_gridref_to_en
|
14
|
+
assert_raise Silva::InvalidParamValueError do
|
15
|
+
l = Silva::Location.from(:gridref, @data[:gridref])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
data/test/test_osgb36.rb
CHANGED
@@ -1,2 +1,25 @@
|
|
1
1
|
class TestOsgb36 < Test::Unit::TestCase
|
2
|
+
def test_osgb36_to_en
|
3
|
+
Silva::Test::DATA.each do |data|
|
4
|
+
l = Silva::Location.from(:osgb36, data[:osgb36]).to(:en)
|
5
|
+
assert_in_delta data[:en][:easting], l.easting, Silva::Test::EN_DELTA
|
6
|
+
assert_in_delta data[:en][:northing], l.northing, Silva::Test::EN_DELTA
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_osgb36_to_wgs84
|
11
|
+
Silva::Test::DATA.each do |data|
|
12
|
+
l = Silva::Location.from(:osgb36, data[:osgb36]).to(:wgs84)
|
13
|
+
assert_in_delta data[:wgs84][:lat], l.lat, Silva::Test::LAT_DELTA
|
14
|
+
assert_in_delta data[:wgs84][:long], l.long, Silva::Test::LONG_DELTA
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_osgb36_to_gridref
|
19
|
+
Silva::Test::DATA.each do |data|
|
20
|
+
l = Silva::Location.from(:osgb36, data[:osgb36]).to(:gridref, :digits => 8)
|
21
|
+
# Final digit too sensitive in os examples
|
22
|
+
assert_equal data[:gridref][0..-2], l.gridref[0..-2]
|
23
|
+
end
|
24
|
+
end
|
2
25
|
end
|
data/test/test_wgs84.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: silva
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test/unit
|
@@ -53,6 +53,7 @@ files:
|
|
53
53
|
- lib/silva/transform.rb
|
54
54
|
- lib/silva/version.rb
|
55
55
|
- silva.gemspec
|
56
|
+
- test/test_bad_data.rb
|
56
57
|
- test/test_data.rb
|
57
58
|
- test/test_en.rb
|
58
59
|
- test/test_gridref.rb
|
@@ -87,6 +88,7 @@ specification_version: 3
|
|
87
88
|
summary: Convert between the GPS (WGS84) location standard and UK Ordnance Survey
|
88
89
|
standards.
|
89
90
|
test_files:
|
91
|
+
- test/test_bad_data.rb
|
90
92
|
- test/test_data.rb
|
91
93
|
- test/test_en.rb
|
92
94
|
- test/test_gridref.rb
|