proj4rb 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +26 -15
  3. data/README.rdoc +82 -44
  4. data/Rakefile +27 -27
  5. data/lib/api/api.rb +96 -118
  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 -32
  23. data/lib/proj/axis_info.rb +44 -0
  24. data/lib/proj/bounds.rb +13 -0
  25. data/lib/proj/context.rb +174 -28
  26. data/lib/proj/conversion.rb +92 -0
  27. data/lib/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 -204
  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 +77 -41
  36. data/lib/proj/error.rb +62 -9
  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/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 -80
  47. data/lib/proj/pj_objects.rb +44 -0
  48. data/lib/proj/prime_meridian.rb +65 -39
  49. data/lib/proj/projection.rb +698 -207
  50. data/lib/proj/session.rb +46 -0
  51. data/lib/proj/strings.rb +32 -0
  52. data/lib/proj/transformation.rb +101 -60
  53. data/lib/proj/unit.rb +108 -53
  54. data/lib/proj.rb +110 -9
  55. data/proj4rb.gemspec +5 -5
  56. data/test/abstract_test.rb +23 -1
  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/crs_test.rb +770 -71
  61. data/test/database_test.rb +360 -0
  62. data/test/datum_ensemble_test.rb +65 -0
  63. data/test/datum_test.rb +55 -0
  64. data/test/ellipsoid_test.rb +64 -18
  65. data/test/file_api_test.rb +66 -0
  66. data/test/grid_cache_test.rb +72 -0
  67. data/test/grid_test.rb +141 -0
  68. data/test/network_api_test.rb +45 -0
  69. data/test/operation_factory_context_test.rb +201 -0
  70. data/test/parameters_test.rb +40 -0
  71. data/test/pj_object_test.rb +179 -0
  72. data/test/prime_meridian_test.rb +76 -0
  73. data/test/proj_test.rb +46 -4
  74. data/test/projection_test.rb +646 -222
  75. data/test/session_test.rb +78 -0
  76. data/test/transformation_test.rb +149 -7
  77. data/test/unit_test.rb +57 -28
  78. metadata +51 -13
  79. data/lib/api/api_4_9.rb +0 -31
  80. data/lib/proj/config.rb +0 -70
  81. data/lib/proj/point.rb +0 -72
  82. 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