ffi-gdal 1.0.0.beta7 → 1.0.0.beta8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +31 -5
- data/.rubocop_todo.yml +70 -0
- data/.ruby-version +1 -1
- data/Gemfile +2 -0
- data/History.md +12 -0
- data/Rakefile +11 -1
- 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 +3 -0
- 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/cpl/conv.rb +2 -0
- 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/cpl.rb +2 -0
- 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 +2 -0
- data/lib/ffi/gdal/warper.rb +2 -0
- data/lib/ffi/gdal.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 +5 -0
- data/lib/ffi/ogr/style_param.rb +2 -0
- data/lib/ffi/ogr/style_value.rb +2 -0
- data/lib/ffi/ogr.rb +2 -0
- data/lib/ffi-gdal.rb +2 -0
- data/lib/gdal/color_entry.rb +2 -0
- data/lib/gdal/color_entry_mixins/extensions.rb +2 -0
- data/lib/gdal/color_interpretation.rb +2 -0
- data/lib/gdal/color_table.rb +2 -0
- data/lib/gdal/color_table_mixins/extensions.rb +2 -0
- 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 +5 -2
- data/lib/gdal/dataset_mixins/extensions.rb +2 -0
- data/lib/gdal/dataset_mixins/matching.rb +4 -1
- data/lib/gdal/dataset_mixins/warp_methods.rb +3 -1
- data/lib/gdal/driver.rb +3 -1
- 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 +2 -0
- data/lib/gdal/geo_transform_mixins/extensions.rb +2 -0
- data/lib/gdal/grid.rb +4 -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/grid_algorithms.rb +2 -0
- data/lib/gdal/gridder/point_extracting.rb +2 -0
- data/lib/gdal/gridder.rb +4 -1
- 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 +2 -0
- data/lib/gdal/raster_attribute_table.rb +2 -0
- data/lib/gdal/raster_attribute_table_mixins/extensions.rb +3 -1
- data/lib/gdal/raster_band.rb +4 -2
- data/lib/gdal/raster_band_classifier.rb +4 -6
- 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 +2 -0
- data/lib/gdal/raster_band_mixins/io_extensions.rb +3 -1
- 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 +6 -0
- data/lib/gdal.rb +2 -0
- data/lib/ogr/coordinate_transformation.rb +2 -0
- data/lib/ogr/data_source.rb +2 -0
- data/lib/ogr/data_source_extensions.rb +2 -0
- data/lib/ogr/data_source_mixins/capability_methods.rb +2 -0
- data/lib/ogr/driver.rb +2 -0
- data/lib/ogr/driver_mixins/capability_methods.rb +2 -0
- data/lib/ogr/envelope.rb +2 -0
- data/lib/ogr/envelope_extensions.rb +2 -0
- data/lib/ogr/error_handling.rb +2 -0
- data/lib/ogr/exceptions.rb +3 -1
- data/lib/ogr/feature.rb +14 -8
- data/lib/ogr/feature_definition.rb +7 -4
- data/lib/ogr/feature_definition_extensions.rb +2 -0
- data/lib/ogr/feature_extensions.rb +2 -0
- data/lib/ogr/field.rb +2 -0
- data/lib/ogr/field_definition.rb +5 -3
- 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 +4 -0
- 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 +2 -0
- data/lib/ogr/geometry_field_definition.rb +4 -1
- data/lib/ogr/geometry_mixins/container_mixins.rb +2 -0
- data/lib/ogr/geometry_mixins/extensions.rb +9 -7
- data/lib/ogr/geometry_types/container.rb +2 -0
- data/lib/ogr/geometry_types/curve.rb +2 -0
- data/lib/ogr/geometry_types/surface.rb +2 -0
- data/lib/ogr/internal_helpers.rb +2 -0
- data/lib/ogr/layer.rb +2 -0
- data/lib/ogr/layer_mixins/capability_methods.rb +2 -0
- data/lib/ogr/layer_mixins/extensions.rb +8 -0
- data/lib/ogr/layer_mixins/ogr_feature_methods.rb +2 -0
- data/lib/ogr/layer_mixins/ogr_field_methods.rb +6 -2
- 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 +2 -0
- data/lib/ogr/spatial_reference.rb +2 -0
- data/lib/ogr/spatial_reference_extensions.rb +2 -0
- 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 -0
- data/lib/ogr/style_tool.rb +2 -0
- data/lib/ogr.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 +3 -1
- 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 +9 -7
- data/spec/integration/ogr/layer_spec.rb +2 -0
- data/spec/spec_helper.rb +2 -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 +2 -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 +4 -1
- 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 -0
- data/spec/unit/gdal/grid_spec.rb +2 -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 +2 -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 +2 -0
- data/spec/unit/gdal/raster_attribute_table_spec.rb +2 -0
- data/spec/unit/gdal/raster_band_classifier_spec.rb +5 -3
- 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 +2 -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 -0
- data/spec/unit/ogr/feature_extensions_spec.rb +2 -0
- data/spec/unit/ogr/feature_spec.rb +3 -3
- data/spec/unit/ogr/field_definition_spec.rb +2 -0
- data/spec/unit/ogr/field_spec.rb +2 -0
- 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 -0
- 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 +7 -3
- 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 -0
- data/spec/unit/ogr/style_tool_spec.rb +2 -0
- data/spec/unit/version_info_spec.rb +2 -0
- metadata +20 -6
data/lib/gdal/logger.rb
CHANGED
data/lib/gdal/major_object.rb
CHANGED
data/lib/gdal/merger.rb
CHANGED
data/lib/gdal/options.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
|
3
5
|
module GDAL
|
@@ -10,7 +12,7 @@ module GDAL
|
|
10
12
|
case value.class
|
11
13
|
when String then set_value_as_string(row, field, value)
|
12
14
|
when Float then set_value_as_double(row, field, value)
|
13
|
-
when
|
15
|
+
when Integer then set_value_as_integer(row, field, value)
|
14
16
|
else raise GDAL::UnknownRasterAttributeTableType, "Unknown value type for value '#{value}'"
|
15
17
|
end
|
16
18
|
end
|
data/lib/gdal/raster_band.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'narray'
|
2
4
|
require_relative '../gdal'
|
3
5
|
require_relative 'raster_band_mixins/algorithm_extensions'
|
@@ -216,7 +218,7 @@ module GDAL
|
|
216
218
|
flag_list.reverse_each.with_index do |flag, i|
|
217
219
|
flag = flag.to_i
|
218
220
|
|
219
|
-
if i
|
221
|
+
if i.zero? && flag == 1
|
220
222
|
flags << :GMF_ALL_VALID
|
221
223
|
elsif i == 1 && flag == 1
|
222
224
|
flags << :GMF_PER_DATASET
|
@@ -273,7 +275,7 @@ module GDAL
|
|
273
275
|
standard_deviation = FFI::MemoryPointer.new(:double)
|
274
276
|
|
275
277
|
handler = GDAL::CPLErrorHandler.new
|
276
|
-
handler.on_warning = proc {
|
278
|
+
handler.on_warning = proc { {} }
|
277
279
|
handler.on_none = proc do
|
278
280
|
{
|
279
281
|
minimum: min.read_double,
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../gdal'
|
2
4
|
|
3
5
|
module GDAL
|
@@ -72,13 +74,9 @@ module GDAL
|
|
72
74
|
range_for_type(min, max)
|
73
75
|
end
|
74
76
|
|
75
|
-
|
77
|
+
Array.new(range_count) do |i|
|
76
78
|
range = breakpoint_calculator.call(i)
|
77
|
-
|
78
|
-
ranges << {
|
79
|
-
range: range,
|
80
|
-
map_to: (i + 1).to_data_type(@raster_band.data_type)
|
81
|
-
}
|
79
|
+
{ range: range, map_to: (i + 1).to_data_type(@raster_band.data_type) }
|
82
80
|
end
|
83
81
|
end
|
84
82
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module GDAL
|
2
4
|
module RasterBandMixins
|
3
5
|
module AlgorithmMethods
|
@@ -34,7 +36,8 @@ module GDAL
|
|
34
36
|
colors,
|
35
37
|
color_table.c_pointer,
|
36
38
|
progress_function,
|
37
|
-
progress_arg
|
39
|
+
progress_arg
|
40
|
+
)
|
38
41
|
|
39
42
|
color_table
|
40
43
|
end
|
@@ -75,7 +78,8 @@ module GDAL
|
|
75
78
|
output_ptr,
|
76
79
|
color_table_ptr,
|
77
80
|
progress_function,
|
78
|
-
progress_arg
|
81
|
+
progress_arg
|
82
|
+
)
|
79
83
|
|
80
84
|
output_band
|
81
85
|
end
|
@@ -97,7 +101,8 @@ module GDAL
|
|
97
101
|
x_offset,
|
98
102
|
y_offset,
|
99
103
|
x_size,
|
100
|
-
y_size
|
104
|
+
y_size
|
105
|
+
)
|
101
106
|
end
|
102
107
|
|
103
108
|
# Computes the proximity of all pixels in the proximity_band to those in
|
@@ -134,7 +139,8 @@ module GDAL
|
|
134
139
|
proximity_band_ptr,
|
135
140
|
options_ptr,
|
136
141
|
progress_function,
|
137
|
-
progress_arg
|
142
|
+
progress_arg
|
143
|
+
)
|
138
144
|
end
|
139
145
|
|
140
146
|
# Fill selected raster regions by interpolation from the edges. It
|
@@ -324,7 +330,8 @@ module GDAL
|
|
324
330
|
connectedness,
|
325
331
|
options_ptr,
|
326
332
|
progress_function,
|
327
|
-
progress_arg
|
333
|
+
progress_arg
|
334
|
+
)
|
328
335
|
end
|
329
336
|
end
|
330
337
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module GDAL
|
2
4
|
module RasterBandMixins
|
3
5
|
# RasterBand methods added for dealing with colorizing.
|
@@ -74,7 +76,7 @@ module GDAL
|
|
74
76
|
|
75
77
|
# @param hex [String]
|
76
78
|
def hex_to_rgb(hex)
|
77
|
-
hex.sub
|
79
|
+
hex = hex.sub(/^#/, '')
|
78
80
|
matches = hex.match(/(?<red>[a-zA-Z0-9]{2})(?<green>[a-zA-Z0-9]{2})(?<blue>[a-zA-Z0-9]{2})/)
|
79
81
|
|
80
82
|
[matches[:red].to_i(16), matches[:green].to_i(16), matches[:blue].to_i(16)]
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module GDAL
|
2
4
|
module RasterBandMixins
|
3
5
|
# Methods for reading & writing RasterBands that didn't come from GDAL.
|
@@ -136,7 +138,7 @@ module GDAL
|
|
136
138
|
read_block(x_block_number, y_block_number, data_pointer)
|
137
139
|
pixels = GDAL._read_pointer(data_pointer, data_type, block_buffer_size)
|
138
140
|
|
139
|
-
yield(pixels, x_block_size, y_block_size)
|
141
|
+
yield(Array(pixels), x_block_size, y_block_size)
|
140
142
|
end
|
141
143
|
end
|
142
144
|
end
|
data/lib/gdal/rpc_info.rb
CHANGED
data/lib/gdal/transformer.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module GDAL
|
2
4
|
module Transformers
|
3
5
|
class ApproximateTransformer
|
@@ -18,7 +20,8 @@ module GDAL
|
|
18
20
|
@c_pointer = FFI::GDAL::Alg.GDALCreateApproxTransformer(
|
19
21
|
base_transformer_function,
|
20
22
|
transformer_arg_ptr,
|
21
|
-
max_error
|
23
|
+
max_error
|
24
|
+
)
|
22
25
|
end
|
23
26
|
|
24
27
|
def destroy!
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module GDAL
|
2
4
|
module Transformers
|
3
5
|
class BaseGeneralImageProjectionTransformer
|
@@ -32,7 +34,8 @@ module GDAL
|
|
32
34
|
geo_transform_ptr = GDAL._pointer(GDAL::GeoTransform, geo_transform)
|
33
35
|
|
34
36
|
FFI::GDAL::Alg.GDALSetGenImgProjTransformerDstGeoTransform(
|
35
|
-
@c_pointer, geo_transform_ptr
|
37
|
+
@c_pointer, geo_transform_ptr
|
38
|
+
)
|
36
39
|
end
|
37
40
|
end
|
38
41
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module GDAL
|
2
4
|
module Transformers
|
3
5
|
class GCPTransformer
|
@@ -25,13 +27,15 @@ module GDAL
|
|
25
27
|
gcp_list.size,
|
26
28
|
gcp_list_ptr,
|
27
29
|
requested_polynomial_order,
|
28
|
-
reversed
|
30
|
+
reversed
|
31
|
+
)
|
29
32
|
else
|
30
33
|
FFI::GDAL::Alg.GDALCreateGCPTransformer(
|
31
34
|
gcp_list.size,
|
32
35
|
gcp_list_ptr,
|
33
36
|
requested_polynomial_order,
|
34
|
-
reversed
|
37
|
+
reversed
|
38
|
+
)
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
@@ -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,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../gdal'
|
2
4
|
|
3
5
|
module GDAL
|
@@ -192,5 +194,9 @@ module GDAL
|
|
192
194
|
|
193
195
|
@c_struct[meth]
|
194
196
|
end
|
197
|
+
|
198
|
+
def respond_to_missing?(method_name, include_private = false)
|
199
|
+
FFI::GDAL::WarpOptions.members.include?(method_name) || super
|
200
|
+
end
|
195
201
|
end
|
196
202
|
end
|
data/lib/gdal.rb
CHANGED
data/lib/ogr/data_source.rb
CHANGED
data/lib/ogr/driver.rb
CHANGED
data/lib/ogr/envelope.rb
CHANGED
data/lib/ogr/error_handling.rb
CHANGED
data/lib/ogr/exceptions.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module OGR
|
2
4
|
class CorruptData < RuntimeError
|
3
5
|
end
|
@@ -12,7 +14,7 @@ module OGR
|
|
12
14
|
msg
|
13
15
|
elsif driver.is_a? String
|
14
16
|
"Driver not found with name '#{driver}'."
|
15
|
-
elsif driver.is_a?
|
17
|
+
elsif driver.is_a? Integer
|
16
18
|
"Driver at index #{driver} not found."
|
17
19
|
end
|
18
20
|
|
data/lib/ogr/feature.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'date'
|
2
4
|
require_relative '../ogr'
|
3
5
|
require_relative '../gdal'
|
@@ -20,9 +22,9 @@ module OGR
|
|
20
22
|
fd_or_pointer
|
21
23
|
end
|
22
24
|
|
23
|
-
if
|
24
|
-
|
25
|
-
|
25
|
+
return if @c_pointer.is_a?(FFI::Pointer) && !@c_pointer.null?
|
26
|
+
|
27
|
+
raise OGR::InvalidFeature, "Unable to create Feature with #{fd_or_pointer}"
|
26
28
|
end
|
27
29
|
|
28
30
|
def destroy!
|
@@ -101,7 +103,8 @@ module OGR
|
|
101
103
|
FFI::OGR::API.OGR_F_SetFieldStringList(
|
102
104
|
@c_pointer,
|
103
105
|
index,
|
104
|
-
values_ptr
|
106
|
+
values_ptr
|
107
|
+
)
|
105
108
|
end
|
106
109
|
|
107
110
|
# @param index [Fixnum]
|
@@ -114,7 +117,8 @@ module OGR
|
|
114
117
|
@c_pointer,
|
115
118
|
index,
|
116
119
|
values.size,
|
117
|
-
values_ptr
|
120
|
+
values_ptr
|
121
|
+
)
|
118
122
|
end
|
119
123
|
|
120
124
|
# @param index [Fixnum]
|
@@ -127,7 +131,8 @@ module OGR
|
|
127
131
|
@c_pointer,
|
128
132
|
index,
|
129
133
|
values.size,
|
130
|
-
values_ptr
|
134
|
+
values_ptr
|
135
|
+
)
|
131
136
|
end
|
132
137
|
|
133
138
|
# @param index [Fixnum]
|
@@ -150,14 +155,15 @@ module OGR
|
|
150
155
|
@c_pointer,
|
151
156
|
index,
|
152
157
|
value.length,
|
153
|
-
value_ptr
|
158
|
+
value_ptr
|
159
|
+
)
|
154
160
|
end
|
155
161
|
|
156
162
|
# @param index [Fixnum]
|
157
163
|
# @param value [Date, Time, DateTime]
|
158
164
|
def set_field_date_time(index, value)
|
159
165
|
time = value.to_time
|
160
|
-
zone = OGR._format_time_zone_for_ogr(
|
166
|
+
zone = OGR._format_time_zone_for_ogr(value.zone)
|
161
167
|
|
162
168
|
FFI::OGR::API.OGR_F_SetFieldDateTime(@c_pointer, index,
|
163
169
|
time.year,
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../ogr'
|
2
4
|
require_relative 'feature_definition_extensions'
|
3
5
|
|
@@ -19,9 +21,9 @@ module OGR
|
|
19
21
|
name_or_pointer
|
20
22
|
end
|
21
23
|
|
22
|
-
if
|
23
|
-
|
24
|
-
|
24
|
+
return if @c_pointer.is_a?(FFI::Pointer) && !@c_pointer.null?
|
25
|
+
|
26
|
+
raise OGR::InvalidFeatureDefinition, "Unable to create #{self.class.name} from #{name_or_pointer}"
|
25
27
|
end
|
26
28
|
|
27
29
|
def release!
|
@@ -67,7 +69,8 @@ module OGR
|
|
67
69
|
def delete_field_definition(index)
|
68
70
|
ogr_err = FFI::OGR::API.OGR_FD_DeleteFieldDefn(
|
69
71
|
@c_pointer,
|
70
|
-
index
|
72
|
+
index
|
73
|
+
)
|
71
74
|
|
72
75
|
ogr_err.handle_result "Unable to delete field definition at index #{index}"
|
73
76
|
end
|
data/lib/ogr/field.rb
CHANGED
data/lib/ogr/field_definition.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../ogr'
|
2
4
|
|
3
5
|
module OGR
|
@@ -14,9 +16,9 @@ module OGR
|
|
14
16
|
name_or_pointer
|
15
17
|
end
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
return if @c_pointer.is_a?(FFI::Pointer) && !@c_pointer.null?
|
20
|
+
|
21
|
+
raise OGR::InvalidFieldDefinition, "Unable to create #{self.class.name} from #{name_or_pointer}"
|
20
22
|
end
|
21
23
|
|
22
24
|
def destroy!
|