proj4rb 4.1.0 → 5.0.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.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +98 -0
  3. data/Gemfile +4 -4
  4. data/README.md +53 -0
  5. data/lib/api/proj.rb +750 -0
  6. data/lib/api/proj_experimental.rb +7 -0
  7. data/lib/api/proj_ffi.rb +47 -0
  8. data/lib/api/proj_version.rb +26 -0
  9. data/lib/examples/axis_order_normalization.rb +13 -0
  10. data/lib/examples/batch_transformation.rb +25 -0
  11. data/lib/examples/context_logging.rb +26 -0
  12. data/lib/examples/crs_identification.rb +18 -0
  13. data/lib/examples/database_query.rb +27 -0
  14. data/lib/examples/geodetic_distance.rb +38 -0
  15. data/lib/examples/geodetic_to_projected.rb +18 -0
  16. data/lib/examples/operation_factory_context.rb +19 -0
  17. data/lib/examples/pipeline_operator.rb +21 -0
  18. data/lib/examples/promote_demote_3d.rb +23 -0
  19. data/lib/examples/serialization_formats.rb +17 -0
  20. data/lib/examples/transform_bounds.rb +18 -0
  21. data/lib/examples/transformation_with_area.rb +18 -0
  22. data/lib/proj/area.rb +74 -74
  23. data/lib/proj/axis_info.rb +44 -44
  24. data/lib/proj/bounds.rb +22 -0
  25. data/lib/proj/bounds3d.rb +45 -0
  26. data/lib/proj/context.rb +57 -23
  27. data/lib/proj/conversion.rb +94 -91
  28. data/lib/proj/coordinate.rb +304 -281
  29. data/lib/proj/coordinate_metadata.rb +38 -0
  30. data/lib/proj/coordinate_operation_mixin.rb +464 -381
  31. data/lib/proj/coordinate_system.rb +143 -137
  32. data/lib/proj/crs.rb +688 -672
  33. data/lib/proj/crs_info.rb +47 -47
  34. data/lib/proj/database.rb +310 -305
  35. data/lib/proj/datum.rb +32 -32
  36. data/lib/proj/datum_ensemble.rb +34 -34
  37. data/lib/proj/domain.rb +82 -0
  38. data/lib/proj/ellipsoid.rb +77 -77
  39. data/lib/proj/error.rb +7 -8
  40. data/lib/proj/file_api_callbacks.rb +165 -0
  41. data/lib/proj/grid.rb +121 -121
  42. data/lib/proj/grid_cache.rb +65 -64
  43. data/lib/proj/grid_info.rb +19 -19
  44. data/lib/proj/life_span.rb +21 -0
  45. data/lib/proj/network_api_callbacks.rb +86 -0
  46. data/lib/proj/operation.rb +66 -42
  47. data/lib/proj/operation_factory_context.rb +4 -2
  48. data/lib/proj/options.rb +41 -0
  49. data/lib/proj/parameter.rb +37 -37
  50. data/lib/proj/parameters.rb +106 -107
  51. data/lib/proj/pj_axis_description.rb +26 -0
  52. data/lib/proj/pj_object.rb +602 -670
  53. data/lib/proj/pj_objects.rb +45 -45
  54. data/lib/proj/pj_param_description.rb +28 -0
  55. data/lib/proj/prime_meridian.rb +65 -65
  56. data/lib/proj/projection.rb +1771 -698
  57. data/lib/proj/session.rb +2 -0
  58. data/lib/proj/transformation.rb +102 -102
  59. data/lib/proj/unit.rb +81 -108
  60. data/lib/proj.rb +10 -3
  61. data/lib/proj4.rb +5 -5
  62. data/proj4rb.gemspec +10 -5
  63. data/test/abstract_test.rb +7 -28
  64. data/test/context_test.rb +210 -172
  65. data/test/context_validation_test.rb +11 -0
  66. data/test/conversion_test.rb +376 -368
  67. data/test/coordinate_metadata_test.rb +34 -0
  68. data/test/coordinate_system_test.rb +162 -144
  69. data/test/coordinate_test.rb +289 -34
  70. data/test/crs_test.rb +1112 -1072
  71. data/test/database_test.rb +407 -359
  72. data/test/datum_ensemble_test.rb +64 -64
  73. data/test/datum_test.rb +61 -54
  74. data/test/domain_test.rb +72 -0
  75. data/test/ellipsoid_test.rb +80 -80
  76. data/test/examples_test.rb +149 -0
  77. data/test/file_api_example.rb +58 -0
  78. data/test/file_api_test.rb +74 -66
  79. data/test/grid_cache_test.rb +72 -72
  80. data/test/grid_test.rb +126 -141
  81. data/test/network_api_example.rb +48 -0
  82. data/test/network_api_test.rb +33 -45
  83. data/test/operation_factory_context_test.rb +225 -201
  84. data/test/operation_test.rb +40 -29
  85. data/test/options_test.rb +17 -0
  86. data/test/parameters_test.rb +86 -40
  87. data/test/pj_object_test.rb +221 -179
  88. data/test/prime_meridian_test.rb +75 -75
  89. data/test/proj_test.rb +58 -58
  90. data/test/projection_test.rb +680 -650
  91. data/test/session_test.rb +78 -77
  92. data/test/transformation_test.rb +238 -210
  93. data/test/unit_test.rb +114 -76
  94. metadata +45 -31
  95. data/ChangeLog +0 -89
  96. data/README.rdoc +0 -207
  97. data/lib/api/api.rb +0 -117
  98. data/lib/api/api_5_0.rb +0 -338
  99. data/lib/api/api_5_1.rb +0 -7
  100. data/lib/api/api_5_2.rb +0 -5
  101. data/lib/api/api_6_0.rb +0 -146
  102. data/lib/api/api_6_1.rb +0 -5
  103. data/lib/api/api_6_2.rb +0 -10
  104. data/lib/api/api_6_3.rb +0 -6
  105. data/lib/api/api_7_0.rb +0 -69
  106. data/lib/api/api_7_1.rb +0 -73
  107. data/lib/api/api_7_2.rb +0 -14
  108. data/lib/api/api_8_0.rb +0 -6
  109. data/lib/api/api_8_1.rb +0 -24
  110. data/lib/api/api_8_2.rb +0 -6
  111. data/lib/api/api_9_1.rb +0 -7
  112. data/lib/api/api_9_2.rb +0 -9
  113. data/lib/api/api_experimental.rb +0 -201
  114. data/lib/proj/file_api.rb +0 -166
  115. data/lib/proj/network_api.rb +0 -92
data/lib/proj/crs_info.rb CHANGED
@@ -1,47 +1,47 @@
1
- # encoding: UTF-8
2
- module Proj
3
- class CrsInfo
4
- attr_reader :auth_name, :code, :name, :crs_type, :deprecated, :bbox_valid,
5
- :west_lon_degree, :south_lat_degree, :east_lon_degree, :north_lat_degree,
6
- :area_name, :projection_method_name, :celestial_body_name
7
-
8
- def self.from_proj_crs_info(proj_crs_info)
9
- data = { auth_name: proj_crs_info[:auth_name],
10
- code: proj_crs_info[:code],
11
- name: proj_crs_info[:name],
12
- crs_type: proj_crs_info[:type],
13
- deprecated: proj_crs_info[:deprecated] == 1 ? true : false,
14
- bbox_valid: proj_crs_info[:bbox_valid] == 1 ? true : false,
15
- west_lon_degree: proj_crs_info[:west_lon_degree],
16
- south_lat_degree: proj_crs_info[:south_lat_degree],
17
- east_lon_degree: proj_crs_info[:east_lon_degree],
18
- north_lat_degree: proj_crs_info[:north_lat_degree],
19
- area_name: proj_crs_info[:area_name],
20
- projection_method_name: proj_crs_info[:projection_method_name]}
21
-
22
- if Api::PROJ_VERSION >= Gem::Version.new('8.1.0')
23
- data[:celestial_body_name] = proj_crs_info[:celestial_body_name]
24
- end
25
-
26
- new(**data)
27
- end
28
-
29
- def initialize(auth_name:, code:, name:, crs_type:, deprecated:, bbox_valid:,
30
- west_lon_degree:, south_lat_degree:, east_lon_degree:, north_lat_degree:,
31
- area_name:, projection_method_name:, celestial_body_name: nil)
32
- @auth_name = auth_name
33
- @code = code
34
- @name = name
35
- @crs_type = crs_type
36
- @deprecated = deprecated
37
- @bbox_valid = bbox_valid
38
- @west_lon_degree = west_lon_degree
39
- @south_lat_degree = south_lat_degree
40
- @east_lon_degree = east_lon_degree
41
- @north_lat_degree = north_lat_degree
42
- @area_name = area_name
43
- @projection_method_name = projection_method_name
44
- @celestial_body_name = celestial_body_name
45
- end
46
- end
47
- end
1
+ # encoding: UTF-8
2
+ module Proj
3
+ class CrsInfo
4
+ attr_reader :auth_name, :code, :name, :crs_type, :deprecated, :bbox_valid,
5
+ :west_lon_degree, :south_lat_degree, :east_lon_degree, :north_lat_degree,
6
+ :area_name, :projection_method_name, :celestial_body_name
7
+
8
+ def self.from_proj_crs_info(proj_crs_info)
9
+ data = { auth_name: proj_crs_info[:auth_name].read_string_to_null,
10
+ code: proj_crs_info[:code].read_string_to_null,
11
+ name: proj_crs_info[:name].read_string_to_null,
12
+ crs_type: proj_crs_info[:type],
13
+ deprecated: proj_crs_info[:deprecated] == 1 ? true : false,
14
+ bbox_valid: proj_crs_info[:bbox_valid] == 1 ? true : false,
15
+ west_lon_degree: proj_crs_info[:west_lon_degree],
16
+ south_lat_degree: proj_crs_info[:south_lat_degree],
17
+ east_lon_degree: proj_crs_info[:east_lon_degree],
18
+ north_lat_degree: proj_crs_info[:north_lat_degree],
19
+ area_name: proj_crs_info[:area_name].read_string_to_null,
20
+ projection_method_name: proj_crs_info[:projection_method_name].null? ? nil : proj_crs_info[:projection_method_name].read_string_to_null}
21
+
22
+ if Api::PROJ_VERSION >= Gem::Version.new('8.1.0')
23
+ data[:celestial_body_name] = proj_crs_info[:celestial_body_name].null? ? nil : proj_crs_info[:celestial_body_name].read_string_to_null
24
+ end
25
+
26
+ new(**data)
27
+ end
28
+
29
+ def initialize(auth_name:, code:, name:, crs_type:, deprecated:, bbox_valid:,
30
+ west_lon_degree:, south_lat_degree:, east_lon_degree:, north_lat_degree:,
31
+ area_name:, projection_method_name:, celestial_body_name: nil)
32
+ @auth_name = auth_name
33
+ @code = code
34
+ @name = name
35
+ @crs_type = crs_type
36
+ @deprecated = deprecated
37
+ @bbox_valid = bbox_valid
38
+ @west_lon_degree = west_lon_degree
39
+ @south_lat_degree = south_lat_degree
40
+ @east_lon_degree = east_lon_degree
41
+ @north_lat_degree = north_lat_degree
42
+ @area_name = area_name
43
+ @projection_method_name = projection_method_name
44
+ @celestial_body_name = celestial_body_name
45
+ end
46
+ end
47
+ end