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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +98 -0
- data/Gemfile +4 -4
- data/README.md +53 -0
- data/lib/api/proj.rb +750 -0
- data/lib/api/proj_experimental.rb +7 -0
- data/lib/api/proj_ffi.rb +47 -0
- data/lib/api/proj_version.rb +26 -0
- data/lib/examples/axis_order_normalization.rb +13 -0
- data/lib/examples/batch_transformation.rb +25 -0
- data/lib/examples/context_logging.rb +26 -0
- data/lib/examples/crs_identification.rb +18 -0
- data/lib/examples/database_query.rb +27 -0
- data/lib/examples/geodetic_distance.rb +38 -0
- data/lib/examples/geodetic_to_projected.rb +18 -0
- data/lib/examples/operation_factory_context.rb +19 -0
- data/lib/examples/pipeline_operator.rb +21 -0
- data/lib/examples/promote_demote_3d.rb +23 -0
- data/lib/examples/serialization_formats.rb +17 -0
- data/lib/examples/transform_bounds.rb +18 -0
- data/lib/examples/transformation_with_area.rb +18 -0
- data/lib/proj/area.rb +74 -74
- data/lib/proj/axis_info.rb +44 -44
- data/lib/proj/bounds.rb +22 -0
- data/lib/proj/bounds3d.rb +45 -0
- data/lib/proj/context.rb +57 -23
- data/lib/proj/conversion.rb +94 -91
- data/lib/proj/coordinate.rb +304 -281
- data/lib/proj/coordinate_metadata.rb +38 -0
- data/lib/proj/coordinate_operation_mixin.rb +464 -381
- data/lib/proj/coordinate_system.rb +143 -137
- data/lib/proj/crs.rb +688 -672
- data/lib/proj/crs_info.rb +47 -47
- data/lib/proj/database.rb +310 -305
- data/lib/proj/datum.rb +32 -32
- data/lib/proj/datum_ensemble.rb +34 -34
- data/lib/proj/domain.rb +82 -0
- data/lib/proj/ellipsoid.rb +77 -77
- data/lib/proj/error.rb +7 -8
- data/lib/proj/file_api_callbacks.rb +165 -0
- data/lib/proj/grid.rb +121 -121
- data/lib/proj/grid_cache.rb +65 -64
- data/lib/proj/grid_info.rb +19 -19
- data/lib/proj/life_span.rb +21 -0
- data/lib/proj/network_api_callbacks.rb +86 -0
- data/lib/proj/operation.rb +66 -42
- data/lib/proj/operation_factory_context.rb +4 -2
- data/lib/proj/options.rb +41 -0
- data/lib/proj/parameter.rb +37 -37
- data/lib/proj/parameters.rb +106 -107
- data/lib/proj/pj_axis_description.rb +26 -0
- data/lib/proj/pj_object.rb +602 -670
- data/lib/proj/pj_objects.rb +45 -45
- data/lib/proj/pj_param_description.rb +28 -0
- data/lib/proj/prime_meridian.rb +65 -65
- data/lib/proj/projection.rb +1771 -698
- data/lib/proj/session.rb +2 -0
- data/lib/proj/transformation.rb +102 -102
- data/lib/proj/unit.rb +81 -108
- data/lib/proj.rb +10 -3
- data/lib/proj4.rb +5 -5
- data/proj4rb.gemspec +10 -5
- data/test/abstract_test.rb +7 -28
- data/test/context_test.rb +210 -172
- data/test/context_validation_test.rb +11 -0
- data/test/conversion_test.rb +376 -368
- data/test/coordinate_metadata_test.rb +34 -0
- data/test/coordinate_system_test.rb +162 -144
- data/test/coordinate_test.rb +289 -34
- data/test/crs_test.rb +1112 -1072
- data/test/database_test.rb +407 -359
- data/test/datum_ensemble_test.rb +64 -64
- data/test/datum_test.rb +61 -54
- data/test/domain_test.rb +72 -0
- data/test/ellipsoid_test.rb +80 -80
- data/test/examples_test.rb +149 -0
- data/test/file_api_example.rb +58 -0
- data/test/file_api_test.rb +74 -66
- data/test/grid_cache_test.rb +72 -72
- data/test/grid_test.rb +126 -141
- data/test/network_api_example.rb +48 -0
- data/test/network_api_test.rb +33 -45
- data/test/operation_factory_context_test.rb +225 -201
- data/test/operation_test.rb +40 -29
- data/test/options_test.rb +17 -0
- data/test/parameters_test.rb +86 -40
- data/test/pj_object_test.rb +221 -179
- data/test/prime_meridian_test.rb +75 -75
- data/test/proj_test.rb +58 -58
- data/test/projection_test.rb +680 -650
- data/test/session_test.rb +78 -77
- data/test/transformation_test.rb +238 -210
- data/test/unit_test.rb +114 -76
- metadata +45 -31
- data/ChangeLog +0 -89
- data/README.rdoc +0 -207
- data/lib/api/api.rb +0 -117
- data/lib/api/api_5_0.rb +0 -338
- data/lib/api/api_5_1.rb +0 -7
- data/lib/api/api_5_2.rb +0 -5
- data/lib/api/api_6_0.rb +0 -146
- data/lib/api/api_6_1.rb +0 -5
- data/lib/api/api_6_2.rb +0 -10
- data/lib/api/api_6_3.rb +0 -6
- data/lib/api/api_7_0.rb +0 -69
- data/lib/api/api_7_1.rb +0 -73
- data/lib/api/api_7_2.rb +0 -14
- data/lib/api/api_8_0.rb +0 -6
- data/lib/api/api_8_1.rb +0 -24
- data/lib/api/api_8_2.rb +0 -6
- data/lib/api/api_9_1.rb +0 -7
- data/lib/api/api_9_2.rb +0 -9
- data/lib/api/api_experimental.rb +0 -201
- data/lib/proj/file_api.rb +0 -166
- data/lib/proj/network_api.rb +0 -92
data/lib/proj/network_api.rb
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
require 'net/http'
|
|
2
|
-
|
|
3
|
-
module Proj
|
|
4
|
-
module NetworkApiCallbacks
|
|
5
|
-
def install_callbacks(context)
|
|
6
|
-
@open_cbk = self.method(:open_callback)
|
|
7
|
-
@close_cbk = self.method(:close_callback)
|
|
8
|
-
@header_value_cbk = self.method(:header_value_callback)
|
|
9
|
-
@read_range_cbk = self.method(:read_range_callback)
|
|
10
|
-
|
|
11
|
-
result = Api.proj_context_set_network_callbacks(context, @open_cbk, @close_cbk, @header_value_cbk, @read_range_cbk, nil)
|
|
12
|
-
|
|
13
|
-
if result != 1
|
|
14
|
-
Error.check_object(self)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def open_callback(context, url, offset, size_to_read, buffer, out_size_read, error_string_max_size, out_error_string, user_data)
|
|
19
|
-
uri = URI.parse(url)
|
|
20
|
-
data = self.open(uri, offset, size_to_read)
|
|
21
|
-
out_size = [size_to_read, data.size].min
|
|
22
|
-
out_size_read.write(:size_t, out_size)
|
|
23
|
-
buffer.write_bytes(data, 0, out_size)
|
|
24
|
-
|
|
25
|
-
# Return fake handle
|
|
26
|
-
FFI::MemoryPointer.new(:size_t)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def close_callback(context, handle, user_data)
|
|
30
|
-
self.close
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def header_value_callback(context, handle, header_name_ptr, user_data)
|
|
34
|
-
header_name = header_name_ptr.read_string_to_null
|
|
35
|
-
value = self.header_value(header_name)
|
|
36
|
-
FFI::MemoryPointer.from_string(value)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def read_range_callback(context, handle, offset, size_to_read, buffer, error_string_max_size, out_error_string, user_data)
|
|
40
|
-
data = self.read_range(offset, size_to_read)
|
|
41
|
-
out_size = [size_to_read, data.size].min
|
|
42
|
-
buffer.write_bytes(data, 0, out_size)
|
|
43
|
-
out_size
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Proj allows its network api to be replaced by a custom implementation. This can be
|
|
48
|
-
# done by calling Context#set_network_api with a user defined Class that includes the
|
|
49
|
-
# NetworkApiCallbacks module and implements its required methods.
|
|
50
|
-
#
|
|
51
|
-
# @see https://proj.org/usage/network.html
|
|
52
|
-
#
|
|
53
|
-
# The NetworkApiImpl class is a simple example of a network api implementation.
|
|
54
|
-
class NetworkApiImpl
|
|
55
|
-
include NetworkApiCallbacks
|
|
56
|
-
|
|
57
|
-
def initialize(context)
|
|
58
|
-
install_callbacks(context)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def open(uri, offset, size_to_read)
|
|
62
|
-
@uri = uri
|
|
63
|
-
@http = Net::HTTP.new(@uri.host, @uri.port)
|
|
64
|
-
if uri.scheme == "https"
|
|
65
|
-
@http.use_ssl = true
|
|
66
|
-
@http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
|
67
|
-
end
|
|
68
|
-
@http.start
|
|
69
|
-
|
|
70
|
-
read_data(offset, size_to_read)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def close
|
|
74
|
-
@http.finish
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def header_value(name)
|
|
78
|
-
@response[name]
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def read_range(offset, size_to_read)
|
|
82
|
-
read_data(offset, size_to_read)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def read_data(offset, size_to_read)
|
|
86
|
-
headers = {"Range": "bytes=#{offset}-#{offset + size_to_read - 1}"}
|
|
87
|
-
request = Net::HTTP::Get.new(@uri.request_uri, headers)
|
|
88
|
-
@response = @http.request(request)
|
|
89
|
-
@response.body.force_encoding("ASCII-8BIT")
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|