proj4rb 0.4.0-x86-mingw32 → 0.4.1-x86-mingw32
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/ext/projrb.c +0 -2
- data/lib/1.8/proj4_ruby.so +0 -0
- data/lib/proj4.rb +417 -410
- data/test/test_constants.rb +12 -14
- data/test/test_create_projection.rb +57 -58
- data/test/test_datums.rb +38 -37
- data/test/test_ellipsoids.rb +38 -37
- data/test/test_errors.rb +50 -54
- data/test/test_init_projection.rb +94 -93
- data/test/test_prime_meridians.rb +37 -36
- data/test/test_projection_type.rb +36 -35
- data/test/test_simple_projection.rb +50 -49
- data/test/test_suite.rb +14 -0
- data/test/test_transform.rb +99 -98
- data/test/test_units.rb +38 -37
- metadata +6 -4
@@ -1,44 +1,45 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'proj4')
|
3
4
|
require 'test/unit'
|
4
5
|
|
5
6
|
if Proj4::LIBVERSION >= 449
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
def test_one
|
17
|
-
prime_meridian = Proj4::PrimeMeridian.get('lisbon')
|
18
|
-
assert_kind_of Proj4::PrimeMeridian, prime_meridian
|
19
|
-
assert_equal 'lisbon', prime_meridian.id
|
20
|
-
assert_equal 'lisbon', prime_meridian.to_s
|
21
|
-
assert_equal '9d07\'54.862"W', prime_meridian.defn
|
22
|
-
assert_equal '#<Proj4::PrimeMeridian id="lisbon", defn="9d07\'54.862"W">', prime_meridian.inspect
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_compare
|
26
|
-
u1 = Proj4::PrimeMeridian.get('lisbon')
|
27
|
-
u2 = Proj4::PrimeMeridian.get('lisbon')
|
28
|
-
assert u1 == u2
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_failed_get
|
32
|
-
prime_meridian = Proj4::PrimeMeridian.get('foo')
|
33
|
-
assert_nil prime_meridian
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_new
|
37
|
-
assert_raise TypeError do
|
38
|
-
Proj4::PrimeMeridian.new
|
39
|
-
end
|
40
|
-
end
|
7
|
+
class PrimeMeridiansTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def test_get_all
|
10
|
+
prime_meridians = Proj4::PrimeMeridian.list.sort.collect{ |u| u.id}
|
11
|
+
assert prime_meridians.index('greenwich')
|
12
|
+
assert prime_meridians.index('athens')
|
13
|
+
assert prime_meridians.index('lisbon')
|
14
|
+
assert prime_meridians.index('rome')
|
15
|
+
end
|
41
16
|
|
17
|
+
def test_one
|
18
|
+
prime_meridian = Proj4::PrimeMeridian.get('lisbon')
|
19
|
+
assert_kind_of Proj4::PrimeMeridian, prime_meridian
|
20
|
+
assert_equal 'lisbon', prime_meridian.id
|
21
|
+
assert_equal 'lisbon', prime_meridian.to_s
|
22
|
+
assert_equal '9d07\'54.862"W', prime_meridian.defn
|
23
|
+
assert_equal '#<Proj4::PrimeMeridian id="lisbon", defn="9d07\'54.862"W">', prime_meridian.inspect
|
42
24
|
end
|
25
|
+
|
26
|
+
def test_compare
|
27
|
+
u1 = Proj4::PrimeMeridian.get('lisbon')
|
28
|
+
u2 = Proj4::PrimeMeridian.get('lisbon')
|
29
|
+
assert u1 == u2
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_failed_get
|
33
|
+
prime_meridian = Proj4::PrimeMeridian.get('foo')
|
34
|
+
assert_nil prime_meridian
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_new
|
38
|
+
assert_raise TypeError do
|
39
|
+
Proj4::PrimeMeridian.new
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
43
44
|
end
|
44
45
|
|
@@ -1,43 +1,44 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'proj4')
|
3
4
|
require 'test/unit'
|
4
5
|
|
5
6
|
if Proj4::LIBVERSION >= 449
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
def test_compare
|
26
|
-
pt1 = Proj4::ProjectionType.get('merc')
|
27
|
-
pt2 = Proj4::ProjectionType.get('merc')
|
28
|
-
assert pt1 == pt2
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_failed_get
|
32
|
-
assert_nil Proj4::ProjectionType.get('foo')
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_new
|
36
|
-
assert_raise TypeError do
|
37
|
-
Proj4::ProjectionType.new
|
38
|
-
end
|
39
|
-
end
|
7
|
+
class ProjectionTypesTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def test_get_all
|
10
|
+
pt = Proj4::ProjectionType.list.sort.collect{ |u| u.id }
|
11
|
+
assert pt.index('merc')
|
12
|
+
assert pt.index('aea')
|
13
|
+
assert pt.index('bipc')
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_one
|
17
|
+
pt = Proj4::ProjectionType.get('merc')
|
18
|
+
assert_kind_of Proj4::ProjectionType, pt
|
19
|
+
assert_equal 'merc', pt.id
|
20
|
+
assert_equal 'merc', pt.to_s
|
21
|
+
assert_equal 'Mercator', pt.name
|
22
|
+
assert_equal "Mercator\n\tCyl, Sph&Ell\n\tlat_ts=", pt.descr
|
23
|
+
assert_equal '#<Proj4::ProjectionType id="merc", name="Mercator">', pt.inspect
|
24
|
+
end
|
40
25
|
|
26
|
+
def test_compare
|
27
|
+
pt1 = Proj4::ProjectionType.get('merc')
|
28
|
+
pt2 = Proj4::ProjectionType.get('merc')
|
29
|
+
assert pt1 == pt2
|
41
30
|
end
|
31
|
+
|
32
|
+
def test_failed_get
|
33
|
+
assert_nil Proj4::ProjectionType.get('foo')
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_new
|
37
|
+
assert_raise TypeError do
|
38
|
+
Proj4::ProjectionType.new
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
42
43
|
end
|
43
44
|
|
@@ -1,57 +1,58 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'proj4')
|
3
4
|
require 'test/unit'
|
4
5
|
|
5
6
|
class SimpleProjectionTest < Test::Unit::TestCase
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
8
|
+
def setup
|
9
|
+
@proj_gk = Proj4::Projection.new(["init=epsg:31467"])
|
10
|
+
@lon = 8.4302123334
|
11
|
+
@lat = 48.9906726079
|
12
|
+
@rw = 3458305
|
13
|
+
@hw = 5428192
|
14
|
+
end
|
15
|
+
|
16
|
+
def rad2deg(rad)
|
17
|
+
rad * Proj4::RAD_TO_DEG
|
18
|
+
end
|
19
|
+
|
20
|
+
def deg2rad(deg)
|
21
|
+
deg * Proj4::DEG_TO_RAD
|
22
|
+
end
|
23
|
+
|
24
|
+
# echo "8.4302123334 48.9906726079" | proj +init=epsg:31467 -
|
25
|
+
def test_forward_gk
|
26
|
+
result = @proj_gk.forward( Proj4::Point.new( deg2rad(@lon), deg2rad(@lat) ) )
|
27
|
+
assert_in_delta @rw, result.x, 0.1
|
28
|
+
assert_in_delta @hw, result.y, 0.1
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_forward_gk_degrees
|
32
|
+
result = @proj_gk.forwardDeg( Proj4::Point.new( @lon, @lat ) )
|
33
|
+
assert_in_delta @rw, result.x, 0.1
|
34
|
+
assert_in_delta @hw, result.y, 0.1
|
35
|
+
end
|
36
|
+
|
37
|
+
# echo "3458305 5428192" | invproj -f '%.10f' +init=epsg:31467 -
|
38
|
+
def test_inverse_gk
|
39
|
+
result = @proj_gk.inverse( Proj4::Point.new(@rw, @hw) )
|
40
|
+
assert_in_delta @lon, rad2deg(result.x), 0.000000001
|
41
|
+
assert_in_delta @lat, rad2deg(result.y), 0.000000001
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_inverse_gk_degrees
|
45
|
+
result = @proj_gk.inverseDeg( Proj4::Point.new(@rw, @hw) )
|
46
|
+
assert_in_delta @lon, result.x, 0.000000001
|
47
|
+
assert_in_delta @lat, result.y, 0.000000001
|
48
|
+
end
|
49
|
+
|
50
|
+
# echo "190 92" | proj +init=epsg:31467 -
|
51
|
+
def test_out_of_bounds
|
52
|
+
assert_raise Proj4::LatitudeOrLongitudeExceededLimitsError do
|
53
|
+
@proj_gk.forward( Proj4::Point.new( deg2rad(190), deg2rad(92) ) )
|
54
|
+
end
|
55
|
+
end
|
55
56
|
|
56
57
|
end
|
57
58
|
|
data/test/test_suite.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require './test_constants'
|
4
|
+
require './test_create_projection'
|
5
|
+
require './test_datums'
|
6
|
+
require './test_ellipsoids'
|
7
|
+
require './test_errors'
|
8
|
+
require './test_init_projection'
|
9
|
+
require './test_prime_meridians'
|
10
|
+
require './test_projection_type'
|
11
|
+
require './test_simple_projection'
|
12
|
+
require './test_transform'
|
13
|
+
require './test_units'
|
14
|
+
|
data/test/test_transform.rb
CHANGED
@@ -1,114 +1,115 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'proj4')
|
3
4
|
require 'test/unit'
|
4
5
|
|
5
6
|
class TransformTest < Test::Unit::TestCase
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
8
|
+
PRECISION = 0.1 ** 8
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@proj_wgs84 = Proj4::Projection.new(["init=epsg:4326"])
|
12
|
+
@proj_gk = Proj4::Projection.new(["init=epsg:31467"])
|
13
|
+
@proj_merc = Proj4::Projection.new(["proj=merc"])
|
14
|
+
@lon = 8.4293092923
|
15
|
+
@lat = 48.9896114523
|
16
|
+
@rw = 3458305
|
17
|
+
@hw = 5428192
|
18
|
+
@zw = -5.1790915237
|
19
|
+
end
|
20
|
+
|
21
|
+
# echo "3458305 5428192" | cs2cs -f '%.10f' +init=epsg:31467 +to +init=epsg:4326 -
|
22
|
+
def test_gk_to_wgs84
|
23
|
+
from = Proj4::Point.new(@rw, @hw, @zw)
|
24
|
+
to = @proj_gk.transform(@proj_wgs84, from)
|
25
|
+
assert_not_equal from.object_id, to.object_id
|
26
|
+
assert_in_delta @lon, to.x * Proj4::RAD_TO_DEG, PRECISION
|
27
|
+
assert_in_delta @lat, to.y * Proj4::RAD_TO_DEG, PRECISION
|
28
|
+
assert_in_delta 0, to.z, PRECISION
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_gk_to_wgs84_inplace
|
32
|
+
from = Proj4::Point.new(@rw, @hw, @zw)
|
33
|
+
to = @proj_gk.transform!(@proj_wgs84, from)
|
34
|
+
assert_equal from.object_id, to.object_id
|
35
|
+
assert_in_delta @lon, to.x * Proj4::RAD_TO_DEG, PRECISION
|
36
|
+
assert_in_delta @lat, to.y * Proj4::RAD_TO_DEG, PRECISION
|
37
|
+
assert_in_delta 0, to.z, PRECISION
|
38
|
+
end
|
39
|
+
|
40
|
+
# echo "8.4293092923 48.9896114523" | cs2cs -f '%.10f' +init=epsg:4326 +to +init=epsg:31467 -
|
41
|
+
def test_wgs84_to_gk
|
42
|
+
point = @proj_wgs84.transform(@proj_gk, Proj4::Point.new(@lon * Proj4::DEG_TO_RAD, @lat * Proj4::DEG_TO_RAD, 0))
|
43
|
+
assert_equal @rw, point.x.round
|
44
|
+
assert_equal @hw, point.y.round
|
45
|
+
assert_in_delta @zw, point.z, PRECISION
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_no_dst_proj
|
49
|
+
assert_raise TypeError do
|
50
|
+
point = @proj_wgs84.transform(nil, Proj4::Point.new(@lon * Proj4::DEG_TO_RAD, @lat * Proj4::DEG_TO_RAD, 0))
|
18
51
|
end
|
52
|
+
end
|
19
53
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
to = @proj_gk.transform(@proj_wgs84, from)
|
24
|
-
assert_not_equal from.object_id, to.object_id
|
25
|
-
assert_in_delta @lon, to.x * Proj4::RAD_TO_DEG, PRECISION
|
26
|
-
assert_in_delta @lat, to.y * Proj4::RAD_TO_DEG, PRECISION
|
27
|
-
assert_in_delta 0, to.z, PRECISION
|
54
|
+
def test_not_a_point
|
55
|
+
assert_raise TypeError do
|
56
|
+
point = @proj_wgs84.transform(@proj_gk, nil)
|
28
57
|
end
|
58
|
+
end
|
29
59
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
assert_equal from.object_id, to.object_id
|
34
|
-
assert_in_delta @lon, to.x * Proj4::RAD_TO_DEG, PRECISION
|
35
|
-
assert_in_delta @lat, to.y * Proj4::RAD_TO_DEG, PRECISION
|
36
|
-
assert_in_delta 0, to.z, PRECISION
|
60
|
+
def test_mercator_at_pole_raise
|
61
|
+
assert_raise Proj4::ToleranceConditionError do
|
62
|
+
point = @proj_wgs84.transform(@proj_merc, Proj4::Point.new(0, 90 * Proj4::DEG_TO_RAD, 0))
|
37
63
|
end
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_mercator_at_pole_rescue
|
67
|
+
begin
|
68
|
+
point = @proj_wgs84.transform(@proj_merc, Proj4::Point.new(0, 90 * Proj4::DEG_TO_RAD, 0))
|
69
|
+
rescue => exception
|
70
|
+
assert_kind_of Proj4::ToleranceConditionError, exception
|
71
|
+
assert_equal 'tolerance condition error', exception.message
|
72
|
+
assert_equal 20, exception.errnum
|
45
73
|
end
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
assert_raise TypeError do
|
55
|
-
point = @proj_wgs84.transform(@proj_gk, nil)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_mercator_at_pole_raise
|
60
|
-
assert_raise Proj4::ToleranceConditionError do
|
61
|
-
point = @proj_wgs84.transform(@proj_merc, Proj4::Point.new(0, 90 * Proj4::DEG_TO_RAD, 0))
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_mercator_at_pole_rescue
|
66
|
-
begin
|
67
|
-
point = @proj_wgs84.transform(@proj_merc, Proj4::Point.new(0, 90 * Proj4::DEG_TO_RAD, 0))
|
68
|
-
rescue => exception
|
69
|
-
assert_kind_of Proj4::ToleranceConditionError, exception
|
70
|
-
assert_equal 'tolerance condition error', exception.message
|
71
|
-
assert_equal 20, exception.errnum
|
72
|
-
end
|
74
|
+
end
|
75
|
+
|
76
|
+
class XYPoint
|
77
|
+
attr_accessor :x, :y, :extra
|
78
|
+
def initialize(x, y, extra)
|
79
|
+
@x = x
|
80
|
+
@y = y
|
81
|
+
@extra = extra
|
73
82
|
end
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
assert_equal 'foo', point.extra
|
87
|
-
assert_in_delta @lon, point.x * Proj4::RAD_TO_DEG, PRECISION
|
88
|
-
assert_in_delta @lat, point.y * Proj4::RAD_TO_DEG, PRECISION
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_no_float
|
92
|
-
assert_raise TypeError do
|
93
|
-
@proj_gk.transform(@proj_wgs84, XYPoint.new('x', 'y', 'foo') )
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_syscallerr
|
98
|
-
# we need a test here that checks whether transform() properly returns a SystemCallError exception
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_collection
|
102
|
-
from0 = Proj4::Point.new(@rw, @hw, @zw)
|
103
|
-
from1 = Proj4::Point.new(0, 0, 0)
|
104
|
-
collection = @proj_gk.transform_all!(@proj_wgs84, [from0, from1])
|
105
|
-
to0 = collection[0]
|
106
|
-
to1 = collection[1]
|
107
|
-
assert_equal from1.object_id, to1.object_id
|
108
|
-
assert_in_delta @lon, to0.x * Proj4::RAD_TO_DEG, PRECISION
|
109
|
-
assert_in_delta @lat, to0.y * Proj4::RAD_TO_DEG, PRECISION
|
110
|
-
assert_in_delta 0, to0.z, PRECISION
|
83
|
+
end
|
84
|
+
def test_no_z
|
85
|
+
point = @proj_gk.transform(@proj_wgs84, XYPoint.new(@rw, @hw, 'foo') )
|
86
|
+
assert_kind_of XYPoint, point
|
87
|
+
assert_equal 'foo', point.extra
|
88
|
+
assert_in_delta @lon, point.x * Proj4::RAD_TO_DEG, PRECISION
|
89
|
+
assert_in_delta @lat, point.y * Proj4::RAD_TO_DEG, PRECISION
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_no_float
|
93
|
+
assert_raise TypeError do
|
94
|
+
@proj_gk.transform(@proj_wgs84, XYPoint.new('x', 'y', 'foo') )
|
111
95
|
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_syscallerr
|
99
|
+
# we need a test here that checks whether transform() properly returns a SystemCallError exception
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_collection
|
103
|
+
from0 = Proj4::Point.new(@rw, @hw, @zw)
|
104
|
+
from1 = Proj4::Point.new(0, 0, 0)
|
105
|
+
collection = @proj_gk.transform_all!(@proj_wgs84, [from0, from1])
|
106
|
+
to0 = collection[0]
|
107
|
+
to1 = collection[1]
|
108
|
+
assert_equal from1.object_id, to1.object_id
|
109
|
+
assert_in_delta @lon, to0.x * Proj4::RAD_TO_DEG, PRECISION
|
110
|
+
assert_in_delta @lat, to0.y * Proj4::RAD_TO_DEG, PRECISION
|
111
|
+
assert_in_delta 0, to0.z, PRECISION
|
112
|
+
end
|
112
113
|
|
113
114
|
end
|
114
115
|
|