silva 0.0.9 → 0.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.
- 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
|