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
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base_general_image_projection_transformer'
|
2
4
|
|
3
5
|
module GDAL
|
@@ -43,7 +45,8 @@ module GDAL
|
|
43
45
|
@c_pointer = FFI::GDAL::Alg.GDALCreateGenImgProjTransformer2(
|
44
46
|
source_ptr,
|
45
47
|
destination_ptr,
|
46
|
-
options_ptr
|
48
|
+
options_ptr
|
49
|
+
)
|
47
50
|
|
48
51
|
super()
|
49
52
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base_general_image_projection_transformer'
|
2
4
|
|
3
5
|
module GDAL
|
@@ -16,7 +18,8 @@ module GDAL
|
|
16
18
|
source_wkt,
|
17
19
|
source_ptr,
|
18
20
|
destination_wkt,
|
19
|
-
destination_ptr
|
21
|
+
destination_ptr
|
22
|
+
)
|
20
23
|
|
21
24
|
super()
|
22
25
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module GDAL
|
2
4
|
module Transformers
|
3
5
|
class GeolocationTransformer
|
@@ -19,7 +21,8 @@ module GDAL
|
|
19
21
|
@c_pointer = FFI::GDAL::Alg.CreateGeoLocTransformer(
|
20
22
|
base_dataset_ptr,
|
21
23
|
geolocation_info_ptr,
|
22
|
-
reversed
|
24
|
+
reversed
|
25
|
+
)
|
23
26
|
end
|
24
27
|
|
25
28
|
def destroy!
|
data/lib/gdal/version_info.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'date'
|
2
4
|
|
3
5
|
module GDAL
|
@@ -6,33 +8,33 @@ module GDAL
|
|
6
8
|
#
|
7
9
|
# @return [String]
|
8
10
|
def version_num
|
9
|
-
FFI::GDAL.GDALVersionInfo('VERSION_NUM'
|
11
|
+
FFI::GDAL.GDALVersionInfo('VERSION_NUM')
|
10
12
|
end
|
11
13
|
|
12
14
|
# @return [Date]
|
13
15
|
def release_date
|
14
|
-
Date.parse(FFI::GDAL.GDALVersionInfo('RELEASE_DATE'
|
16
|
+
Date.parse(FFI::GDAL.GDALVersionInfo('RELEASE_DATE'))
|
15
17
|
end
|
16
18
|
|
17
19
|
# Version in the form "1.1.7".
|
18
20
|
#
|
19
21
|
# @return [String]
|
20
22
|
def release_name
|
21
|
-
FFI::GDAL.GDALVersionInfo('RELEASE_NAME'
|
23
|
+
FFI::GDAL.GDALVersionInfo('RELEASE_NAME')
|
22
24
|
end
|
23
25
|
|
24
26
|
# The long licensing info.
|
25
27
|
#
|
26
28
|
# @return [String]
|
27
29
|
def license
|
28
|
-
FFI::GDAL.GDALVersionInfo('LICENSE'
|
30
|
+
FFI::GDAL.GDALVersionInfo('LICENSE')
|
29
31
|
end
|
30
32
|
|
31
33
|
# Options used when building GDAL.
|
32
34
|
#
|
33
35
|
# @return [Hash{String => String}]
|
34
36
|
def build_info
|
35
|
-
key_value_pairs = FFI::GDAL.GDALVersionInfo('BUILD_INFO'
|
37
|
+
key_value_pairs = FFI::GDAL.GDALVersionInfo('BUILD_INFO')
|
36
38
|
key_value_pairs.split.each_with_object({}) do |kv, obj|
|
37
39
|
key, value = kv.split('=', 2)
|
38
40
|
obj[key] = value
|
@@ -41,7 +43,7 @@ module GDAL
|
|
41
43
|
|
42
44
|
# @return [String]
|
43
45
|
def long_version
|
44
|
-
FFI::GDAL.GDALVersionInfo('--version'
|
46
|
+
FFI::GDAL.GDALVersionInfo('--version')
|
45
47
|
end
|
46
48
|
|
47
49
|
# @param major [Fixnum]
|
@@ -49,7 +51,7 @@ module GDAL
|
|
49
51
|
# @return [Boolean] +true+ if the runtime GDAL library matches the given
|
50
52
|
# version params.
|
51
53
|
def check_version(major, minor)
|
52
|
-
FFI::GDAL.GDALCheckVersion(major, minor, 'FFI::GDAL'
|
54
|
+
FFI::GDAL.GDALCheckVersion(major, minor, 'FFI::GDAL')
|
53
55
|
end
|
54
56
|
end
|
55
57
|
end
|
data/lib/gdal/virtual_dataset.rb
CHANGED
data/lib/gdal/warp_operation.rb
CHANGED
data/lib/gdal/warp_options.rb
CHANGED
@@ -1,14 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../gdal'
|
2
4
|
|
3
5
|
module GDAL
|
4
6
|
class WarpOptions
|
5
7
|
attr_reader :c_struct
|
8
|
+
attr_reader :source_dataset
|
9
|
+
attr_reader :destination_dataset
|
10
|
+
attr_reader :cutline
|
6
11
|
|
7
12
|
def initialize(options = {})
|
8
13
|
@c_struct = FFI::GDAL::WarpOptions.new
|
9
|
-
|
10
|
-
|
11
|
-
|
14
|
+
@source_dataset = nil
|
15
|
+
@destination_dataset = nil
|
16
|
+
|
17
|
+
options.each_key do |k|
|
18
|
+
assign_meth = "#{k}=".to_sym
|
19
|
+
|
20
|
+
begin
|
21
|
+
if respond_to?(assign_meth)
|
22
|
+
send(assign_meth, options[k])
|
23
|
+
else
|
24
|
+
@c_struct[k] = options[k]
|
25
|
+
end
|
26
|
+
rescue ArgumentError => ex
|
27
|
+
new_message = "#{k}; #{ex.message}"
|
28
|
+
raise $ERROR_INFO, new_message, $ERROR_INFO.backtrace
|
29
|
+
end
|
12
30
|
end
|
13
31
|
end
|
14
32
|
|
@@ -21,42 +39,40 @@ module GDAL
|
|
21
39
|
@c_struct[:warp_operation_options] = GDAL::Options.pointer(options)
|
22
40
|
end
|
23
41
|
|
24
|
-
# @
|
25
|
-
def
|
26
|
-
@c_struct[:
|
27
|
-
end
|
28
|
-
|
29
|
-
# @param algorithm_type [FFI::GDAL::Warper::ResampleAlg]
|
30
|
-
def resample_algorithm=(algorithm_type)
|
31
|
-
@c_struct[:resample_alg] = algorithm_type
|
32
|
-
end
|
42
|
+
# @return [Hash]
|
43
|
+
def warp_operation_options
|
44
|
+
options = @c_struct[:warp_operation_options]
|
33
45
|
|
34
|
-
|
35
|
-
def working_data_type=(data_type)
|
36
|
-
@c_struct[:working_data_type] = data_type
|
46
|
+
GDAL::Options.to_hash(options)
|
37
47
|
end
|
38
48
|
|
39
49
|
# @param dataset [GDAL::Dataset]
|
40
50
|
def source_dataset=(dataset)
|
51
|
+
@source_dataset = dataset
|
41
52
|
@c_struct[:source_dataset] = dataset.c_pointer
|
42
53
|
end
|
43
54
|
|
44
55
|
# @param dataset [GDAL::Dataset]
|
45
56
|
def destination_dataset=(dataset)
|
57
|
+
@destination_dataset = dataset
|
46
58
|
@c_struct[:destination_dataset] = dataset.c_pointer
|
47
59
|
end
|
48
60
|
|
49
|
-
# @param count [Fixnum]
|
50
|
-
def band_count=(count)
|
51
|
-
@c_struct[:band_count] = count
|
52
|
-
end
|
53
|
-
|
54
61
|
# @param band_numbers [Array<Fixnum>]
|
55
62
|
def source_bands=(band_numbers)
|
56
|
-
bands_ptr = FFI::MemoryPointer.new(:
|
63
|
+
bands_ptr = FFI::MemoryPointer.new(:int, band_numbers.length)
|
57
64
|
bands_ptr.write_array_of_int(band_numbers)
|
58
65
|
|
59
66
|
@c_struct[:source_bands] = bands_ptr
|
67
|
+
@c_struct[:band_count] = band_numbers.length if band_numbers.length > @c_struct[:band_count]
|
68
|
+
end
|
69
|
+
|
70
|
+
# @return [Array<Fixnum>]
|
71
|
+
def source_bands
|
72
|
+
pointer = @c_struct[:source_bands]
|
73
|
+
return [] if pointer.null?
|
74
|
+
|
75
|
+
pointer.read_array_of_int(@c_struct[:band_count])
|
60
76
|
end
|
61
77
|
|
62
78
|
# @param band_numbers [Array<Fixnum>]
|
@@ -65,33 +81,32 @@ module GDAL
|
|
65
81
|
bands_ptr.write_array_of_int(band_numbers)
|
66
82
|
|
67
83
|
@c_struct[:destination_bands] = bands_ptr
|
84
|
+
@c_struct[:band_count] = band_numbers.length if band_numbers.length > @c_struct[:band_count]
|
68
85
|
end
|
69
86
|
|
70
|
-
|
71
|
-
|
87
|
+
# @return [Array<Fixnum>]
|
88
|
+
def destination_bands
|
89
|
+
pointer = @c_struct[:destination_bands]
|
90
|
+
return [] if pointer.null?
|
72
91
|
|
73
|
-
@c_struct[:
|
92
|
+
pointer.read_array_of_int(@c_struct[:band_count])
|
74
93
|
end
|
75
94
|
|
76
|
-
def
|
77
|
-
@c_struct[:
|
78
|
-
end
|
95
|
+
def transformer_arg=(transformation_object)
|
96
|
+
@c_struct[:transformer_arg] = transformation_object.c_pointer
|
79
97
|
|
80
|
-
|
81
|
-
@c_struct[:progress] = output_proc
|
98
|
+
@c_struct[:transformer] = transformation_object.function
|
82
99
|
end
|
83
100
|
|
84
|
-
|
101
|
+
# @param geometry [OGR::Geometry]
|
102
|
+
def cutline=(geometry)
|
85
103
|
raise 'Not a geom' unless geometry.is_a?(OGR::Geometry)
|
104
|
+
@cutline = geometry
|
86
105
|
|
87
106
|
@c_struct[:cutline] = geometry.c_pointer
|
88
|
-
# @c_struct[:cutline] = geometry.clone.c_pointer
|
89
|
-
end
|
90
|
-
|
91
|
-
def cutline_blend_distance=(distance)
|
92
|
-
@c_struct[:cutline_blend_distance] = distance
|
93
107
|
end
|
94
108
|
|
109
|
+
# @param values [Array<Float>]
|
95
110
|
def source_no_data_real=(values)
|
96
111
|
values_ptr = FFI::MemoryPointer.new(:double, values.length)
|
97
112
|
values_ptr.write_array_of_double(values)
|
@@ -99,6 +114,15 @@ module GDAL
|
|
99
114
|
@c_struct[:source_no_data_real] = values_ptr
|
100
115
|
end
|
101
116
|
|
117
|
+
# @return [Array<Float>]
|
118
|
+
def source_no_data_real
|
119
|
+
pointer = @c_struct[:source_no_data_real]
|
120
|
+
return [] if pointer.null?
|
121
|
+
|
122
|
+
pointer.read_array_of_double(@c_struct[:band_count])
|
123
|
+
end
|
124
|
+
|
125
|
+
# @param values [Array<Float>]
|
102
126
|
def source_no_data_imaginary=(values)
|
103
127
|
values_ptr = FFI::MemoryPointer.new(:double, values.length)
|
104
128
|
values_ptr.write_array_of_double(values)
|
@@ -106,6 +130,15 @@ module GDAL
|
|
106
130
|
@c_struct[:source_no_data_imaginary] = values_ptr
|
107
131
|
end
|
108
132
|
|
133
|
+
# @return [Array<Float>]
|
134
|
+
def source_no_data_imaginary
|
135
|
+
pointer = @c_struct[:source_no_data_imaginary]
|
136
|
+
return [] if pointer.null?
|
137
|
+
|
138
|
+
pointer.read_array_of_double(@c_struct[:band_count])
|
139
|
+
end
|
140
|
+
|
141
|
+
# @param values [Array<Float>]
|
109
142
|
def destination_no_data_real=(values)
|
110
143
|
values_ptr = FFI::MemoryPointer.new(:double, values.length)
|
111
144
|
values_ptr.write_array_of_double(values)
|
@@ -113,6 +146,15 @@ module GDAL
|
|
113
146
|
@c_struct[:destination_no_data_real] = values_ptr
|
114
147
|
end
|
115
148
|
|
149
|
+
# @return [Array<Float>]
|
150
|
+
def destination_no_data_real
|
151
|
+
pointer = @c_struct[:destination_no_data_real]
|
152
|
+
return [] if pointer.null?
|
153
|
+
|
154
|
+
pointer.read_array_of_double(@c_struct[:band_count])
|
155
|
+
end
|
156
|
+
|
157
|
+
# @param values [Array<Float>]
|
116
158
|
def destination_no_data_imaginary=(values)
|
117
159
|
values_ptr = FFI::MemoryPointer.new(:double, values.length)
|
118
160
|
values_ptr.write_array_of_double(values)
|
@@ -120,6 +162,30 @@ module GDAL
|
|
120
162
|
@c_struct[:destination_no_data_imaginary] = values_ptr
|
121
163
|
end
|
122
164
|
|
165
|
+
# @return [Array<Float>]
|
166
|
+
def destination_no_data_imaginary
|
167
|
+
pointer = @c_struct[:destination_no_data_imaginary]
|
168
|
+
return [] if pointer.null?
|
169
|
+
|
170
|
+
pointer.read_array_of_double(@c_struct[:band_count])
|
171
|
+
end
|
172
|
+
|
173
|
+
# Set a Proc per source band; number of procs in +band_procs+ should equal
|
174
|
+
# {band_count}.
|
175
|
+
#
|
176
|
+
# @param band_procs [Array<Proc>]
|
177
|
+
def source_per_band_validity_mask_function=(band_procs)
|
178
|
+
mask_func = FFI::GDAL::Warper::MaskFunc
|
179
|
+
|
180
|
+
funcs = band_procs.map do |band_proc|
|
181
|
+
FFI::Function.new(mask_func.result_type, mask_func.param_types, band_proc, blocking: true)
|
182
|
+
end
|
183
|
+
|
184
|
+
pointer = FFI::MemoryPointer.new(:pointer, band_procs.length)
|
185
|
+
pointer.write_array_of_pointer(funcs)
|
186
|
+
@c_struct[:source_per_band_validity_mask_function] = pointer
|
187
|
+
end
|
188
|
+
|
123
189
|
# Used for getting attributes of the internal WarpOptions struct.
|
124
190
|
#
|
125
191
|
# @param meth [Symbol] The FFI::GDAL::WarpOptions key.
|
@@ -128,5 +194,9 @@ module GDAL
|
|
128
194
|
|
129
195
|
@c_struct[meth]
|
130
196
|
end
|
197
|
+
|
198
|
+
def respond_to_missing?(method_name, include_private = false)
|
199
|
+
FFI::GDAL::WarpOptions.members.include?(method_name) || super
|
200
|
+
end
|
131
201
|
end
|
132
202
|
end
|
data/lib/ogr.rb
CHANGED
data/lib/ogr/data_source.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'uri'
|
2
4
|
require 'json'
|
3
5
|
require_relative '../gdal'
|
@@ -110,9 +112,7 @@ module OGR
|
|
110
112
|
# @param options [Hash] Driver-specific options.
|
111
113
|
# @return [OGR::Layer]
|
112
114
|
def create_layer(name, geometry_type: :wkbUnknown, spatial_reference: nil, **options)
|
113
|
-
unless can_create_layer?
|
114
|
-
raise OGR::UnsupportedOperation, 'This data source does not support creating layers.'
|
115
|
-
end
|
115
|
+
raise OGR::UnsupportedOperation, 'This data source does not support creating layers.' unless can_create_layer?
|
116
116
|
|
117
117
|
spatial_ref_ptr = GDAL._pointer(OGR::SpatialReference, spatial_reference) if spatial_reference
|
118
118
|
options_obj = GDAL::Options.pointer(options)
|
@@ -120,9 +120,7 @@ module OGR
|
|
120
120
|
layer_ptr = FFI::OGR::API.OGR_DS_CreateLayer(@c_pointer, name,
|
121
121
|
spatial_ref_ptr, geometry_type, options_obj)
|
122
122
|
|
123
|
-
unless layer_ptr
|
124
|
-
raise OGR::InvalidLayer, "Unable to create layer '#{name}'."
|
125
|
-
end
|
123
|
+
raise OGR::InvalidLayer, "Unable to create layer '#{name}'." unless layer_ptr
|
126
124
|
|
127
125
|
@layers << OGR::Layer.new(layer_ptr)
|
128
126
|
|
@@ -147,9 +145,7 @@ module OGR
|
|
147
145
|
# @param index [Fixnum]
|
148
146
|
# @return +true+ if successful, otherwise raises an OGR exception.
|
149
147
|
def delete_layer(index)
|
150
|
-
unless can_delete_layer?
|
151
|
-
raise OGR::UnsupportedOperation, 'This data source does not support deleting layers.'
|
152
|
-
end
|
148
|
+
raise OGR::UnsupportedOperation, 'This data source does not support deleting layers.' unless can_delete_layer?
|
153
149
|
|
154
150
|
ogr_err = FFI::OGR::API.OGR_DS_DeleteLayer(@c_pointer, index)
|
155
151
|
|
@@ -1,27 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module OGR
|
2
4
|
module DataSourceExtensions
|
3
5
|
# @return [Array<OGR::Layer>]
|
4
6
|
def layers
|
5
7
|
@layers = Array.new(layer_count) { |i| layer(i) }
|
6
8
|
end
|
7
|
-
|
8
|
-
# @return [Hash]
|
9
|
-
def as_json(options = nil)
|
10
|
-
{
|
11
|
-
data_source: {
|
12
|
-
driver: driver.name,
|
13
|
-
layer_count: layer_count,
|
14
|
-
layers: layers.map(&:as_json),
|
15
|
-
name: name,
|
16
|
-
style_table: style_table ? style_table.as_json(options) : nil
|
17
|
-
},
|
18
|
-
metadata: all_metadata
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
# @return [String]
|
23
|
-
def to_json(options = nil)
|
24
|
-
as_json(options).to_json
|
25
|
-
end
|
26
9
|
end
|
27
10
|
end
|