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/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'simplecov'
|
2
4
|
SimpleCov.start do
|
3
5
|
add_filter '/spec/'
|
@@ -7,7 +9,7 @@ SimpleCov.start do
|
|
7
9
|
add_group 'ext', 'lib/ext'
|
8
10
|
end
|
9
11
|
|
10
|
-
$LOAD_PATH.unshift File.expand_path('
|
12
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
11
13
|
require 'ffi-gdal'
|
12
14
|
require 'byebug'
|
13
15
|
|
Binary file
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
RSpec.shared_examples 'a geometry' do
|
2
4
|
require 'ogr'
|
3
5
|
|
@@ -353,7 +355,7 @@ RSpec.shared_examples 'a geometry' do
|
|
353
355
|
|
354
356
|
describe '#wkb_size' do
|
355
357
|
it 'returns a non-zero integer' do
|
356
|
-
expect(geometry.wkb_size).to be_a
|
358
|
+
expect(geometry.wkb_size).to be_a Integer
|
357
359
|
|
358
360
|
if geometry.name == 'LINEARRING'
|
359
361
|
expect(geometry.wkb_size).to be_zero
|
data/spec/unit/ffi/gdal_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'fakefs/safe'
|
3
5
|
|
@@ -9,6 +11,7 @@ RSpec.describe FFI::GDAL do
|
|
9
11
|
end
|
10
12
|
|
11
13
|
it 'returns GDAL_LIBRARY_PATH + libgdal file name' do
|
14
|
+
expect(Dir).to receive(:[]).with(%r{/pants/stuff\.+}).and_return '/pants/stuff.dylib'
|
12
15
|
expect(described_class.find_lib('stuff')).to match %r{\A/pants/stuff\.+}
|
13
16
|
end
|
14
17
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'gdal'
|
5
|
+
|
6
|
+
RSpec.describe GDAL::Dataset do
|
7
|
+
let(:source_file_path) do
|
8
|
+
File.expand_path('../../../support/images/osgeo/geotiff/GeogToWGS84GeoKey/GeogToWGS84GeoKey5.tif', __dir__)
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:output_dir) { Dir.mktmpdir(File.basename(__FILE__, '.rb')) }
|
12
|
+
let(:output_file) { File.join(output_dir, 'reprojected_image.tif') }
|
13
|
+
|
14
|
+
after { FileUtils.rm_rf(output_dir) if Dir.exist?(output_dir) }
|
15
|
+
|
16
|
+
subject { described_class.open(source_file_path, 'r', false) }
|
17
|
+
|
18
|
+
describe '#reproject_image' do
|
19
|
+
let(:dest_dataset) do
|
20
|
+
dest_width = subject.raster_x_size / 4
|
21
|
+
dest_height = subject.raster_y_size / 4
|
22
|
+
dataset = GDAL::Driver.by_name('GTiff').create_dataset(output_file, dest_width, dest_height,
|
23
|
+
data_type: subject.raster_band(1).data_type)
|
24
|
+
dataset.geo_transform = subject.geo_transform.dup
|
25
|
+
dataset.projection = OGR::SpatialReference.new_from_epsg(3857).to_wkt
|
26
|
+
dataset
|
27
|
+
end
|
28
|
+
|
29
|
+
after { dest_dataset.close }
|
30
|
+
|
31
|
+
it 'creates a valid dataset' do
|
32
|
+
subject.reproject_image(dest_dataset, :GRA_CubicSpline)
|
33
|
+
|
34
|
+
dest_dataset.flush_cache
|
35
|
+
expect(dest_dataset.projection).to match(/AUTHORITY\[\"EPSG\",\"3857\"\]/)
|
36
|
+
expect(dest_dataset.raster_count).to eq(subject.raster_count)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#create_and_reproject_image' do
|
41
|
+
let(:output_projection) { OGR::SpatialReference.new_from_epsg(3857).to_wkt }
|
42
|
+
|
43
|
+
it 'creates a valid dataset' do
|
44
|
+
subject.create_and_reproject_image(output_file, :GRA_NearestNeighbor,
|
45
|
+
OGR::SpatialReference.new_from_epsg(3857).to_wkt, GDAL::Driver.by_name('GTiff'))
|
46
|
+
|
47
|
+
dest_dataset = GDAL::Dataset.open(output_file, 'r')
|
48
|
+
expect(dest_dataset.projection).to match(/AUTHORITY\[\"EPSG\",\"3857\"\]/)
|
49
|
+
expect(dest_dataset.raster_count).to eq(subject.raster_count)
|
50
|
+
|
51
|
+
dest_driver = dest_dataset.driver
|
52
|
+
expect(dest_driver.long_name).to eq 'GeoTIFF'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'gdal/geo_transform'
|
3
5
|
|
@@ -259,18 +261,5 @@ RSpec.describe GDAL::GeoTransform do
|
|
259
261
|
expect(result).to eq pixel: -9000, line: -19_000
|
260
262
|
end
|
261
263
|
end
|
262
|
-
|
263
|
-
describe '#as_json' do
|
264
|
-
it 'returns the attributes as a Hash' do
|
265
|
-
expect(subject.as_json).to eq(
|
266
|
-
x_origin: 0.0,
|
267
|
-
x_rotation: 0.0,
|
268
|
-
pixel_width: 0.0,
|
269
|
-
y_origin: 0.0,
|
270
|
-
y_rotation: 0.0,
|
271
|
-
pixel_height: 0.0
|
272
|
-
)
|
273
|
-
end
|
274
|
-
end
|
275
264
|
end
|
276
265
|
end
|
data/spec/unit/gdal/grid_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'gdal/grid'
|
3
5
|
|
@@ -12,6 +14,14 @@ RSpec.describe GDAL::Grid do
|
|
12
14
|
it { is_expected.to respond_to :algorithm_type }
|
13
15
|
end
|
14
16
|
|
17
|
+
describe '#create' do
|
18
|
+
context 'no points to grid' do
|
19
|
+
it 'raises a GDAL::NoValuesToGrid' do
|
20
|
+
expect { subject.create([], {}, nil) }.to raise_exception GDAL::NoValuesToGrid
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
15
25
|
describe '#make_points_pointer' do
|
16
26
|
context 'array has values' do
|
17
27
|
let(:points) { [1, 2, 3, 4] }
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'gdal/gridder'
|
3
5
|
|
@@ -137,4 +139,44 @@ RSpec.describe GDAL::Gridder do
|
|
137
139
|
end
|
138
140
|
end
|
139
141
|
end
|
142
|
+
|
143
|
+
describe '#build_block_count' do
|
144
|
+
it 'builds block sizes for both x and y' do
|
145
|
+
raster_width = 4
|
146
|
+
block_x_size = 2
|
147
|
+
raster_height = 5
|
148
|
+
block_y_size = 3
|
149
|
+
|
150
|
+
expect(subject).to receive(:build_block_size).with(raster_width, block_x_size).
|
151
|
+
and_call_original
|
152
|
+
expect(subject).to receive(:build_block_size).with(raster_height, block_y_size).
|
153
|
+
and_call_original
|
154
|
+
|
155
|
+
subject.send(:build_block_count, block_x_size, block_y_size, raster_width, raster_height)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe '#build_block_size' do
|
160
|
+
context 'calculation should not be evenly divisible' do
|
161
|
+
it 'returns the floor of the count' do
|
162
|
+
raster_width = 4
|
163
|
+
block_x_size = 2
|
164
|
+
|
165
|
+
result = subject.send(:build_block_size, raster_width, block_x_size)
|
166
|
+
|
167
|
+
expect(result).to eq 2
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
context 'calculation should be evenly divisible' do
|
172
|
+
it 'returns the floor of the count' do
|
173
|
+
raster_width = 4
|
174
|
+
block_x_size = 1
|
175
|
+
|
176
|
+
result = subject.send(:build_block_size, raster_width, block_x_size)
|
177
|
+
|
178
|
+
expect(result).to eq 4
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
140
182
|
end
|
@@ -1,6 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'gdal/options'
|
3
5
|
|
4
6
|
RSpec.describe GDAL::Options do
|
5
|
-
|
7
|
+
describe '.to_hash' do
|
8
|
+
subject { described_class.to_hash(pointer) }
|
9
|
+
|
10
|
+
context 'options are set' do
|
11
|
+
let(:pointer) { described_class.pointer(hash) }
|
12
|
+
|
13
|
+
let(:hash) do
|
14
|
+
{
|
15
|
+
one: 'ONE',
|
16
|
+
two: 'TWO'
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'returns the Ruby Hash' do
|
21
|
+
expect(subject).to eq(hash)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'pointer is null' do
|
26
|
+
let(:pointer) { FFI::MemoryPointer.new(:string) }
|
27
|
+
|
28
|
+
it 'returns an empty Hash' do
|
29
|
+
expect(subject).to eq({})
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
6
33
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'gdal/driver'
|
3
5
|
require 'gdal/raster_band_classifier'
|
@@ -96,8 +98,8 @@ RSpec.describe GDAL::RasterBandClassifier do
|
|
96
98
|
end
|
97
99
|
|
98
100
|
context 'all nodata pixels' do
|
99
|
-
let(:band_narray) {
|
100
|
-
before { allow(raster_band).to receive(:
|
101
|
+
let(:band_narray) { Numo::Int8.new(3, 5).fill(0) }
|
102
|
+
before { allow(raster_band).to receive(:to_nna).and_return(band_narray) }
|
101
103
|
|
102
104
|
it 'returns an empty Array' do
|
103
105
|
expect(subject.equal_count_ranges(10)).to eq([])
|
@@ -129,7 +131,7 @@ RSpec.describe GDAL::RasterBandClassifier do
|
|
129
131
|
end
|
130
132
|
|
131
133
|
it 'retains its NODATA pixels' do
|
132
|
-
expect { subject.classify! }.to_not
|
134
|
+
expect { subject.classify! }.to_not(change { raster_band.to_na.eq(-9999.0).count_true })
|
133
135
|
end
|
134
136
|
end
|
135
137
|
|
@@ -159,7 +161,7 @@ RSpec.describe GDAL::RasterBandClassifier do
|
|
159
161
|
end
|
160
162
|
|
161
163
|
it 'retains its NODATA pixels' do
|
162
|
-
expect { subject.classify! }.to_not
|
164
|
+
expect { subject.classify! }.to_not(change { raster_band.to_na.eq(-9999.0).count_true })
|
163
165
|
pixels = raster_band.to_na
|
164
166
|
expect(pixels.eq(-9999).count_true).to eq 640
|
165
167
|
expect(pixels.eq(0).count_true).to eq 0
|
@@ -190,7 +192,43 @@ RSpec.describe GDAL::RasterBandClassifier do
|
|
190
192
|
end
|
191
193
|
|
192
194
|
it 'retains its NODATA pixels' do
|
193
|
-
expect { subject.classify! }.to_not
|
195
|
+
expect { subject.classify! }.to_not(change { raster_band.to_na.eq(-9999.0).count_true })
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
describe '#masked_pixels' do
|
201
|
+
let(:pixels) { dataset.raster_band(1).to_nna }
|
202
|
+
let(:raster_band) { double 'Band', no_data_value: { value: nodata_value } }
|
203
|
+
|
204
|
+
before { subject.instance_variable_set(:@raster_band, raster_band) }
|
205
|
+
|
206
|
+
context 'nodata is NaN' do
|
207
|
+
let(:nodata_value) { Float::NAN }
|
208
|
+
let(:pixels) { Numo::DFloat.cast(dataset.raster_band(1).to_nna) }
|
209
|
+
|
210
|
+
before do
|
211
|
+
pixels[pixels.eq(0)] = nodata_value
|
212
|
+
end
|
213
|
+
|
214
|
+
it 'removes all nodata values' do
|
215
|
+
expect(subject.send(:masked_pixels, pixels).isnan.count_true).to eq 0
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
context 'nodata is a number' do
|
220
|
+
let(:nodata_value) { 0 }
|
221
|
+
|
222
|
+
it 'removes all nodata values' do
|
223
|
+
expect(subject.send(:masked_pixels, pixels).eq(0).count_true).to eq 0
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
context 'nodata is nil' do
|
228
|
+
let(:nodata_value) { nil }
|
229
|
+
|
230
|
+
it 'returns the original pixels' do
|
231
|
+
expect(subject.send(:masked_pixels, pixels)).to eq pixels
|
194
232
|
end
|
195
233
|
end
|
196
234
|
end
|