proj4rb 2.2.2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +82 -66
  3. data/Gemfile +4 -4
  4. data/README.rdoc +82 -45
  5. data/lib/api/api.rb +96 -111
  6. data/lib/api/api_5_0.rb +331 -300
  7. data/lib/api/api_5_1.rb +6 -6
  8. data/lib/api/api_5_2.rb +4 -4
  9. data/lib/api/api_6_0.rb +116 -14
  10. data/lib/api/api_6_1.rb +4 -4
  11. data/lib/api/api_6_2.rb +9 -6
  12. data/lib/api/api_6_3.rb +6 -0
  13. data/lib/api/api_7_0.rb +68 -0
  14. data/lib/api/api_7_1.rb +73 -0
  15. data/lib/api/api_7_2.rb +14 -0
  16. data/lib/api/api_8_0.rb +6 -0
  17. data/lib/api/api_8_1.rb +24 -0
  18. data/lib/api/api_8_2.rb +6 -0
  19. data/lib/api/api_9_1.rb +7 -0
  20. data/lib/api/api_9_2.rb +9 -0
  21. data/lib/api/api_experimental.rb +196 -0
  22. data/lib/proj/area.rb +73 -0
  23. data/lib/proj/axis_info.rb +44 -0
  24. data/lib/proj/bounds.rb +13 -0
  25. data/lib/proj/context.rb +249 -0
  26. data/lib/proj/conversion.rb +92 -0
  27. data/lib/{coordinate.rb → proj/coordinate.rb} +281 -197
  28. data/lib/proj/coordinate_operation_mixin.rb +381 -0
  29. data/lib/proj/coordinate_system.rb +137 -0
  30. data/lib/proj/crs.rb +672 -0
  31. data/lib/proj/crs_info.rb +47 -0
  32. data/lib/proj/database.rb +305 -0
  33. data/lib/proj/datum.rb +32 -0
  34. data/lib/proj/datum_ensemble.rb +34 -0
  35. data/lib/proj/ellipsoid.rb +78 -0
  36. data/lib/proj/error.rb +71 -0
  37. data/lib/proj/file_api.rb +166 -0
  38. data/lib/proj/grid.rb +121 -0
  39. data/lib/proj/grid_cache.rb +64 -0
  40. data/lib/proj/grid_info.rb +19 -0
  41. data/lib/proj/network_api.rb +92 -0
  42. data/lib/{operation.rb → proj/operation.rb} +42 -42
  43. data/lib/proj/operation_factory_context.rb +136 -0
  44. data/lib/proj/parameter.rb +38 -0
  45. data/lib/proj/parameters.rb +106 -0
  46. data/lib/proj/pj_object.rb +670 -0
  47. data/lib/proj/pj_objects.rb +44 -0
  48. data/lib/proj/prime_meridian.rb +66 -0
  49. data/lib/proj/projection.rb +698 -0
  50. data/lib/proj/session.rb +46 -0
  51. data/lib/proj/strings.rb +32 -0
  52. data/lib/proj/transformation.rb +102 -0
  53. data/lib/proj/unit.rb +109 -0
  54. data/lib/proj.rb +118 -17
  55. data/proj4rb.gemspec +32 -32
  56. data/test/abstract_test.rb +29 -7
  57. data/test/context_test.rb +172 -82
  58. data/test/conversion_test.rb +368 -0
  59. data/test/coordinate_system_test.rb +144 -0
  60. data/test/coordinate_test.rb +34 -34
  61. data/test/crs_test.rb +1071 -372
  62. data/test/database_test.rb +360 -0
  63. data/test/datum_ensemble_test.rb +65 -0
  64. data/test/datum_test.rb +55 -0
  65. data/test/ellipsoid_test.rb +80 -34
  66. data/test/file_api_test.rb +66 -0
  67. data/test/grid_cache_test.rb +72 -0
  68. data/test/grid_test.rb +141 -0
  69. data/test/network_api_test.rb +45 -0
  70. data/test/operation_factory_context_test.rb +201 -0
  71. data/test/operation_test.rb +29 -29
  72. data/test/parameters_test.rb +40 -0
  73. data/test/pj_object_test.rb +179 -0
  74. data/test/prime_meridian_test.rb +76 -0
  75. data/test/proj_test.rb +58 -16
  76. data/test/projection_test.rb +650 -224
  77. data/test/session_test.rb +78 -0
  78. data/test/transformation_test.rb +209 -67
  79. data/test/unit_test.rb +76 -47
  80. metadata +67 -29
  81. data/lib/api/api_4_9.rb +0 -31
  82. data/lib/area.rb +0 -32
  83. data/lib/config.rb +0 -70
  84. data/lib/context.rb +0 -103
  85. data/lib/crs.rb +0 -204
  86. data/lib/ellipsoid.rb +0 -42
  87. data/lib/error.rb +0 -18
  88. data/lib/pj_object.rb +0 -80
  89. data/lib/point.rb +0 -72
  90. data/lib/prime_meridian.rb +0 -40
  91. data/lib/projection.rb +0 -207
  92. data/lib/transformation.rb +0 -61
  93. data/lib/unit.rb +0 -54
  94. data/test/prime_meridians_test.rb +0 -33
@@ -0,0 +1,144 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative './abstract_test'
4
+
5
+ class CoordinateSystemTest < AbstractTest
6
+ def test_create
7
+ context = Proj::Context.new
8
+ crs = Proj::Crs.new('EPSG:4326', context)
9
+ cs = crs.coordinate_system
10
+ axes = cs.axes
11
+ cs = Proj::CoordinateSystem.create(cs.type, axes, context)
12
+ assert_equal(2, cs.axis_count)
13
+ assert_equal(:PJ_CS_TYPE_ELLIPSOIDAL, cs.type)
14
+ assert_equal(:PJ_TYPE_UNKNOWN, cs.proj_type)
15
+ refute(cs.auth_name)
16
+ refute(cs.id_code)
17
+ end
18
+
19
+ def test_create_ellipsoidal_2d
20
+ context = Proj::Context.new
21
+ cs = Proj::CoordinateSystem.create_ellipsoidal_2d(:PJ_ELLPS2D_LONGITUDE_LATITUDE, context)
22
+ assert_equal(2, cs.axis_count)
23
+ assert_equal(:PJ_CS_TYPE_ELLIPSOIDAL, cs.type)
24
+ assert_equal(:PJ_TYPE_UNKNOWN, cs.proj_type)
25
+ refute(cs.auth_name)
26
+ refute(cs.id_code)
27
+ end
28
+
29
+ def test_create_ellipsoidal_3d
30
+ context = Proj::Context.new
31
+ cs = Proj::CoordinateSystem.create_ellipsoidal_3d(:PJ_ELLPS3D_LATITUDE_LONGITUDE_HEIGHT, context)
32
+ assert_equal(3, cs.axis_count)
33
+ assert_equal(:PJ_CS_TYPE_ELLIPSOIDAL, cs.type)
34
+ assert_equal(:PJ_TYPE_UNKNOWN, cs.proj_type)
35
+
36
+ axis = cs.axis_info(0)
37
+ assert_equal("Latitude", axis.name)
38
+ assert_equal("lat", axis.abbreviation)
39
+ assert_equal("north", axis.direction)
40
+ assert_equal("degree", axis.unit_name)
41
+ assert_in_delta(0.017453292519943295, axis.unit_conv_factor)
42
+
43
+ axis = cs.axis_info(1)
44
+ assert_equal("Longitude", axis.name)
45
+ assert_equal("lon", axis.abbreviation)
46
+ assert_equal("east", axis.direction)
47
+ assert_equal("degree", axis.unit_name)
48
+ assert_in_delta(0.017453292519943295, axis.unit_conv_factor)
49
+ end
50
+
51
+ def test_create_ellipsoidal_3d_custom_units
52
+ context = Proj::Context.new
53
+ cs = Proj::CoordinateSystem.create_ellipsoidal_3d(:PJ_ELLPS3D_LATITUDE_LONGITUDE_HEIGHT, context,
54
+ horizontal_angular_unit_name: "foo", horizontal_angular_unit_conv_factor: 0.5,
55
+ vertical_linear_unit_name: "bar", vertical_linear_unit_conv_factor: 0.6)
56
+ assert_equal(3, cs.axis_count)
57
+ assert_equal(:PJ_CS_TYPE_ELLIPSOIDAL, cs.type)
58
+ assert_equal(:PJ_TYPE_UNKNOWN, cs.proj_type)
59
+
60
+ axis = cs.axis_info(0)
61
+ assert_equal("Latitude", axis.name)
62
+ assert_equal("lat", axis.abbreviation)
63
+ assert_equal("north", axis.direction)
64
+ assert_equal("foo", axis.unit_name)
65
+ assert_equal(0.5, axis.unit_conv_factor)
66
+
67
+ axis = cs.axis_info(1)
68
+ assert_equal("Longitude", axis.name)
69
+ assert_equal("lon", axis.abbreviation)
70
+ assert_equal("east", axis.direction)
71
+ assert_equal("foo", axis.unit_name)
72
+ assert_equal(0.5, axis.unit_conv_factor)
73
+
74
+ axis = cs.axis_info(2)
75
+ assert_equal("Ellipsoidal height", axis.name)
76
+ assert_equal("h", axis.abbreviation)
77
+ assert_equal("up", axis.direction)
78
+ assert_equal("bar", axis.unit_name)
79
+ assert_equal(0.6, axis.unit_conv_factor)
80
+ end
81
+
82
+ def test_create_cartesian
83
+ context = Proj::Context.new
84
+ coordinate_system = Proj::CoordinateSystem.create_cartesian_2d(context, :PJ_CART2D_EASTING_NORTHING)
85
+ assert_equal(2, coordinate_system.axis_count)
86
+ assert_equal(:PJ_CS_TYPE_CARTESIAN, coordinate_system.type)
87
+ assert_equal(:PJ_TYPE_UNKNOWN, coordinate_system.proj_type)
88
+ end
89
+
90
+ def test_type
91
+ crs = Proj::Crs.new('EPSG:4326')
92
+ cs = crs.coordinate_system
93
+ refute(cs.name)
94
+ assert_equal(:PJ_CS_TYPE_ELLIPSOIDAL, cs.type)
95
+ assert_equal(:PJ_TYPE_UNKNOWN, cs.proj_type)
96
+ assert_equal("EPSG", cs.auth_name)
97
+ assert_equal("6422", cs.id_code)
98
+ end
99
+
100
+ def test_axis_count
101
+ crs = Proj::Crs.new('EPSG:4326')
102
+ cs = crs.coordinate_system
103
+ assert_equal(2, cs.axis_count)
104
+ end
105
+
106
+ def test_axis_info
107
+ crs = Proj::Crs.new('EPSG:4326')
108
+ cs = crs.coordinate_system
109
+ axis_info = cs.axis_info(0)
110
+
111
+ assert_equal("Geodetic latitude", axis_info.name)
112
+ assert_equal("Lat", axis_info.abbreviation)
113
+ assert_equal("north", axis_info.direction)
114
+ assert_equal(0.017453292519943295, axis_info.unit_conv_factor)
115
+ assert_equal("degree", axis_info.unit_name)
116
+ assert_equal("EPSG", axis_info.unit_auth_name)
117
+ assert_equal("9122", axis_info.unit_code)
118
+ end
119
+
120
+ def test_axes
121
+ crs = Proj::Crs.new('EPSG:4326')
122
+ cs = crs.coordinate_system
123
+ axes = cs.axes
124
+ assert_equal(2, axes.count)
125
+
126
+ axis_info = axes[0]
127
+ assert_equal("Geodetic latitude", axis_info.name)
128
+ assert_equal("Lat", axis_info.abbreviation)
129
+ assert_equal("north", axis_info.direction)
130
+ assert_equal(0.017453292519943295, axis_info.unit_conv_factor)
131
+ assert_equal("degree", axis_info.unit_name)
132
+ assert_equal("EPSG", axis_info.unit_auth_name)
133
+ assert_equal("9122", axis_info.unit_code)
134
+
135
+ axis_info = axes[1]
136
+ assert_equal("Geodetic longitude", axis_info.name)
137
+ assert_equal("Lon", axis_info.abbreviation)
138
+ assert_equal("east", axis_info.direction)
139
+ assert_equal(0.017453292519943295, axis_info.unit_conv_factor)
140
+ assert_equal("degree", axis_info.unit_name)
141
+ assert_equal("EPSG", axis_info.unit_auth_name)
142
+ assert_equal("9122", axis_info.unit_code)
143
+ end
144
+ end
@@ -1,35 +1,35 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './abstract_test'
4
-
5
- class CoordinateTest < AbstractTest
6
- def test_create_xyzt
7
- coord = Proj::Coordinate.new(:x => 1, :y => 2, :z => 3, :t => 4)
8
- assert_equal('v0: 1.0, v1: 2.0, v2: 3.0, v3: 4.0', coord.to_s)
9
- end
10
-
11
- def test_create_uvwt
12
- coord = Proj::Coordinate.new(:u => 5, :v => 6, :w => 7, :t => 8)
13
- assert_equal('v0: 5.0, v1: 6.0, v2: 7.0, v3: 8.0', coord.to_s)
14
- end
15
-
16
- def test_create_lpzt
17
- coord = Proj::Coordinate.new(:lam => 9, :phi => 10, :z => 11, :t => 12)
18
- assert_equal('v0: 9.0, v1: 10.0, v2: 11.0, v3: 12.0', coord.to_s)
19
- end
20
-
21
- def test_create_geod
22
- coord = Proj::Coordinate.new(:s => 13, :a1 => 14, :a2 => 15)
23
- assert_equal('v0: 13.0, v1: 14.0, v2: 15.0, v3: 0.0', coord.to_s)
24
- end
25
-
26
- def test_create_opk
27
- coord = Proj::Coordinate.new(:o => 16, :p => 17, :k => 18)
28
- assert_equal('v0: 16.0, v1: 17.0, v2: 18.0, v3: 0.0', coord.to_s)
29
- end
30
-
31
- def test_create_enu
32
- coord = Proj::Coordinate.new(:e => 19, :n => 20, :u => 21)
33
- assert_equal('v0: 19.0, v1: 20.0, v2: 21.0, v3: 0.0', coord.to_s)
34
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './abstract_test'
4
+
5
+ class CoordinateTest < AbstractTest
6
+ def test_create_xyzt
7
+ coord = Proj::Coordinate.new(:x => 1, :y => 2, :z => 3, :t => 4)
8
+ assert_equal('v0: 1.0, v1: 2.0, v2: 3.0, v3: 4.0', coord.to_s)
9
+ end
10
+
11
+ def test_create_uvwt
12
+ coord = Proj::Coordinate.new(:u => 5, :v => 6, :w => 7, :t => 8)
13
+ assert_equal('v0: 5.0, v1: 6.0, v2: 7.0, v3: 8.0', coord.to_s)
14
+ end
15
+
16
+ def test_create_lpzt
17
+ coord = Proj::Coordinate.new(:lam => 9, :phi => 10, :z => 11, :t => 12)
18
+ assert_equal('v0: 9.0, v1: 10.0, v2: 11.0, v3: 12.0', coord.to_s)
19
+ end
20
+
21
+ def test_create_geod
22
+ coord = Proj::Coordinate.new(:s => 13, :a1 => 14, :a2 => 15)
23
+ assert_equal('v0: 13.0, v1: 14.0, v2: 15.0, v3: 0.0', coord.to_s)
24
+ end
25
+
26
+ def test_create_opk
27
+ coord = Proj::Coordinate.new(:o => 16, :p => 17, :k => 18)
28
+ assert_equal('v0: 16.0, v1: 17.0, v2: 18.0, v3: 0.0', coord.to_s)
29
+ end
30
+
31
+ def test_create_enu
32
+ coord = Proj::Coordinate.new(:e => 19, :n => 20, :u => 21)
33
+ assert_equal('v0: 19.0, v1: 20.0, v2: 21.0, v3: 0.0', coord.to_s)
34
+ end
35
35
  end