ffi-gdal 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.prettierrc.yml +4 -0
- data/.rubocop.yml +9 -5
- data/.rubocop_todo.yml +5 -11
- data/.solargraph.yml +13 -0
- data/Changelog-0.x.md +229 -174
- data/Changelog.md +15 -5
- data/Dockerfile.gdal2 +1 -1
- data/Gemfile +12 -2
- data/README.md +13 -10
- data/Rakefile +6 -6
- data/bin/bundle +12 -12
- data/bin/rake +6 -6
- data/bin/rspec +6 -6
- data/bin/rubocop +6 -6
- data/examples/extract_and_colorize.rb +15 -15
- data/examples/geometries.rb +12 -12
- data/examples/gridding.rb +17 -17
- data/examples/ogr_layer_to_layer.rb +3 -3
- data/examples/raster_erasing.rb +9 -9
- data/examples/remove_small_polygons.rb +11 -11
- data/examples/testing_gdal.rb +20 -20
- data/examples/warping.rb +13 -13
- data/ffi-gdal.gemspec +15 -26
- data/lib/ext/ffi_library_function_checks.rb +3 -3
- data/lib/ext/narray_ext.rb +1 -1
- data/lib/ext/to_bool.rb +2 -2
- data/lib/ffi/cpl/conv.rb +2 -2
- data/lib/ffi/cpl/error.rb +1 -1
- data/lib/ffi/cpl/hash_set.rb +2 -2
- data/lib/ffi/cpl/http.rb +3 -3
- data/lib/ffi/cpl/http_result.rb +2 -2
- data/lib/ffi/cpl/list.rb +1 -1
- data/lib/ffi/cpl/mime_part.rb +1 -1
- data/lib/ffi/cpl/minixml.rb +2 -2
- data/lib/ffi/cpl/port.rb +1 -1
- data/lib/ffi/cpl/progress.rb +2 -2
- data/lib/ffi/cpl/quad_tree.rb +3 -3
- data/lib/ffi/cpl/rect_obj.rb +1 -1
- data/lib/ffi/cpl/string.rb +1 -1
- data/lib/ffi/cpl/vsi.rb +2 -2
- data/lib/ffi/cpl/xml_node.rb +1 -1
- data/lib/ffi/cpl.rb +11 -11
- data/lib/ffi/extensions/gdal/extensions/all.rb +2 -2
- data/lib/ffi/extensions/gdal/extensions.rb +2 -2
- data/lib/ffi/extensions/rttopo/gbox.rb +1 -1
- data/lib/ffi/extensions/rttopo/geom.rb +2 -2
- data/lib/ffi/extensions/rttopo.rb +3 -3
- data/lib/ffi/gdal/alg.rb +2 -2
- data/lib/ffi/gdal/color_entry.rb +1 -1
- data/lib/ffi/gdal/gcp.rb +1 -1
- data/lib/ffi/gdal/gdal.rb +3 -3
- data/lib/ffi/gdal/grid.rb +2 -2
- data/lib/ffi/gdal/grid_data_metrics_options.rb +1 -1
- data/lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb +1 -1
- data/lib/ffi/gdal/grid_moving_average_options.rb +1 -1
- data/lib/ffi/gdal/grid_nearest_neighbor_options.rb +1 -1
- data/lib/ffi/gdal/matching.rb +2 -2
- data/lib/ffi/gdal/rpc_info.rb +1 -1
- data/lib/ffi/gdal/transformer_info.rb +1 -1
- data/lib/ffi/gdal/version.rb +1 -1
- data/lib/ffi/gdal/vrt.rb +2 -2
- data/lib/ffi/gdal/warp_options.rb +1 -1
- data/lib/ffi/gdal/warper.rb +2 -2
- data/lib/ffi/gdal.rb +22 -22
- data/lib/ffi/ogr/api.rb +3 -3
- data/lib/ffi/ogr/contour_writer_info.rb +1 -1
- data/lib/ffi/ogr/core.rb +9 -9
- data/lib/ffi/ogr/envelope.rb +1 -1
- data/lib/ffi/ogr/envelope_3d.rb +1 -1
- data/lib/ffi/ogr/featurestyle.rb +1 -1
- data/lib/ffi/ogr/field.rb +1 -1
- data/lib/ffi/ogr/geocoding.rb +2 -2
- data/lib/ffi/ogr/srs_api.rb +63 -63
- data/lib/ffi/ogr/style_param.rb +2 -2
- data/lib/ffi/ogr/style_value.rb +1 -1
- data/lib/ffi/ogr.rb +11 -11
- data/lib/ffi-gdal.rb +8 -8
- data/lib/gdal/color_table.rb +6 -6
- data/lib/gdal/dataset/accessors.rb +101 -0
- data/lib/gdal/{dataset_mixins → dataset}/algorithm_methods.rb +1 -1
- data/lib/gdal/dataset/class_methods.rb +69 -0
- data/lib/gdal/dataset/internal_functions.rb +22 -0
- data/lib/gdal/{dataset_mixins → dataset}/matching.rb +1 -1
- data/lib/gdal/dataset/raster_band_methods.rb +181 -0
- data/lib/gdal/{dataset_mixins → dataset}/warp_methods.rb +1 -1
- data/lib/gdal/dataset.rb +21 -359
- data/lib/gdal/driver.rb +10 -10
- data/lib/gdal/environment_methods.rb +1 -1
- data/lib/gdal/extensions/all.rb +1 -1
- data/lib/gdal/extensions/color_entry/extensions.rb +2 -2
- data/lib/gdal/extensions/color_table/extensions.rb +2 -2
- data/lib/gdal/extensions/dataset/extensions.rb +11 -11
- data/lib/gdal/extensions/driver/extensions.rb +7 -7
- data/lib/gdal/extensions/geo_transform/extensions.rb +2 -2
- data/lib/gdal/extensions/gridder.rb +8 -8
- data/lib/gdal/extensions/gridder_options.rb +6 -6
- data/lib/gdal/extensions/raster_attribute_table/extensions.rb +1 -1
- data/lib/gdal/extensions/raster_band/algorithm_extensions.rb +4 -4
- data/lib/gdal/extensions/raster_band/coloring_extensions.rb +1 -1
- data/lib/gdal/extensions/raster_band/extensions.rb +3 -3
- data/lib/gdal/extensions/raster_band/io_extensions.rb +4 -4
- data/lib/gdal/extensions/raster_band_classifier.rb +3 -3
- data/lib/gdal/geo_transform.rb +1 -1
- data/lib/gdal/grid.rb +6 -6
- data/lib/gdal/grid_algorithms/metric_average_distance.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_average_distance_pts.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_count.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_maximum.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_minimum.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_range.rb +1 -1
- data/lib/gdal/grid_algorithms.rb +9 -9
- data/lib/gdal/internal_helpers.rb +3 -3
- data/lib/gdal/logger.rb +1 -1
- data/lib/gdal/major_object.rb +6 -6
- data/lib/gdal/options.rb +2 -2
- data/lib/gdal/raster_attribute_table.rb +5 -5
- data/lib/gdal/raster_band.rb +24 -24
- data/lib/gdal/rpc_info.rb +2 -2
- data/lib/gdal/transformer.rb +1 -1
- data/lib/gdal/transformers/general_image_projection_transformer.rb +1 -1
- data/lib/gdal/transformers/general_image_projection_transformer2.rb +1 -1
- data/lib/gdal/transformers/general_image_projection_transformer3.rb +1 -1
- data/lib/gdal/version_info.rb +9 -9
- data/lib/gdal/virtual_dataset.rb +4 -4
- data/lib/gdal/warp_operation.rb +2 -2
- data/lib/gdal/warp_options.rb +2 -2
- data/lib/gdal.rb +17 -17
- data/lib/ogr/coordinate_transformation.rb +5 -5
- data/lib/ogr/data_source.rb +9 -9
- data/lib/ogr/driver.rb +9 -9
- data/lib/ogr/envelope.rb +1 -1
- data/lib/ogr/error_handling.rb +1 -1
- data/lib/ogr/extensions/all.rb +1 -1
- data/lib/ogr/extensions/data_source/capability_methods.rb +4 -4
- data/lib/ogr/extensions/data_source/data_source_extensions.rb +1 -1
- data/lib/ogr/extensions/driver/capability_methods.rb +3 -3
- data/lib/ogr/extensions/envelope/extensions.rb +1 -1
- data/lib/ogr/extensions/feature/extensions.rb +1 -1
- data/lib/ogr/extensions/feature_definition/extensions.rb +1 -1
- data/lib/ogr/extensions/geometries/point/extensions.rb +1 -1
- data/lib/ogr/extensions/geometry/container_mixins.rb +10 -10
- data/lib/ogr/extensions/geometry/ewkb_io_extensions.rb +3 -3
- data/lib/ogr/extensions/geometry/ewkb_record.rb +4 -4
- data/lib/ogr/extensions/geometry/extensions.rb +4 -7
- data/lib/ogr/extensions/geometry/rttopo_extensions.rb +2 -2
- data/lib/ogr/extensions/geometry/wkb_record.rb +3 -3
- data/lib/ogr/extensions/geometry_types/curve/extensions.rb +2 -2
- data/lib/ogr/extensions/layer/capability_methods.rb +17 -17
- data/lib/ogr/extensions/layer/extensions.rb +1 -1
- data/lib/ogr/extensions/spatial_reference/extensions.rb +1 -1
- data/lib/ogr/extensions/spatial_reference/initializers.rb +2 -2
- data/lib/ogr/extensions/style_table/extensions.rb +1 -1
- data/lib/ogr/feature.rb +15 -15
- data/lib/ogr/feature_definition.rb +2 -2
- data/lib/ogr/field.rb +5 -5
- data/lib/ogr/field_definition.rb +1 -1
- data/lib/ogr/geocoder.rb +1 -1
- data/lib/ogr/geometries/geometry_collection.rb +2 -2
- data/lib/ogr/geometries/geometry_collection_25d.rb +1 -1
- data/lib/ogr/geometries/line_string.rb +1 -1
- data/lib/ogr/geometries/line_string_25d.rb +1 -1
- data/lib/ogr/geometries/linear_ring.rb +2 -2
- data/lib/ogr/geometries/multi_line_string.rb +2 -2
- data/lib/ogr/geometries/multi_line_string_25d.rb +1 -1
- data/lib/ogr/geometries/multi_point.rb +1 -1
- data/lib/ogr/geometries/multi_point_25d.rb +1 -1
- data/lib/ogr/geometries/multi_polygon.rb +2 -2
- data/lib/ogr/geometries/multi_polygon_25d.rb +1 -1
- data/lib/ogr/geometries/point_25d.rb +1 -1
- data/lib/ogr/geometries/polygon.rb +2 -2
- data/lib/ogr/geometries/polygon_25d.rb +1 -1
- data/lib/ogr/geometry.rb +11 -11
- data/lib/ogr/geometry_types/container.rb +1 -1
- data/lib/ogr/geometry_types/curve.rb +1 -1
- data/lib/ogr/internal_helpers.rb +4 -4
- data/lib/ogr/layer.rb +8 -8
- data/lib/ogr/layer_mixins/ogr_feature_methods.rb +9 -9
- data/lib/ogr/layer_mixins/ogr_field_methods.rb +15 -15
- data/lib/ogr/layer_mixins/ogr_sql_methods.rb +2 -2
- data/lib/ogr/spatial_reference.rb +19 -19
- data/lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb +4 -4
- data/lib/ogr/spatial_reference_mixins/exporters.rb +9 -9
- data/lib/ogr/spatial_reference_mixins/importers.rb +2 -2
- data/lib/ogr/spatial_reference_mixins/morphers.rb +2 -2
- data/lib/ogr/spatial_reference_mixins/parameter_getter_setters.rb +1 -1
- data/lib/ogr/style_table.rb +3 -3
- data/lib/ogr/style_tool.rb +1 -1
- data/lib/ogr.rb +33 -33
- data/rakelib/docker.rake +2 -2
- metadata +11 -145
data/lib/gdal/extensions/all.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
3
|
+
require "narray"
|
4
|
+
require "ffi-gdal"
|
5
|
+
require "gdal/dataset"
|
6
|
+
require "gdal/raster_band"
|
7
|
+
require "gdal/warp_operation"
|
8
|
+
require "ogr/driver"
|
9
|
+
require "ogr/layer"
|
10
|
+
require "ogr/spatial_reference"
|
11
|
+
require "ogr/coordinate_transformation"
|
12
12
|
|
13
13
|
module GDAL
|
14
14
|
class Dataset
|
@@ -97,8 +97,8 @@ module GDAL
|
|
97
97
|
# of Integers.
|
98
98
|
# @return [OGR::DataSource]
|
99
99
|
def to_vector(file_name, vector_driver_name, geometry_type: :wkbUnknown,
|
100
|
-
layer_name_prefix:
|
101
|
-
field_name_prefix:
|
100
|
+
layer_name_prefix: "band_number", band_numbers: [1],
|
101
|
+
field_name_prefix: "field", use_band_masks: true)
|
102
102
|
band_numbers = [band_numbers] unless band_numbers.is_a?(Array)
|
103
103
|
ogr_driver = OGR::Driver.by_name(vector_driver_name)
|
104
104
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gdal/driver"
|
4
4
|
|
5
5
|
module GDAL
|
6
6
|
class Driver
|
@@ -60,32 +60,32 @@ module GDAL
|
|
60
60
|
|
61
61
|
# @return [Boolean]
|
62
62
|
def can_open_datasets?
|
63
|
-
metadata_item(
|
63
|
+
metadata_item("DCAP_OPEN") == "YES"
|
64
64
|
end
|
65
65
|
|
66
66
|
# @return [Boolean]
|
67
67
|
def can_create_datasets?
|
68
|
-
metadata_item(
|
68
|
+
metadata_item("DCAP_CREATE") == "YES"
|
69
69
|
end
|
70
70
|
|
71
71
|
# @return [Boolean]
|
72
72
|
def can_copy_datasets?
|
73
|
-
metadata_item(
|
73
|
+
metadata_item("DCAP_CREATECOPY") == "YES"
|
74
74
|
end
|
75
75
|
|
76
76
|
# @return [Boolean]
|
77
77
|
def can_do_virtual_io?
|
78
|
-
metadata_item(
|
78
|
+
metadata_item("DCAP_VIRTUALIO") == "YES"
|
79
79
|
end
|
80
80
|
|
81
81
|
# @return [Boolean]
|
82
82
|
def can_do_rasters?
|
83
|
-
metadata_item(
|
83
|
+
metadata_item("DCAP_RASTER") == "YES"
|
84
84
|
end
|
85
85
|
|
86
86
|
# @return [Boolean]
|
87
87
|
def can_do_vectors?
|
88
|
-
metadata_item(
|
88
|
+
metadata_item("DCAP_VECTOR") == "YES"
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require_relative
|
8
|
-
require_relative
|
3
|
+
require "narray"
|
4
|
+
require "gdal"
|
5
|
+
require "gdal/options"
|
6
|
+
require "ogr"
|
7
|
+
require_relative "gridder_options"
|
8
|
+
require_relative "gridder/point_extracting"
|
9
9
|
|
10
10
|
module GDAL
|
11
11
|
# Somewhat analogous to the gdal_grid utility.
|
@@ -95,7 +95,7 @@ module GDAL
|
|
95
95
|
spatial_ref = @options.output_projection || @source_layer.spatial_reference
|
96
96
|
|
97
97
|
unless spatial_ref
|
98
|
-
log
|
98
|
+
log "No spatial reference specified"
|
99
99
|
return
|
100
100
|
end
|
101
101
|
|
@@ -204,7 +204,7 @@ module GDAL
|
|
204
204
|
@options.grid.create(points, extents, data_ptr, output_size,
|
205
205
|
progress_arg, scaled_progress_ptr)
|
206
206
|
|
207
|
-
raster_band.raster_io(
|
207
|
+
raster_band.raster_io("w", data_ptr, x_offset: x_offset, y_offset: y_offset,
|
208
208
|
x_size: x_request, y_size: y_request,
|
209
209
|
buffer_x_size: x_request, buffer_y_size: y_request)
|
210
210
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
3
|
+
require "gdal/grid"
|
4
|
+
require "gdal/options"
|
5
|
+
require "ogr/exceptions"
|
6
|
+
require "ogr/geometry"
|
7
|
+
require "ogr/spatial_reference"
|
8
8
|
|
9
9
|
module GDAL
|
10
10
|
# Object to be used with a {GDAL::Gridder}.
|
@@ -123,7 +123,7 @@ module GDAL
|
|
123
123
|
def initialize(algorithm_type)
|
124
124
|
# Options with defaults
|
125
125
|
@output_data_type = :GDT_Float64
|
126
|
-
@output_format =
|
126
|
+
@output_format = "GTiff"
|
127
127
|
@output_size = { width: 256, height: 256 }
|
128
128
|
|
129
129
|
# Options without defaults
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gdal/raster_band"
|
4
4
|
|
5
5
|
module GDAL
|
6
6
|
class RasterBand
|
@@ -66,11 +66,11 @@ module GDAL
|
|
66
66
|
|
67
67
|
unless erase_value
|
68
68
|
raise GDAL::NoRasterEraseValue,
|
69
|
-
|
69
|
+
"Cannot erase values, RasterBand does not have a NODATA value set"
|
70
70
|
end
|
71
71
|
|
72
72
|
y_size.times do |line_num|
|
73
|
-
pixel_row = raster_io(
|
73
|
+
pixel_row = raster_io("r", x_size: x_size, y_size: 1, x_offset: 0, y_offset: line_num)
|
74
74
|
pixel_values = GDAL._read_pointer(pixel_row, data_type, x_size)
|
75
75
|
row_changed = false
|
76
76
|
pixel_num = 0
|
@@ -101,7 +101,7 @@ module GDAL
|
|
101
101
|
# @param line_number [Integer]
|
102
102
|
def rewrite_pixel_row(write_buffer, pixel_values, line_number)
|
103
103
|
GDAL._write_pointer(write_buffer, data_type, pixel_values)
|
104
|
-
raster_io(
|
104
|
+
raster_io("w", write_buffer, x_size: x_size, y_size: 1, y_offset: line_number)
|
105
105
|
write_buffer.clear
|
106
106
|
end
|
107
107
|
end
|
@@ -76,7 +76,7 @@ module GDAL
|
|
76
76
|
|
77
77
|
# @param hex [String]
|
78
78
|
def hex_to_rgb(hex)
|
79
|
-
hex = hex.sub(/^#/,
|
79
|
+
hex = hex.sub(/^#/, "")
|
80
80
|
matches = hex.match(/(?<red>[a-zA-Z0-9]{2})(?<green>[a-zA-Z0-9]{2})(?<blue>[a-zA-Z0-9]{2})/)
|
81
81
|
|
82
82
|
[matches[:red].to_i(16), matches[:green].to_i(16), matches[:blue].to_i(16)]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gdal/raster_band"
|
4
4
|
|
5
5
|
module GDAL
|
6
6
|
class RasterBand
|
@@ -14,7 +14,7 @@ module GDAL
|
|
14
14
|
return enum_for(:readlines) unless block_given?
|
15
15
|
|
16
16
|
y_size.times do |row_number|
|
17
|
-
scan_line = raster_io(
|
17
|
+
scan_line = raster_io("r", x_size: x_size, y_size: 1, y_offset: row_number)
|
18
18
|
line_array = GDAL._read_pointer(scan_line, data_type, x_size)
|
19
19
|
|
20
20
|
yield line_array
|
@@ -57,7 +57,7 @@ module GDAL
|
|
57
57
|
data_pointer = GDAL._pointer_from_data_type(data_type)
|
58
58
|
GDAL._write_pointer(data_pointer, data_type, new_value)
|
59
59
|
|
60
|
-
raster_io(
|
60
|
+
raster_io("w", data_pointer, x_size: 1, y_size: 1, x_offset: x, y_offset: y, buffer_x_size: 1, buffer_y_size: 1)
|
61
61
|
end
|
62
62
|
|
63
63
|
# Convenience method for directly getting a single pixel value.
|
@@ -66,7 +66,7 @@ module GDAL
|
|
66
66
|
# @param y [Integer] Row number of the pixel to get.
|
67
67
|
# @return [Number]
|
68
68
|
def pixel_value(x, y)
|
69
|
-
output = raster_io(
|
69
|
+
output = raster_io("r", x_size: 1, y_size: 1, x_offset: x, y_offset: y, buffer_x_size: 1, buffer_y_size: 1)
|
70
70
|
|
71
71
|
GDAL._read_pointer(output, data_type)
|
72
72
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "gdal"
|
4
|
+
require "numo/narray"
|
5
5
|
|
6
6
|
module GDAL
|
7
7
|
# Takes a list of Ranges of color values and remaps them. Note that these
|
@@ -35,7 +35,7 @@ module GDAL
|
|
35
35
|
# @param range [Range] The range of values to map to a new value.
|
36
36
|
# @param map_to_value [Number]
|
37
37
|
def add_range(range, map_to_value)
|
38
|
-
raise
|
38
|
+
raise "range must be a Ruby Range" unless range.is_a? Range
|
39
39
|
|
40
40
|
@ranges << { range: range, map_to: map_to_value }
|
41
41
|
end
|
data/lib/gdal/geo_transform.rb
CHANGED
data/lib/gdal/grid.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require_relative
|
6
|
-
require_relative
|
3
|
+
require "forwardable"
|
4
|
+
require "narray"
|
5
|
+
require_relative "../gdal"
|
6
|
+
require_relative "grid_algorithms"
|
7
7
|
|
8
8
|
module GDAL
|
9
9
|
# Wrapper for GDAL's [Grid API](http://www.gdal.org/grid_tutorial.html).
|
@@ -38,7 +38,7 @@ module GDAL
|
|
38
38
|
points = points.to_a if points.is_a? NArray
|
39
39
|
point_count = points.length
|
40
40
|
log "Number of points: #{point_count}"
|
41
|
-
raise GDAL::NoValuesToGrid,
|
41
|
+
raise GDAL::NoValuesToGrid, "No points to grid" if point_count.zero?
|
42
42
|
|
43
43
|
points = points.transpose
|
44
44
|
x_input_coordinates_ptr = make_points_pointer(points[0])
|
@@ -73,7 +73,7 @@ module GDAL
|
|
73
73
|
|
74
74
|
# @param points [Array]
|
75
75
|
def make_points_pointer(points)
|
76
|
-
raise GDAL::Error,
|
76
|
+
raise GDAL::Error, "No points to make pointer for" if points.compact.empty?
|
77
77
|
|
78
78
|
input_coordinates_ptr = FFI::MemoryPointer.new(:double, points.length)
|
79
79
|
input_coordinates_ptr.write_array_of_double(points)
|
data/lib/gdal/grid_algorithms.rb
CHANGED
@@ -3,22 +3,22 @@
|
|
3
3
|
module GDAL
|
4
4
|
module GridAlgorithms
|
5
5
|
autoload :InverseDistanceToAPower,
|
6
|
-
File.expand_path(
|
6
|
+
File.expand_path("grid_algorithms/inverse_distance_to_a_power", __dir__)
|
7
7
|
autoload :MetricAverageDistance,
|
8
|
-
File.expand_path(
|
8
|
+
File.expand_path("grid_algorithms/metric_average_distance", __dir__)
|
9
9
|
autoload :MetricAverageDistancePts,
|
10
|
-
File.expand_path(
|
10
|
+
File.expand_path("grid_algorithms/metric_average_distance_pts", __dir__)
|
11
11
|
autoload :MetricCount,
|
12
|
-
File.expand_path(
|
12
|
+
File.expand_path("grid_algorithms/metric_count", __dir__)
|
13
13
|
autoload :MetricMaximum,
|
14
|
-
File.expand_path(
|
14
|
+
File.expand_path("grid_algorithms/metric_maximum", __dir__)
|
15
15
|
autoload :MetricMinimum,
|
16
|
-
File.expand_path(
|
16
|
+
File.expand_path("grid_algorithms/metric_minimum", __dir__)
|
17
17
|
autoload :MetricRange,
|
18
|
-
File.expand_path(
|
18
|
+
File.expand_path("grid_algorithms/metric_range", __dir__)
|
19
19
|
autoload :MovingAverage,
|
20
|
-
File.expand_path(
|
20
|
+
File.expand_path("grid_algorithms/moving_average", __dir__)
|
21
21
|
autoload :NearestNeighbor,
|
22
|
-
File.expand_path(
|
22
|
+
File.expand_path("grid_algorithms/nearest_neighbor", __dir__)
|
23
23
|
end
|
24
24
|
end
|
@@ -124,7 +124,7 @@ module GDAL
|
|
124
124
|
yield result_ptr_ptr
|
125
125
|
|
126
126
|
result = if result_ptr_ptr.null?
|
127
|
-
|
127
|
+
""
|
128
128
|
else
|
129
129
|
GDAL._read_pointer_pointer_safely(result_ptr_ptr, :string)
|
130
130
|
end
|
@@ -241,8 +241,8 @@ module GDAL
|
|
241
241
|
# @raise [GDAL::InvalidAccessFlag] If +char+ is not 'r' or 'w'.
|
242
242
|
def _gdal_access_flag(char)
|
243
243
|
case char
|
244
|
-
when
|
245
|
-
when
|
244
|
+
when "r" then :GF_Read
|
245
|
+
when "w" then :GF_Write
|
246
246
|
else raise GDAL::InvalidAccessFlag, "Invalid access flag: #{char}"
|
247
247
|
end
|
248
248
|
end
|
data/lib/gdal/logger.rb
CHANGED
data/lib/gdal/major_object.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require
|
3
|
+
require_relative "../gdal"
|
4
|
+
require "multi_xml"
|
5
5
|
|
6
6
|
module GDAL
|
7
7
|
module MajorObject
|
@@ -31,7 +31,7 @@ module GDAL
|
|
31
31
|
data_array = m.get_array_of_string(0)
|
32
32
|
|
33
33
|
data_array.each_with_object({}) do |key_value_pair, obj|
|
34
|
-
key, value = key_value_pair.split(
|
34
|
+
key, value = key_value_pair.split("=", 2)
|
35
35
|
|
36
36
|
begin
|
37
37
|
obj[key] = MultiXml.parse(value)
|
@@ -44,15 +44,15 @@ module GDAL
|
|
44
44
|
# @param name [String]
|
45
45
|
# @param domain [String]
|
46
46
|
# @return [String]
|
47
|
-
def metadata_item(name, domain =
|
47
|
+
def metadata_item(name, domain = "")
|
48
48
|
item, ptr = FFI::GDAL::GDAL.GDALGetMetadataItem(@c_pointer, name, domain)
|
49
49
|
ptr.autorelease = false
|
50
50
|
|
51
51
|
item
|
52
52
|
end
|
53
53
|
|
54
|
-
def set_metadata_item(name, value, domain =
|
55
|
-
GDAL::CPLErrorHandler.manually_handle(
|
54
|
+
def set_metadata_item(name, value, domain = "")
|
55
|
+
GDAL::CPLErrorHandler.manually_handle("Unable to set metadata item") do
|
56
56
|
FFI::GDAL::GDAL.GDALSetMetadataItem(@c_pointer, name, value.to_s, domain)
|
57
57
|
end
|
58
58
|
end
|
data/lib/gdal/options.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "ffi"
|
4
4
|
|
5
5
|
module GDAL
|
6
6
|
# A wrapper for the way GDAL does key/value pair options for methods.
|
@@ -39,7 +39,7 @@ module GDAL
|
|
39
39
|
key_and_value, ptr = FFI::CPL::String.CSLGetField(pointer, i)
|
40
40
|
ptr.autorelease = false
|
41
41
|
|
42
|
-
key, value = key_and_value.split(
|
42
|
+
key, value = key_and_value.split("=")
|
43
43
|
o[key.downcase.to_sym] = value
|
44
44
|
end
|
45
45
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "../gdal"
|
4
4
|
|
5
5
|
module GDAL
|
6
6
|
class RasterAttributeTable
|
@@ -13,7 +13,7 @@ module GDAL
|
|
13
13
|
color_table_ptr = GDAL._pointer(GDAL::ColorTable, color_table, autorelease: false)
|
14
14
|
rat_ptr = FFI::GDAL::GDAL.GDALCreateRasterAttributeTable
|
15
15
|
|
16
|
-
GDAL::CPLErrorHandler.manually_handle(
|
16
|
+
GDAL::CPLErrorHandler.manually_handle("Unable to initialize from ColorTable") do
|
17
17
|
FFI::GDAL::GDAL.GDALRATInitializeFromColorTable(rat_ptr, color_table_ptr)
|
18
18
|
end
|
19
19
|
|
@@ -110,7 +110,7 @@ module GDAL
|
|
110
110
|
# @param usage [FFI::GDAL::GDALRATFieldUsage]
|
111
111
|
# @raise [GDAL::Error]
|
112
112
|
def create_column(name, type, usage)
|
113
|
-
GDAL::CPLErrorHandler.manually_handle(
|
113
|
+
GDAL::CPLErrorHandler.manually_handle("Unable to create column") do
|
114
114
|
FFI::GDAL::GDAL.GDALRATCreateColumn(@c_pointer, name, type, usage)
|
115
115
|
end
|
116
116
|
end
|
@@ -202,7 +202,7 @@ module GDAL
|
|
202
202
|
# @param bin_size [Float]
|
203
203
|
# @raise [GDAL::Error]
|
204
204
|
def set_linear_binning(row_0_minimum, bin_size)
|
205
|
-
GDAL::CPLErrorHandler.manually_handle(
|
205
|
+
GDAL::CPLErrorHandler.manually_handle("Unable to set linear binning") do
|
206
206
|
FFI::GDAL::GDAL.GDALRATSetLinearBinning(@c_pointer, row_0_minimum, bin_size)
|
207
207
|
end
|
208
208
|
end
|
@@ -219,7 +219,7 @@ module GDAL
|
|
219
219
|
|
220
220
|
# @param file_path [String] Without giving a +file_path+, dumps to STDOUT.
|
221
221
|
def dump_readable(file_path = nil)
|
222
|
-
file_ptr = file_path ? FFI::CPL::Conv.CPLOpenShared(file_path,
|
222
|
+
file_ptr = file_path ? FFI::CPL::Conv.CPLOpenShared(file_path, "w", false) : nil
|
223
223
|
FFI::GDAL::GDAL.GDALRATDumpReadable(@c_pointer, file_ptr)
|
224
224
|
FFI::CPL::Conv.CPLCloseShared(file_ptr) if file_ptr
|
225
225
|
end
|