ffi-gdal 1.0.0.beta6 → 1.0.0.beta11
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 +5 -5
- data/.rubocop.yml +54 -19
- data/.rubocop_todo.yml +65 -0
- data/.ruby-version +1 -1
- data/Gemfile +2 -0
- data/History.md +74 -0
- data/README.md +5 -0
- data/Rakefile +11 -1
- data/bitbucket-pipelines.yml +16 -0
- data/examples/extract_and_colorize.rb +7 -10
- data/examples/geometries.rb +68 -1
- data/examples/gridding.rb +2 -0
- data/examples/ogr_layer_to_layer.rb +2 -0
- data/examples/raster_erasing.rb +15 -8
- data/examples/remove_small_polygons.rb +2 -0
- data/examples/testing_gdal.rb +9 -2
- data/examples/warping.rb +23 -5
- data/ffi-gdal.gemspec +7 -4
- data/lib/ext/error_symbols.rb +2 -0
- data/lib/ext/ffi_library_function_checks.rb +2 -0
- data/lib/ext/float_ext.rb +2 -0
- data/lib/ext/narray_ext.rb +2 -0
- data/lib/ext/numeric_as_data_type.rb +2 -0
- data/lib/ext/to_bool.rb +5 -3
- data/lib/ffi-gdal.rb +2 -0
- data/lib/ffi/cpl.rb +2 -0
- data/lib/ffi/cpl/conv.rb +4 -2
- data/lib/ffi/cpl/error.rb +2 -0
- data/lib/ffi/cpl/hash_set.rb +2 -0
- data/lib/ffi/cpl/http.rb +2 -0
- data/lib/ffi/cpl/http_result.rb +2 -0
- data/lib/ffi/cpl/list.rb +2 -0
- data/lib/ffi/cpl/mime_part.rb +2 -0
- data/lib/ffi/cpl/minixml.rb +2 -0
- data/lib/ffi/cpl/port.rb +2 -0
- data/lib/ffi/cpl/progress.rb +2 -0
- data/lib/ffi/cpl/quad_tree.rb +2 -0
- data/lib/ffi/cpl/rect_obj.rb +2 -0
- data/lib/ffi/cpl/string.rb +2 -0
- data/lib/ffi/cpl/vsi.rb +2 -0
- data/lib/ffi/cpl/xml_node.rb +2 -0
- data/lib/ffi/gdal.rb +3 -3
- data/lib/ffi/gdal/alg.rb +2 -0
- data/lib/ffi/gdal/color_entry.rb +2 -0
- data/lib/ffi/gdal/exceptions.rb +2 -0
- data/lib/ffi/gdal/gcp.rb +2 -0
- data/lib/ffi/gdal/gdal.rb +2 -0
- data/lib/ffi/gdal/grid.rb +2 -0
- data/lib/ffi/gdal/grid_data_metrics_options.rb +2 -0
- data/lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb +2 -0
- data/lib/ffi/gdal/grid_moving_average_options.rb +2 -0
- data/lib/ffi/gdal/grid_nearest_neighbor_options.rb +2 -0
- data/lib/ffi/gdal/matching.rb +2 -0
- data/lib/ffi/gdal/rpc_info.rb +2 -0
- data/lib/ffi/gdal/transformer_info.rb +2 -0
- data/lib/ffi/gdal/version.rb +3 -1
- data/lib/ffi/gdal/vrt.rb +2 -0
- data/lib/ffi/gdal/warp_options.rb +9 -4
- data/lib/ffi/gdal/warper.rb +19 -1
- data/lib/ffi/ogr.rb +2 -0
- data/lib/ffi/ogr/api.rb +2 -0
- data/lib/ffi/ogr/contour_writer_info.rb +2 -0
- data/lib/ffi/ogr/core.rb +2 -0
- data/lib/ffi/ogr/envelope.rb +2 -0
- data/lib/ffi/ogr/envelope_3d.rb +2 -0
- data/lib/ffi/ogr/featurestyle.rb +2 -0
- data/lib/ffi/ogr/field.rb +2 -0
- data/lib/ffi/ogr/geocoding.rb +2 -0
- data/lib/ffi/ogr/srs_api.rb +3 -0
- data/lib/ffi/ogr/style_param.rb +2 -0
- data/lib/ffi/ogr/style_value.rb +2 -0
- data/lib/gdal.rb +3 -0
- data/lib/gdal/color_entry.rb +2 -0
- data/lib/gdal/color_entry_mixins/extensions.rb +2 -14
- data/lib/gdal/color_interpretation.rb +2 -0
- data/lib/gdal/color_table.rb +2 -0
- data/lib/gdal/color_table_mixins/extensions.rb +3 -17
- data/lib/gdal/color_table_types/cmyk.rb +2 -0
- data/lib/gdal/color_table_types/gray.rb +2 -0
- data/lib/gdal/color_table_types/hls.rb +2 -0
- data/lib/gdal/color_table_types/rgb.rb +2 -0
- data/lib/gdal/cpl_error_handler.rb +2 -0
- data/lib/gdal/data_type.rb +2 -0
- data/lib/gdal/dataset.rb +11 -7
- data/lib/gdal/dataset_mixins/algorithm_methods.rb +7 -4
- data/lib/gdal/dataset_mixins/extensions.rb +7 -47
- data/lib/gdal/dataset_mixins/matching.rb +4 -1
- data/lib/gdal/dataset_mixins/warp_methods.rb +52 -11
- data/lib/gdal/driver.rb +6 -8
- data/lib/gdal/driver_mixins/extensions.rb +2 -0
- data/lib/gdal/environment_methods.rb +2 -0
- data/lib/gdal/exceptions.rb +2 -0
- data/lib/gdal/geo_transform.rb +3 -3
- data/lib/gdal/geo_transform_mixins/extensions.rb +2 -17
- data/lib/gdal/grid.rb +4 -1
- data/lib/gdal/grid_algorithms.rb +2 -0
- data/lib/gdal/grid_algorithms/data_metrics_base.rb +2 -0
- data/lib/gdal/grid_algorithms/inverse_distance_to_a_power.rb +2 -0
- data/lib/gdal/grid_algorithms/metric_average_distance.rb +2 -0
- data/lib/gdal/grid_algorithms/metric_average_distance_pts.rb +2 -0
- data/lib/gdal/grid_algorithms/metric_count.rb +2 -0
- data/lib/gdal/grid_algorithms/metric_maximum.rb +2 -0
- data/lib/gdal/grid_algorithms/metric_minimum.rb +2 -0
- data/lib/gdal/grid_algorithms/metric_range.rb +2 -0
- data/lib/gdal/grid_algorithms/moving_average.rb +2 -0
- data/lib/gdal/grid_algorithms/nearest_neighbor.rb +2 -0
- data/lib/gdal/gridder.rb +11 -3
- data/lib/gdal/gridder/point_extracting.rb +3 -2
- data/lib/gdal/gridder_options.rb +2 -0
- data/lib/gdal/internal_helpers.rb +3 -4
- data/lib/gdal/logger.rb +2 -0
- data/lib/gdal/major_object.rb +2 -0
- data/lib/gdal/merger.rb +2 -0
- data/lib/gdal/options.rb +16 -13
- data/lib/gdal/raster_attribute_table.rb +2 -0
- data/lib/gdal/raster_attribute_table_mixins/extensions.rb +3 -16
- data/lib/gdal/raster_band.rb +11 -6
- data/lib/gdal/raster_band_classifier.rb +52 -19
- data/lib/gdal/raster_band_mixins/algorithm_extensions.rb +2 -0
- data/lib/gdal/raster_band_mixins/algorithm_methods.rb +12 -5
- data/lib/gdal/raster_band_mixins/coloring_extensions.rb +3 -1
- data/lib/gdal/raster_band_mixins/extensions.rb +6 -35
- data/lib/gdal/raster_band_mixins/io_extensions.rb +7 -4
- data/lib/gdal/rpc_info.rb +2 -0
- data/lib/gdal/transformer.rb +2 -0
- data/lib/gdal/transformers/approximate_transformer.rb +4 -1
- data/lib/gdal/transformers/base_general_image_projection_transformer.rb +4 -1
- data/lib/gdal/transformers/gcp_transformer.rb +6 -2
- data/lib/gdal/transformers/general_image_projection_transformer.rb +2 -0
- data/lib/gdal/transformers/general_image_projection_transformer2.rb +4 -1
- data/lib/gdal/transformers/general_image_projection_transformer3.rb +4 -1
- data/lib/gdal/transformers/geolocation_transformer.rb +4 -1
- data/lib/gdal/transformers/reprojection_transformer.rb +2 -0
- data/lib/gdal/transformers/rpc_transformer.rb +4 -1
- data/lib/gdal/transformers/tps_transformer.rb +2 -0
- data/lib/gdal/version_info.rb +9 -7
- data/lib/gdal/virtual_dataset.rb +2 -0
- data/lib/gdal/warp_operation.rb +2 -0
- data/lib/gdal/warp_options.rb +105 -35
- data/lib/ogr.rb +2 -0
- data/lib/ogr/coordinate_transformation.rb +2 -0
- data/lib/ogr/data_source.rb +5 -9
- data/lib/ogr/data_source_extensions.rb +2 -19
- data/lib/ogr/data_source_mixins/capability_methods.rb +2 -0
- data/lib/ogr/driver.rb +4 -6
- data/lib/ogr/driver_mixins/capability_methods.rb +2 -0
- data/lib/ogr/envelope.rb +4 -2
- data/lib/ogr/envelope_extensions.rb +2 -22
- data/lib/ogr/error_handling.rb +3 -1
- data/lib/ogr/exceptions.rb +3 -1
- data/lib/ogr/feature.rb +17 -9
- data/lib/ogr/feature_definition.rb +7 -4
- data/lib/ogr/feature_definition_extensions.rb +2 -18
- data/lib/ogr/feature_extensions.rb +2 -27
- data/lib/ogr/field.rb +5 -1
- data/lib/ogr/field_definition.rb +5 -6
- data/lib/ogr/geocoder.rb +2 -0
- data/lib/ogr/geometries/geometry_collection.rb +2 -0
- data/lib/ogr/geometries/geometry_collection_25d.rb +2 -0
- data/lib/ogr/geometries/line_string.rb +2 -1
- data/lib/ogr/geometries/line_string_25d.rb +2 -0
- data/lib/ogr/geometries/linear_ring.rb +2 -0
- data/lib/ogr/geometries/multi_line_string.rb +2 -0
- data/lib/ogr/geometries/multi_line_string_25d.rb +2 -0
- data/lib/ogr/geometries/multi_point.rb +2 -0
- data/lib/ogr/geometries/multi_point_25d.rb +2 -0
- data/lib/ogr/geometries/multi_polygon.rb +2 -0
- data/lib/ogr/geometries/multi_polygon_25d.rb +2 -0
- data/lib/ogr/geometries/none_geometry.rb +2 -0
- data/lib/ogr/geometries/point.rb +2 -0
- data/lib/ogr/geometries/point_25d.rb +2 -0
- data/lib/ogr/geometries/polygon.rb +2 -0
- data/lib/ogr/geometries/polygon_25d.rb +2 -0
- data/lib/ogr/geometries/unknown_geometry.rb +2 -0
- data/lib/ogr/geometry.rb +3 -4
- data/lib/ogr/geometry_field_definition.rb +3 -4
- data/lib/ogr/geometry_mixins/container_mixins.rb +2 -0
- data/lib/ogr/geometry_mixins/extensions.rb +10 -39
- data/lib/ogr/geometry_types/container.rb +2 -0
- data/lib/ogr/geometry_types/curve.rb +3 -1
- data/lib/ogr/geometry_types/surface.rb +2 -0
- data/lib/ogr/internal_helpers.rb +2 -0
- data/lib/ogr/layer.rb +5 -1
- data/lib/ogr/layer_mixins/capability_methods.rb +2 -0
- data/lib/ogr/layer_mixins/extensions.rb +9 -27
- data/lib/ogr/layer_mixins/ogr_feature_methods.rb +6 -12
- data/lib/ogr/layer_mixins/ogr_field_methods.rb +10 -14
- data/lib/ogr/layer_mixins/ogr_layer_method_methods.rb +2 -0
- data/lib/ogr/layer_mixins/ogr_query_filter_methods.rb +8 -3
- data/lib/ogr/layer_mixins/ogr_sql_methods.rb +3 -3
- data/lib/ogr/spatial_reference.rb +12 -2
- data/lib/ogr/spatial_reference_extensions.rb +2 -26
- data/lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb +12 -5
- data/lib/ogr/spatial_reference_mixins/exporters.rb +2 -0
- data/lib/ogr/spatial_reference_mixins/importers.rb +6 -2
- data/lib/ogr/spatial_reference_mixins/morphers.rb +2 -0
- data/lib/ogr/spatial_reference_mixins/parameter_getter_setters.rb +2 -0
- data/lib/ogr/spatial_reference_mixins/type_checks.rb +2 -0
- data/lib/ogr/style_table.rb +2 -0
- data/lib/ogr/style_table_extensions.rb +2 -10
- data/lib/ogr/style_tool.rb +2 -0
- data/spec/ffi-gdal_spec.rb +2 -0
- data/spec/integration/gdal/color_table_info_spec.rb +2 -0
- data/spec/integration/gdal/dataset_info_spec.rb +15 -13
- data/spec/integration/gdal/driver_info_spec.rb +3 -1
- data/spec/integration/gdal/geo_transform_info_spec.rb +2 -0
- data/spec/integration/gdal/gridder_spec.rb +2 -0
- data/spec/integration/gdal/raster_attribute_table_info_spec.rb +2 -0
- data/spec/integration/gdal/raster_band_algorithms_spec.rb +2 -0
- data/spec/integration/gdal/raster_band_info_spec.rb +37 -15
- data/spec/integration/ogr/layer_spec.rb +2 -6
- data/spec/spec_helper.rb +3 -1
- data/spec/support/images/123.tiff +0 -0
- data/spec/support/integration_help.rb +2 -0
- data/spec/support/shared_contexts.rb +2 -0
- data/spec/support/shared_examples/gdal/major_object_examples.rb +2 -0
- data/spec/support/shared_examples/ogr/{a_25D_geometry.rb → a_25d_geometry.rb} +2 -0
- data/spec/support/shared_examples/ogr/a_container_geometry.rb +2 -0
- data/spec/support/shared_examples/ogr/a_geometry.rb +3 -1
- data/spec/support/shared_examples/ogr/a_line_string.rb +2 -0
- data/spec/unit/ext/error_symbols_spec.rb +2 -0
- data/spec/unit/ext/numeric_as_data_type_spec.rb +2 -0
- data/spec/unit/ffi/gdal_spec.rb +3 -0
- data/spec/unit/gdal/color_entry_spec.rb +2 -0
- data/spec/unit/gdal/color_interpretation_spec.rb +2 -0
- data/spec/unit/gdal/color_table_mixins/extensions_spec.rb +2 -0
- data/spec/unit/gdal/color_table_spec.rb +2 -0
- data/spec/unit/gdal/data_type_spec.rb +2 -0
- data/spec/unit/gdal/dataset_mixins/warp_methods_spec.rb +55 -0
- data/spec/unit/gdal/dataset_spec.rb +2 -0
- data/spec/unit/gdal/driver_mixins/extensions_spec.rb +2 -0
- data/spec/unit/gdal/driver_spec.rb +2 -0
- data/spec/unit/gdal/environment_methods_spec.rb +2 -0
- data/spec/unit/gdal/geo_transform_mixins/extensions_spec.rb +2 -0
- data/spec/unit/gdal/geo_transform_spec.rb +2 -13
- data/spec/unit/gdal/grid_spec.rb +10 -0
- data/spec/unit/gdal/gridder/point_extracting_spec.rb +2 -0
- data/spec/unit/gdal/gridder_options_spec.rb +2 -0
- data/spec/unit/gdal/gridder_spec.rb +42 -0
- data/spec/unit/gdal/internal_helpers_spec.rb +2 -0
- data/spec/unit/gdal/major_object_spec.rb +2 -0
- data/spec/unit/gdal/options_spec.rb +28 -1
- data/spec/unit/gdal/raster_attribute_table_spec.rb +2 -0
- data/spec/unit/gdal/raster_band_classifier_spec.rb +43 -5
- data/spec/unit/gdal/raster_band_mixins/extensions_spec.rb +2 -0
- data/spec/unit/gdal/raster_band_mixins/io_extensions_spec.rb +2 -0
- data/spec/unit/gdal/raster_band_spec.rb +2 -0
- data/spec/unit/gdal/rpc_info_spec.rb +2 -0
- data/spec/unit/gdal/version_info_spec.rb +2 -0
- data/spec/unit/gdal/virtual_dataset_spec.rb +2 -0
- data/spec/unit/gdal/warp_operation_spec.rb +2 -0
- data/spec/unit/gdal/warp_options_spec.rb +338 -0
- data/spec/unit/ogr/coordinate_transformation_spec.rb +2 -0
- data/spec/unit/ogr/data_source_mixins/capability_methods_spec.rb +2 -0
- data/spec/unit/ogr/data_source_spec.rb +2 -0
- data/spec/unit/ogr/driver_mixins/capability_methods_spec.rb +2 -0
- data/spec/unit/ogr/driver_spec.rb +3 -1
- data/spec/unit/ogr/envelope_spec.rb +2 -0
- data/spec/unit/ogr/feature_definition_spec.rb +2 -19
- data/spec/unit/ogr/feature_extensions_spec.rb +3 -1
- data/spec/unit/ogr/feature_spec.rb +3 -3
- data/spec/unit/ogr/field_definition_spec.rb +2 -19
- data/spec/unit/ogr/field_spec.rb +3 -1
- data/spec/unit/ogr/geometries/geometry_collection_25d_spec.rb +2 -0
- data/spec/unit/ogr/geometries/geometry_collection_spec.rb +2 -0
- data/spec/unit/ogr/geometries/line_string_25d_spec.rb +2 -0
- data/spec/unit/ogr/geometries/line_string_spec.rb +2 -0
- data/spec/unit/ogr/geometries/linear_ring_spec.rb +2 -0
- data/spec/unit/ogr/geometries/multi_line_string_25d_spec.rb +2 -0
- data/spec/unit/ogr/geometries/multi_line_string_spec.rb +2 -0
- data/spec/unit/ogr/geometries/multi_point_25d_spec.rb +2 -0
- data/spec/unit/ogr/geometries/multi_point_spec.rb +2 -0
- data/spec/unit/ogr/geometries/multi_polygon_25d_spec.rb +2 -0
- data/spec/unit/ogr/geometries/multi_polygon_spec.rb +2 -0
- data/spec/unit/ogr/geometries/none_geometry_spec.rb +2 -0
- data/spec/unit/ogr/geometries/point_25d_spec.rb +2 -0
- data/spec/unit/ogr/geometries/point_spec.rb +2 -0
- data/spec/unit/ogr/geometries/polygon_25d_spec.rb +2 -0
- data/spec/unit/ogr/geometries/polygon_spec.rb +2 -0
- data/spec/unit/ogr/geometries/unknown_geometry_spec.rb +2 -0
- data/spec/unit/ogr/geometry_field_definition_spec.rb +2 -16
- data/spec/unit/ogr/geometry_spec.rb +2 -0
- data/spec/unit/ogr/internal_helpers_spec.rb +2 -0
- data/spec/unit/ogr/layer_mixins/capability_methods_spec.rb +2 -0
- data/spec/unit/ogr/layer_mixins/ogr_feature_methods_spec.rb +2 -0
- data/spec/unit/ogr/layer_mixins/ogr_field_methods_spec.rb +2 -0
- data/spec/unit/ogr/layer_mixins/ogr_layer_method_methods_spec.rb +2 -0
- data/spec/unit/ogr/layer_mixins/ogr_query_filter_methods_spec.rb +2 -0
- data/spec/unit/ogr/layer_mixins/ogr_sql_methods_spec.rb +2 -0
- data/spec/unit/ogr/layer_spec.rb +2 -0
- data/spec/unit/ogr/spatial_reference_mixins/coordinate_system_getter_setters_spec.rb +2 -0
- data/spec/unit/ogr/spatial_reference_mixins/exporters_spec.rb +19 -15
- data/spec/unit/ogr/spatial_reference_mixins/importers_spec.rb +2 -0
- data/spec/unit/ogr/spatial_reference_mixins/morphers_spec.rb +9 -7
- data/spec/unit/ogr/spatial_reference_mixins/parameter_getter_setters_spec.rb +2 -0
- data/spec/unit/ogr/spatial_reference_mixins/type_checks_spec.rb +2 -0
- data/spec/unit/ogr/spatial_reference_spec.rb +4 -2
- data/spec/unit/ogr/style_table_spec.rb +2 -26
- data/spec/unit/ogr/style_tool_spec.rb +2 -0
- data/spec/unit/version_info_spec.rb +2 -0
- metadata +47 -15
- data/lib/ogr/field_definition_extensions.rb +0 -22
- data/lib/ogr/geometry_field_definition_extensions.rb +0 -19
data/lib/ffi/gdal/matching.rb
CHANGED
data/lib/ffi/gdal/rpc_info.rb
CHANGED
data/lib/ffi/gdal/version.rb
CHANGED
data/lib/ffi/gdal/vrt.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'ffi'
|
2
4
|
|
3
5
|
module FFI
|
@@ -32,14 +34,17 @@ module FFI
|
|
32
34
|
:destination_density_mask_function_arg, :pointer,
|
33
35
|
:destination_validity_mask_function, Warper.find_type(:GDALMaskFunc),
|
34
36
|
:destination_validity_mask_function_arg, :pointer,
|
35
|
-
|
36
|
-
:pre_warp_chunk_processor, :pointer,
|
37
|
+
:pre_warp_chunk_processor, callback(%i[pointer pointer], CPL::Error::CPLErr),
|
37
38
|
:pre_warp_processor_arg, :pointer,
|
38
|
-
|
39
|
-
:post_warp_chunk_processor, :pointer,
|
39
|
+
:post_warp_chunk_processor, callback(%i[pointer pointer], CPL::Error::CPLErr),
|
40
40
|
:post_warp_processor_arg, :pointer,
|
41
41
|
:cutline, :pointer,
|
42
42
|
:cutline_blend_distance, :double
|
43
|
+
|
44
|
+
def initialize
|
45
|
+
super
|
46
|
+
self[:progress] = proc { true } if self[:progress].null?
|
47
|
+
end
|
43
48
|
end
|
44
49
|
end
|
45
50
|
end
|
data/lib/ffi/gdal/warper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'ffi'
|
2
4
|
require_relative '../../ext/ffi_library_function_checks'
|
3
5
|
|
@@ -11,7 +13,7 @@ module FFI
|
|
11
13
|
# Typedefs
|
12
14
|
#------------------------------------------------------------------------
|
13
15
|
typedef :pointer, :GDALWarpOperationH
|
14
|
-
callback :GDALMaskFunc,
|
16
|
+
MaskFunc = callback :GDALMaskFunc,
|
15
17
|
[
|
16
18
|
:pointer,
|
17
19
|
:int,
|
@@ -85,6 +87,22 @@ module FFI
|
|
85
87
|
FFI::GDAL::WarpOptions.ptr
|
86
88
|
],
|
87
89
|
CPL::Error::CPLErr
|
90
|
+
attach_function :GDALCreateAndReprojectImage,
|
91
|
+
[
|
92
|
+
FFI::GDAL::GDAL.find_type(:GDALDatasetH),
|
93
|
+
:string,
|
94
|
+
:string,
|
95
|
+
:string,
|
96
|
+
FFI::GDAL::GDAL.find_type(:GDALDriverH),
|
97
|
+
:pointer,
|
98
|
+
ResampleAlg,
|
99
|
+
:double,
|
100
|
+
:double,
|
101
|
+
FFI::GDAL::GDAL.find_type(:GDALProgressFunc),
|
102
|
+
:pointer,
|
103
|
+
FFI::GDAL::WarpOptions.ptr
|
104
|
+
],
|
105
|
+
CPL::Error::CPLErr
|
88
106
|
attach_function :GDALAutoCreateWarpedVRT,
|
89
107
|
[
|
90
108
|
FFI::GDAL::GDAL.find_type(:GDALDatasetH),
|
data/lib/ffi/ogr.rb
CHANGED
data/lib/ffi/ogr/api.rb
CHANGED
data/lib/ffi/ogr/core.rb
CHANGED
data/lib/ffi/ogr/envelope.rb
CHANGED
data/lib/ffi/ogr/envelope_3d.rb
CHANGED
data/lib/ffi/ogr/featurestyle.rb
CHANGED
data/lib/ffi/ogr/field.rb
CHANGED
data/lib/ffi/ogr/geocoding.rb
CHANGED
data/lib/ffi/ogr/srs_api.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../../ext/ffi_library_function_checks'
|
2
4
|
|
3
5
|
module FFI
|
@@ -93,6 +95,7 @@ module FFI
|
|
93
95
|
gen.const :SRS_UL_INDIAN_CHAIN, '%s', nil, :INDIAN_CHAIN_LABEL, &:inspect
|
94
96
|
gen.const :SRS_UL_INDIAN_CHAIN_CONV, '%s', nil, :METER_TO_INDIAN_CHAIN, &:to_f
|
95
97
|
end
|
98
|
+
|
96
99
|
SRS_UL.calculate
|
97
100
|
|
98
101
|
SRS_UA = FFI::ConstGenerator.new('SRS_UL') do |gen|
|
data/lib/ffi/ogr/style_param.rb
CHANGED
data/lib/ffi/ogr/style_value.rb
CHANGED
data/lib/gdal.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'ffi-gdal'
|
2
4
|
|
3
5
|
module GDAL
|
@@ -30,6 +32,7 @@ module GDAL
|
|
30
32
|
autoload :Driver, gdal_require('gdal/driver')
|
31
33
|
autoload :GeoTransform, gdal_require('gdal/geo_transform')
|
32
34
|
autoload :Logger, gdal_require('gdal/logger')
|
35
|
+
autoload :MajorObject, gdal_require('gdal/major_object')
|
33
36
|
autoload :Options, gdal_require('gdal/options')
|
34
37
|
autoload :RasterAttributeTable, gdal_require('gdal/raster_attribute_table')
|
35
38
|
autoload :RasterBand, gdal_require('gdal/raster_band')
|
data/lib/gdal/color_entry.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
|
3
5
|
module GDAL
|
@@ -13,20 +15,6 @@ module GDAL
|
|
13
15
|
[color1, color2, color3]
|
14
16
|
end
|
15
17
|
end
|
16
|
-
|
17
|
-
def as_json(_options = nil)
|
18
|
-
{
|
19
|
-
color1: color1,
|
20
|
-
color2: color2,
|
21
|
-
color3: color3,
|
22
|
-
color4: color4
|
23
|
-
}
|
24
|
-
end
|
25
|
-
|
26
|
-
# @return [String]
|
27
|
-
def to_json(options = nil)
|
28
|
-
as_json(options).to_json
|
29
|
-
end
|
30
18
|
end
|
31
19
|
end
|
32
20
|
end
|
data/lib/gdal/color_table.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
|
3
5
|
module GDAL
|
4
6
|
module ColorTableMixins
|
5
7
|
module Extensions
|
6
8
|
def color_entries_for(color_number)
|
7
|
-
unless (1..4).to_a.include? color_number
|
8
|
-
raise "Invalid ColorEntry number 'color#{color_number}'"
|
9
|
-
end
|
9
|
+
raise "Invalid ColorEntry number 'color#{color_number}'" unless (1..4).to_a.include? color_number
|
10
10
|
|
11
11
|
Array.new(color_entry_count) do |i|
|
12
12
|
color_entry(i).send("color#{color_number}".to_sym)
|
@@ -29,20 +29,6 @@ module GDAL
|
|
29
29
|
color_entry_as_rgb(i)
|
30
30
|
end
|
31
31
|
end
|
32
|
-
|
33
|
-
# @return [Hash]
|
34
|
-
def as_json(_options = nil)
|
35
|
-
{
|
36
|
-
color_entry_count: color_entry_count,
|
37
|
-
color_entries: color_entries.map(&:as_json),
|
38
|
-
palette_interpretation: palette_interpretation
|
39
|
-
}
|
40
|
-
end
|
41
|
-
|
42
|
-
# @return [String]
|
43
|
-
def to_json(options = nil)
|
44
|
-
as_json(options).to_json
|
45
|
-
end
|
46
32
|
end
|
47
33
|
end
|
48
34
|
end
|
data/lib/gdal/data_type.rb
CHANGED
data/lib/gdal/dataset.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'uri'
|
2
4
|
require_relative '../gdal'
|
3
5
|
require_relative '../ogr'
|
@@ -300,6 +302,7 @@ module GDAL
|
|
300
302
|
# @param band_space [Fixnum] The byte offset from the start of one band's
|
301
303
|
# data to the start of the next. If defaulted (0), the size of
|
302
304
|
# +line_space+ * +buffer_y_size* is used.
|
305
|
+
# rubocop:disable: Metrics/MethodLength
|
303
306
|
def raster_io(access_flag, buffer = nil,
|
304
307
|
x_size: nil, y_size: nil, x_offset: 0, y_offset: 0,
|
305
308
|
buffer_x_size: nil, buffer_y_size: nil, buffer_data_type: nil,
|
@@ -343,6 +346,7 @@ module GDAL
|
|
343
346
|
|
344
347
|
buffer
|
345
348
|
end
|
349
|
+
# rubocop:enable: Metrics/MethodLength
|
346
350
|
|
347
351
|
private
|
348
352
|
|
@@ -353,13 +357,13 @@ module GDAL
|
|
353
357
|
# @return [Fixnum]
|
354
358
|
def parse_mask_flag_symbols(*flags)
|
355
359
|
flags.reduce(0) do |result, flag|
|
356
|
-
result
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
360
|
+
result | case flag
|
361
|
+
when :GMF_ALL_VALID then 0x01
|
362
|
+
when :GMF_PER_DATASET then 0x02
|
363
|
+
when :GMF_PER_ALPHA then 0x04
|
364
|
+
when :GMF_NODATA then 0x08
|
365
|
+
else 0
|
366
|
+
end
|
363
367
|
end
|
364
368
|
end
|
365
369
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module GDAL
|
2
4
|
module DatasetMixins
|
3
5
|
# Wrappers for Warp algorithm methods defined in gdal_alg.h.
|
@@ -16,7 +18,7 @@ module GDAL
|
|
16
18
|
# polygon or that are selected by Brezenham's line algorithm. Defaults to
|
17
19
|
# +false+.
|
18
20
|
# @option options burn_value_from ["Z"] Use the Z values of the geometries.
|
19
|
-
# @option
|
21
|
+
# @option options merge_alg [String] "REPLACE" or "ADD". REPLACE results
|
20
22
|
# in overwriting of value, while ADD adds the new value to the existing
|
21
23
|
# raster, suitable for heatmaps for instance.
|
22
24
|
def rasterize_geometries!(band_numbers, geometries, burn_values,
|
@@ -40,7 +42,7 @@ module GDAL
|
|
40
42
|
burn_values_ptr = FFI::MemoryPointer.new(:pointer, burn_values.size)
|
41
43
|
burn_values_ptr.write_array_of_double(burn_values)
|
42
44
|
|
43
|
-
FFI::GDAL::
|
45
|
+
FFI::GDAL::Alg.GDALRasterizeGeometries(@c_pointer,
|
44
46
|
band_numbers.size,
|
45
47
|
band_numbers_ptr,
|
46
48
|
geometries.size,
|
@@ -94,7 +96,7 @@ module GDAL
|
|
94
96
|
burn_values_ptr.write_array_of_double(burn_values)
|
95
97
|
log "burn value ptr null? #{burn_values_ptr.null?}"
|
96
98
|
|
97
|
-
FFI::GDAL::
|
99
|
+
FFI::GDAL::Alg.GDALRasterizeLayers(@c_pointer, # hDS
|
98
100
|
band_numbers.size, # nBandCount
|
99
101
|
band_numbers_ptr, # panBandList
|
100
102
|
layers.size, # nLayerCount
|
@@ -185,7 +187,8 @@ module GDAL
|
|
185
187
|
pixels_ptr,
|
186
188
|
lines_ptr,
|
187
189
|
extents_ptr,
|
188
|
-
options
|
190
|
+
options
|
191
|
+
)
|
189
192
|
|
190
193
|
extents_array = extents_ptr.read_array_of_double(4)
|
191
194
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
require 'narray'
|
3
5
|
require_relative '../../ffi-gdal'
|
@@ -33,8 +35,6 @@ module GDAL
|
|
33
35
|
# Defaults to -9999.0.
|
34
36
|
# @param options [Hash] Options that get used for creating the new NDVI
|
35
37
|
# dataset. See docs for GDAL::Driver#create_dataset.
|
36
|
-
# @return [GDAL::Dataset] The new NDVI dataset. *Be sure to call #close on
|
37
|
-
# this object or the data may not persist!*
|
38
38
|
def extract_ndvi(destination, red_band_number, nir_band_number, driver_name: 'GTiff',
|
39
39
|
output_data_type: nil, remove_negatives: false, no_data_value: -9999.0, **options)
|
40
40
|
red = raster_band(red_band_number)
|
@@ -46,7 +46,7 @@ module GDAL
|
|
46
46
|
the_array = calculate_ndvi(red.to_na, nir.to_na, no_data_value, remove_negatives, output_data_type)
|
47
47
|
driver = GDAL::Driver.by_name(driver_name)
|
48
48
|
|
49
|
-
|
49
|
+
driver.create_dataset(destination, raster_x_size, raster_y_size,
|
50
50
|
data_type: output_data_type, **options) do |ndvi_dataset|
|
51
51
|
ndvi_dataset.geo_transform = geo_transform
|
52
52
|
ndvi_dataset.projection = projection
|
@@ -55,10 +55,6 @@ module GDAL
|
|
55
55
|
ndvi_band.write_xy_narray(the_array)
|
56
56
|
ndvi_band.no_data_value = no_data_value
|
57
57
|
end
|
58
|
-
|
59
|
-
ndvi.close
|
60
|
-
|
61
|
-
ndvi
|
62
58
|
end
|
63
59
|
|
64
60
|
# Extracts the NIR band and writes to a new file. NOTE: be sure to close
|
@@ -74,8 +70,6 @@ module GDAL
|
|
74
70
|
# in this data type. Defaults to use the current data type.
|
75
71
|
# @param options [Hash] Options that get used for creating the new NDVI
|
76
72
|
# dataset. See docs for GDAL::Driver#create_dataset.
|
77
|
-
# @return [GDAL::Dataset] The new NIR dataset. *Be sure to call #close on
|
78
|
-
# this object or the data may not persist!*
|
79
73
|
def extract_nir(destination, band_number, driver_name: 'GTiff', output_data_type: nil, **options)
|
80
74
|
original_nir_band = raster_band(band_number)
|
81
75
|
raise InvalidBandNumber, "Band #{band_number} found but was nil." if original_nir_band.nil?
|
@@ -83,7 +77,7 @@ module GDAL
|
|
83
77
|
output_data_type ||= original_nir_band.data_type
|
84
78
|
driver = GDAL::Driver.by_name(driver_name)
|
85
79
|
|
86
|
-
|
80
|
+
driver.create_dataset(destination, raster_x_size, raster_y_size,
|
87
81
|
data_type: output_data_type, **options) do |nir_dataset|
|
88
82
|
nir_dataset.geo_transform = geo_transform
|
89
83
|
nir_dataset.projection = projection
|
@@ -91,10 +85,6 @@ module GDAL
|
|
91
85
|
nir_band = nir_dataset.raster_band(1)
|
92
86
|
original_nir_band.copy_whole_raster(nir_band)
|
93
87
|
end
|
94
|
-
|
95
|
-
nir.close
|
96
|
-
|
97
|
-
nir
|
98
88
|
end
|
99
89
|
|
100
90
|
# Extracts the RGB bands and writes to a new file. NOTE: this closes the
|
@@ -111,7 +101,6 @@ module GDAL
|
|
111
101
|
# in this data type. Defaults to use the current data type.
|
112
102
|
# @param options [Hash] Options that get used for creating the new NDVI
|
113
103
|
# dataset. See docs for GDAL::Driver#create_dataset.
|
114
|
-
# @return [GDAL::Dataset]
|
115
104
|
def extract_natural_color(destination, red_band_number, green_band_number, blue_band_number,
|
116
105
|
driver_name: 'GTiff', output_data_type: nil, **options)
|
117
106
|
original_bands = {
|
@@ -123,7 +112,7 @@ module GDAL
|
|
123
112
|
output_data_type ||= raster_band(1).data_type
|
124
113
|
driver = GDAL::Driver.by_name(driver_name)
|
125
114
|
|
126
|
-
|
115
|
+
driver.create_dataset(destination, raster_x_size, raster_y_size,
|
127
116
|
band_count: 3, data_type: output_data_type, **options) do |new_dataset|
|
128
117
|
new_dataset.geo_transform = geo_transform
|
129
118
|
new_dataset.projection = projection
|
@@ -137,10 +126,6 @@ module GDAL
|
|
137
126
|
new_blue_band = new_dataset.raster_band(3)
|
138
127
|
original_bands[:blue].copy_whole_raster(new_blue_band)
|
139
128
|
end
|
140
|
-
|
141
|
-
natural_color.close
|
142
|
-
|
143
|
-
natural_color
|
144
129
|
end
|
145
130
|
|
146
131
|
# @param red_band_array [NArray]
|
@@ -273,7 +258,7 @@ module GDAL
|
|
273
258
|
spatial_ref = OGR::SpatialReference.new(projection)
|
274
259
|
begin
|
275
260
|
spatial_ref.auto_identify_epsg!
|
276
|
-
rescue
|
261
|
+
rescue StandardError
|
277
262
|
OGR::UnsupportedSRS
|
278
263
|
end
|
279
264
|
end
|
@@ -291,9 +276,7 @@ module GDAL
|
|
291
276
|
layer.create_field(OGR::FieldDefinition.new(field_name, :OFTInteger))
|
292
277
|
band = raster_band(band_number)
|
293
278
|
|
294
|
-
unless band
|
295
|
-
raise GDAL::InvalidBandNumber, "Unknown band number: #{band_number}"
|
296
|
-
end
|
279
|
+
raise GDAL::InvalidBandNumber, "Unknown band number: #{band_number}" unless band
|
297
280
|
|
298
281
|
pixel_value_field = layer.feature_definition.field_index(field_name)
|
299
282
|
options = { pixel_value_field: pixel_value_field }
|
@@ -367,29 +350,6 @@ module GDAL
|
|
367
350
|
NArray[*na.transpose]
|
368
351
|
end
|
369
352
|
|
370
|
-
# @return [Hash]
|
371
|
-
def as_json(options = nil)
|
372
|
-
{
|
373
|
-
dataset: {
|
374
|
-
driver: driver.long_name,
|
375
|
-
file_list: file_list,
|
376
|
-
gcp_count: gcp_count,
|
377
|
-
gcp_projection: gcp_projection,
|
378
|
-
geo_transform: geo_transform.as_json(options),
|
379
|
-
projection: projection,
|
380
|
-
raster_count: raster_count,
|
381
|
-
raster_bands: raster_bands.map(&:as_json),
|
382
|
-
spatial_reference: spatial_reference.as_json(options)
|
383
|
-
},
|
384
|
-
metadata: all_metadata
|
385
|
-
}
|
386
|
-
end
|
387
|
-
|
388
|
-
# @return [String]
|
389
|
-
def to_json(options = nil)
|
390
|
-
as_json(options).to_json
|
391
|
-
end
|
392
|
-
|
393
353
|
private
|
394
354
|
|
395
355
|
# @param ndvi [NArray]
|