ffi-gdal 1.0.4 → 1.1.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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +9 -0
  3. data/.devcontainer/devcontainer.json +98 -0
  4. data/.github/CODEOWNERS +1 -0
  5. data/.github/workflows/codacy.yml +3 -3
  6. data/.github/workflows/codeql.yml +4 -4
  7. data/.github/workflows/continuous-integration.yml +30 -19
  8. data/.github/workflows/dependency-review.yml +2 -2
  9. data/.github/workflows/specs-in-docker.yml +12 -6
  10. data/.gitignore +4 -1
  11. data/Changelog.md +40 -5
  12. data/Gemfile +4 -2
  13. data/README.md +35 -0
  14. data/lib/ext/numeric_as_data_type.rb +1 -1
  15. data/lib/ffi/cpl/vsi.rb +10 -0
  16. data/lib/ffi/gdal/gdal.rb +9 -2
  17. data/lib/ffi/gdal/grid_data_metrics_options.rb +27 -5
  18. data/lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb +30 -10
  19. data/lib/ffi/gdal/grid_moving_average_options.rb +30 -5
  20. data/lib/ffi/gdal/grid_nearest_neighbor_options.rb +24 -4
  21. data/lib/ffi/gdal/internal_helpers/gdal_version.rb +15 -0
  22. data/lib/ffi/gdal/internal_helpers/layout_version.rb +9 -0
  23. data/lib/ffi/gdal/internal_helpers/layout_version_resolver.rb +24 -0
  24. data/lib/ffi/gdal/internal_helpers.rb +11 -0
  25. data/lib/ffi/gdal/utils.rb +984 -0
  26. data/lib/ffi/gdal/version.rb +1 -1
  27. data/lib/ffi/gdal.rb +3 -1
  28. data/lib/ffi/ogr/core.rb +1 -1
  29. data/lib/ffi/ogr/srs_api.rb +17 -0
  30. data/lib/gdal/cpl_error_handler.rb +30 -15
  31. data/lib/gdal/exceptions.rb +35 -16
  32. data/lib/gdal/extensions/color_table/extensions.rb +1 -1
  33. data/lib/gdal/extensions/gridder.rb +4 -0
  34. data/lib/gdal/geo_transform.rb +13 -0
  35. data/lib/gdal/grid_algorithms/algorithm_base.rb +35 -0
  36. data/lib/gdal/grid_algorithms/inverse_distance_to_a_power.rb +3 -7
  37. data/lib/gdal/grid_algorithms/metric_average_distance.rb +5 -4
  38. data/lib/gdal/grid_algorithms/metric_average_distance_pts.rb +5 -4
  39. data/lib/gdal/grid_algorithms/metric_count.rb +5 -4
  40. data/lib/gdal/grid_algorithms/metric_maximum.rb +5 -4
  41. data/lib/gdal/grid_algorithms/metric_minimum.rb +5 -4
  42. data/lib/gdal/grid_algorithms/metric_range.rb +5 -4
  43. data/lib/gdal/grid_algorithms/moving_average.rb +3 -7
  44. data/lib/gdal/grid_algorithms/nearest_neighbor.rb +3 -7
  45. data/lib/gdal/grid_algorithms.rb +2 -0
  46. data/lib/gdal/internal_helpers.rb +8 -5
  47. data/lib/gdal/major_object.rb +6 -0
  48. data/lib/gdal/raster_band.rb +16 -12
  49. data/lib/gdal/utils/dem/options.rb +52 -0
  50. data/lib/gdal/utils/dem.rb +108 -0
  51. data/lib/gdal/utils/grid/options.rb +52 -0
  52. data/lib/gdal/utils/grid.rb +72 -0
  53. data/lib/gdal/utils/helpers/dataset_list.rb +43 -0
  54. data/lib/gdal/utils/helpers/string_list.rb +47 -0
  55. data/lib/gdal/utils/helpers.rb +11 -0
  56. data/lib/gdal/utils/info/options.rb +52 -0
  57. data/lib/gdal/utils/info.rb +40 -0
  58. data/lib/gdal/utils/nearblack/options.rb +52 -0
  59. data/lib/gdal/utils/nearblack.rb +119 -0
  60. data/lib/gdal/utils/rasterize/options.rb +52 -0
  61. data/lib/gdal/utils/rasterize.rb +108 -0
  62. data/lib/gdal/utils/translate/options.rb +52 -0
  63. data/lib/gdal/utils/translate.rb +72 -0
  64. data/lib/gdal/utils/vector_translate/options.rb +52 -0
  65. data/lib/gdal/utils/vector_translate.rb +132 -0
  66. data/lib/gdal/utils/warp/options.rb +52 -0
  67. data/lib/gdal/utils/warp.rb +118 -0
  68. data/lib/gdal/utils.rb +22 -0
  69. data/lib/gdal/warp_options.rb +11 -2
  70. data/lib/gdal.rb +1 -0
  71. data/lib/ogr/extensions/layer/extensions.rb +1 -1
  72. data/lib/ogr/extensions/spatial_reference/extensions.rb +4 -4
  73. data/lib/ogr/geometry.rb +1 -6
  74. data/lib/ogr/layer.rb +1 -1
  75. data/lib/ogr/spatial_reference.rb +27 -2
  76. metadata +32 -5
  77. data/.ruby-version +0 -1
  78. data/lib/gdal/grid_algorithms/data_metrics_base.rb +0 -14
data/lib/ogr/geometry.rb CHANGED
@@ -21,12 +21,7 @@ module OGR
21
21
  # @param geometry [OGR::Geometry, FFI::Pointer]
22
22
  # @return [OGR::Geometry]
23
23
  def factory(geometry)
24
- geometry =
25
- if geometry.is_a?(OGR::Geometry)
26
- geometry
27
- else
28
- OGR::UnknownGeometry.new(geometry)
29
- end
24
+ geometry = OGR::UnknownGeometry.new(geometry) unless geometry.is_a?(OGR::Geometry)
30
25
 
31
26
  new_pointer = geometry.c_pointer
32
27
  return if new_pointer.nil? || new_pointer.null?
data/lib/ogr/layer.rb CHANGED
@@ -18,7 +18,7 @@ module OGR
18
18
  include LayerMixins::OGRQueryFilterMethods
19
19
  include LayerMixins::OGRSQLMethods
20
20
 
21
- FFI::OGR::Core::OGR_ALTER.constants.each do |_name, obj|
21
+ FFI::OGR::Core::OGR_ALTER.constants.each_value do |obj|
22
22
  const_set(obj.ruby_name, obj.value.to_i(16))
23
23
  end
24
24
 
@@ -14,6 +14,8 @@ module OGR
14
14
  # 1. "geographic", where positions are measured in long/lat.
15
15
  # 2. "projected", where positions are measure in meters or feet.
16
16
  class SpatialReference
17
+ Version = Struct.new(:major, :minor, :patch)
18
+
17
19
  include GDAL::Logger
18
20
  include SpatialReferenceMixins::CoordinateSystemGetterSetters
19
21
  include SpatialReferenceMixins::Exporters
@@ -23,13 +25,13 @@ module OGR
23
25
  include SpatialReferenceMixins::TypeChecks
24
26
 
25
27
  # class_eval FFI::OGR::SRSAPI::SRS_UL.to_ruby
26
- FFI::OGR::SRSAPI::SRS_UL.constants.each do |_name, obj|
28
+ FFI::OGR::SRSAPI::SRS_UL.constants.each_value do |obj|
27
29
  const_set(obj.ruby_name, obj.value)
28
30
  end
29
31
 
30
32
  METER_TO_METER = 1.0
31
33
 
32
- FFI::OGR::SRSAPI::SRS_UA.constants.each do |_name, obj|
34
+ FFI::OGR::SRSAPI::SRS_UA.constants.each_value do |obj|
33
35
  const_set(obj.ruby_name, obj.value)
34
36
  end
35
37
 
@@ -125,6 +127,19 @@ module OGR
125
127
  FFI::OGR::SRSAPI.OSRRelease(pointer)
126
128
  end
127
129
 
130
+ def self.proj_version
131
+ major_ptr = FFI::MemoryPointer.new(:int)
132
+ major_ptr.autorelease = false
133
+ minor_ptr = FFI::MemoryPointer.new(:int)
134
+ minor_ptr.autorelease = false
135
+ patch_ptr = FFI::MemoryPointer.new(:int)
136
+ patch_ptr.autorelease = false
137
+
138
+ FFI::OGR::SRSAPI.OSRGetPROJVersion(major_ptr, minor_ptr, patch_ptr)
139
+
140
+ Version.new(major_ptr.read_int, minor_ptr.read_int, patch_ptr.read_int)
141
+ end
142
+
128
143
  # @return [FFI::Pointer] C pointer to the C Spatial Reference.
129
144
  attr_reader :c_pointer
130
145
 
@@ -261,5 +276,15 @@ module OGR
261
276
  def create_coordinate_transformation(destination_spatial_ref)
262
277
  OGR::CoordinateTransformation.new(@c_pointer, destination_spatial_ref)
263
278
  end
279
+
280
+ # @return [nil] Sets the axis mapping strategy for this spatial reference.
281
+ def axis_mapping_strategy=(strategy)
282
+ FFI::OGR::SRSAPI.OSRSetAxisMappingStrategy(@c_pointer, strategy)
283
+ end
284
+
285
+ # @return [FFI::OGR::SRSAPI::AxisMappingStrategy] The axis mapping strategy.
286
+ def axis_mapping_strategy
287
+ FFI::OGR::SRSAPI.OSRGetAxisMappingStrategy(@c_pointer)
288
+ end
264
289
  end
265
290
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-gdal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Loveless
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-06 00:00:00.000000000 Z
11
+ date: 2024-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bindata
@@ -101,7 +101,10 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
+ - ".devcontainer/Dockerfile"
105
+ - ".devcontainer/devcontainer.json"
104
106
  - ".dockerignore"
107
+ - ".github/CODEOWNERS"
105
108
  - ".github/dependabot.yml"
106
109
  - ".github/workflows/codacy.yml"
107
110
  - ".github/workflows/codeql.yml"
@@ -113,7 +116,6 @@ files:
113
116
  - ".rspec"
114
117
  - ".rubocop.yml"
115
118
  - ".rubocop_todo.yml"
116
- - ".ruby-version"
117
119
  - ".solargraph.yml"
118
120
  - Changelog-0.x.md
119
121
  - Changelog.md
@@ -178,9 +180,14 @@ files:
178
180
  - lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb
179
181
  - lib/ffi/gdal/grid_moving_average_options.rb
180
182
  - lib/ffi/gdal/grid_nearest_neighbor_options.rb
183
+ - lib/ffi/gdal/internal_helpers.rb
184
+ - lib/ffi/gdal/internal_helpers/gdal_version.rb
185
+ - lib/ffi/gdal/internal_helpers/layout_version.rb
186
+ - lib/ffi/gdal/internal_helpers/layout_version_resolver.rb
181
187
  - lib/ffi/gdal/matching.rb
182
188
  - lib/ffi/gdal/rpc_info.rb
183
189
  - lib/ffi/gdal/transformer_info.rb
190
+ - lib/ffi/gdal/utils.rb
184
191
  - lib/ffi/gdal/version.rb
185
192
  - lib/ffi/gdal/vrt.rb
186
193
  - lib/ffi/gdal/warp_options.rb
@@ -236,7 +243,7 @@ files:
236
243
  - lib/gdal/geo_transform.rb
237
244
  - lib/gdal/grid.rb
238
245
  - lib/gdal/grid_algorithms.rb
239
- - lib/gdal/grid_algorithms/data_metrics_base.rb
246
+ - lib/gdal/grid_algorithms/algorithm_base.rb
240
247
  - lib/gdal/grid_algorithms/inverse_distance_to_a_power.rb
241
248
  - lib/gdal/grid_algorithms/metric_average_distance.rb
242
249
  - lib/gdal/grid_algorithms/metric_average_distance_pts.rb
@@ -265,6 +272,26 @@ files:
265
272
  - lib/gdal/transformers/reprojection_transformer.rb
266
273
  - lib/gdal/transformers/rpc_transformer.rb
267
274
  - lib/gdal/transformers/tps_transformer.rb
275
+ - lib/gdal/utils.rb
276
+ - lib/gdal/utils/dem.rb
277
+ - lib/gdal/utils/dem/options.rb
278
+ - lib/gdal/utils/grid.rb
279
+ - lib/gdal/utils/grid/options.rb
280
+ - lib/gdal/utils/helpers.rb
281
+ - lib/gdal/utils/helpers/dataset_list.rb
282
+ - lib/gdal/utils/helpers/string_list.rb
283
+ - lib/gdal/utils/info.rb
284
+ - lib/gdal/utils/info/options.rb
285
+ - lib/gdal/utils/nearblack.rb
286
+ - lib/gdal/utils/nearblack/options.rb
287
+ - lib/gdal/utils/rasterize.rb
288
+ - lib/gdal/utils/rasterize/options.rb
289
+ - lib/gdal/utils/translate.rb
290
+ - lib/gdal/utils/translate/options.rb
291
+ - lib/gdal/utils/vector_translate.rb
292
+ - lib/gdal/utils/vector_translate/options.rb
293
+ - lib/gdal/utils/warp.rb
294
+ - lib/gdal/utils/warp/options.rb
268
295
  - lib/gdal/version_info.rb
269
296
  - lib/gdal/virtual_dataset.rb
270
297
  - lib/gdal/warp_operation.rb
@@ -362,7 +389,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
362
389
  - !ruby/object:Gem::Version
363
390
  version: '0'
364
391
  requirements: []
365
- rubygems_version: 3.1.6
392
+ rubygems_version: 3.5.17
366
393
  signing_key:
367
394
  specification_version: 4
368
395
  summary: FFI wrapper for GDAL/OGR.
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.7
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module GDAL
4
- module GridAlgorithms
5
- class DataMetricsBase
6
- # @return [FFI::GDAL::GridDataMetricsOptions]
7
- attr_reader :options
8
-
9
- def initialize
10
- @options = FFI::GDAL::GridDataMetricsOptions.new
11
- end
12
- end
13
- end
14
- end