proj4rb 3.0.0 → 4.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 (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,38 @@
1
+ module Proj
2
+ class Parameter
3
+ # @!attribute [r] name
4
+ # @return [String] Param name
5
+ # @!attribute [r] auth_name
6
+ # @return [String] Authority name
7
+ # @!attribute [r] code
8
+ # @return [String] Authority code
9
+ # @!attribute [r] value
10
+ # @return [String] Param value
11
+ # @!attribute [r] unit_conv_factor
12
+ # @return [String] Param unit_conv_factor
13
+ # @!attribute [r] unit_name
14
+ # @return [String] Param unit_name
15
+ # @!attribute [r] unit_type
16
+ # @return [PJ_UNIT_TYPE] Unit type
17
+ attr_reader :name, :auth_name, :code, :value,
18
+ :unit_conv_factor, :unit_name, :unit_type
19
+
20
+ def initialize(name:, auth_name: nil, code: nil, value:, unit_conv_factor:, unit_name: nil, unit_type:)
21
+ @name = name
22
+ @auth_name = auth_name
23
+ @code = code
24
+ @value = value
25
+ @unit_conv_factor = unit_conv_factor
26
+ @unit_name = unit_name
27
+ @unit_type = unit_type
28
+ end
29
+
30
+ # Returns param information in PJ_PARAM_DESCRIPTION structure
31
+ #
32
+ # @return [PJ_PARAM_DESCRIPTION]
33
+ def to_description
34
+ Api::PJ_PARAM_DESCRIPTION.create(name: name, auth_name: auth_name, code: code, value: value,
35
+ unit_conv_factor: unit_conv_factor, unit_name: name, unit_type: unit_type)
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,106 @@
1
+ # encoding: UTF-8
2
+ module Proj
3
+ class Parameters
4
+ def self.finalize(pointer)
5
+ proc do
6
+ Api.proj_get_crs_list_parameters_destroy(pointer)
7
+ end
8
+ end
9
+
10
+ def initialize
11
+ pointer = Api.proj_get_crs_list_parameters_create
12
+ @params = Api::PROJ_CRS_LIST_PARAMETERS.new(pointer)
13
+ ObjectSpace.define_finalizer(self, self.class.finalize(pointer))
14
+ end
15
+
16
+ def to_ptr
17
+ @params.to_ptr
18
+ end
19
+
20
+ def types
21
+ result = Array.new
22
+
23
+ unless @params[:types].null?
24
+ ints = @params[:types].read_array_of_int(@params[:types_count])
25
+ ints.each do |int|
26
+ result << Api::PJ_TYPE[int]
27
+ end
28
+ end
29
+ result
30
+ end
31
+
32
+ def types=(values)
33
+ ptr = FFI::MemoryPointer.new(:int, values.size)
34
+ ints = values.map {|symbol| Api::PJ_TYPE[symbol]}
35
+ ptr.write_array_of_int(ints)
36
+
37
+ @params[:types] = ptr
38
+ @params[:types_count] = values.size
39
+ end
40
+
41
+ def crs_area_of_use_contains_bbox
42
+ @params[:crs_area_of_use_contains_bbox]
43
+ end
44
+
45
+ def crs_area_of_use_contains_bbox=(value)
46
+ @params[:crs_area_of_use_contains_bbox] = value
47
+ end
48
+
49
+ def bbox_valid
50
+ @params[:bbox_valid] == 1 ? true : false
51
+ end
52
+
53
+ def bbox_valid=(value)
54
+ @params[:bbox_valid] = value ? 1 : 0
55
+ end
56
+
57
+ def west_lon_degree
58
+ @params[:west_lon_degree]
59
+ end
60
+
61
+ def west_lon_degree=(value)
62
+ @params[:west_lon_degree] = value
63
+ end
64
+
65
+ def south_lat_degree
66
+ @params[:south_lat_degree]
67
+ end
68
+
69
+ def south_lat_degree=(value)
70
+ @params[:south_lat_degree] = value
71
+ end
72
+
73
+ def east_lon_degree
74
+ @params[:east_lon_degree]
75
+ end
76
+
77
+ def east_lon_degree=(value)
78
+ @params[:east_lon_degree] = value
79
+ end
80
+
81
+ def north_lat_degree
82
+ @params[:north_lat_degree]
83
+ end
84
+
85
+ def north_lat_degree=(value)
86
+ @params[:north_lat_degree] = value
87
+ end
88
+
89
+ def allow_deprecated
90
+ @params[:allow_deprecated] == 1 ? true : false
91
+ end
92
+
93
+ def allow_deprecated=(value)
94
+ @params[:allow_deprecated] = value ? 1 : 0
95
+ end
96
+
97
+ def celestial_body_name
98
+ @params[:celestial_body_name].read_string_to_null
99
+ end
100
+
101
+ def celestial_body_name=(value)
102
+ ptr = FFI::MemoryPointer.from_string(value)
103
+ @params[:celestial_body_name] = ptr
104
+ end
105
+ end
106
+ end