ffi-gdal 1.0.1 → 1.0.3
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 +4 -4
- data/.github/dependabot.yml +15 -0
- data/.github/workflows/codacy.yml +1 -1
- data/.github/workflows/dependency-review.yml +1 -1
- data/.github/workflows/specs-in-docker.yml +3 -1
- 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 +20 -4
- data/Dockerfile.gdal2 +2 -85
- data/Gemfile +12 -2
- data/LICENSE.txt +1 -1
- data/README.md +14 -16
- 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 +16 -27
- 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 +14 -150
- data/bitbucket-pipelines.yml +0 -16
- data/tilt/gdal2.yml +0 -22
- data/tilt/gdal3.yml +0 -22
data/lib/gdal/version_info.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "date"
|
4
4
|
|
5
5
|
module GDAL
|
6
6
|
module VersionInfo
|
@@ -8,42 +8,42 @@ module GDAL
|
|
8
8
|
#
|
9
9
|
# @return [String]
|
10
10
|
def version_num
|
11
|
-
FFI::GDAL.GDALVersionInfo(
|
11
|
+
FFI::GDAL.GDALVersionInfo("VERSION_NUM")
|
12
12
|
end
|
13
13
|
|
14
14
|
# @return [Date]
|
15
15
|
def release_date
|
16
|
-
Date.parse(FFI::GDAL.GDALVersionInfo(
|
16
|
+
Date.parse(FFI::GDAL.GDALVersionInfo("RELEASE_DATE"))
|
17
17
|
end
|
18
18
|
|
19
19
|
# Version in the form "1.1.7".
|
20
20
|
#
|
21
21
|
# @return [String]
|
22
22
|
def release_name
|
23
|
-
FFI::GDAL.GDALVersionInfo(
|
23
|
+
FFI::GDAL.GDALVersionInfo("RELEASE_NAME")
|
24
24
|
end
|
25
25
|
|
26
26
|
# The long licensing info.
|
27
27
|
#
|
28
28
|
# @return [String]
|
29
29
|
def license
|
30
|
-
FFI::GDAL.GDALVersionInfo(
|
30
|
+
FFI::GDAL.GDALVersionInfo("LICENSE")
|
31
31
|
end
|
32
32
|
|
33
33
|
# Options used when building GDAL.
|
34
34
|
#
|
35
35
|
# @return [Hash{String => String}]
|
36
36
|
def build_info
|
37
|
-
key_value_pairs = FFI::GDAL.GDALVersionInfo(
|
37
|
+
key_value_pairs = FFI::GDAL.GDALVersionInfo("BUILD_INFO")
|
38
38
|
key_value_pairs.split.each_with_object({}) do |kv, obj|
|
39
|
-
key, value = kv.split(
|
39
|
+
key, value = kv.split("=", 2)
|
40
40
|
obj[key] = value
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
# @return [String]
|
45
45
|
def long_version
|
46
|
-
FFI::GDAL.GDALVersionInfo(
|
46
|
+
FFI::GDAL.GDALVersionInfo("--version")
|
47
47
|
end
|
48
48
|
|
49
49
|
# @param major [Integer]
|
@@ -51,7 +51,7 @@ module GDAL
|
|
51
51
|
# @return [Boolean] +true+ if the runtime GDAL library matches the given
|
52
52
|
# version params.
|
53
53
|
def check_version(major, minor)
|
54
|
-
FFI::GDAL.GDALCheckVersion(major, minor,
|
54
|
+
FFI::GDAL.GDALCheckVersion(major, minor, "FFI::GDAL")
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
data/lib/gdal/virtual_dataset.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
3
|
+
require_relative "../gdal"
|
4
|
+
require_relative "major_object"
|
5
5
|
|
6
6
|
module GDAL
|
7
7
|
class VirtualDataset
|
@@ -19,7 +19,7 @@ module GDAL
|
|
19
19
|
end
|
20
20
|
|
21
21
|
# TODO: Build the xml string
|
22
|
-
def to_xml(path =
|
22
|
+
def to_xml(path = "")
|
23
23
|
xml_node = FFI::GDAL::VRT.VRTSerializeToXML(@c_pointer, path)
|
24
24
|
|
25
25
|
FFI::CPL::MiniXML.CPLSerializeXMLTree(xml_node)
|
@@ -46,7 +46,7 @@ module GDAL
|
|
46
46
|
def add_simple_source(vrt_band, source_band, no_data_value,
|
47
47
|
src_x_offset: 0, src_y_offset: 0, src_x_size: nil, src_y_size: nil,
|
48
48
|
dst_x_offset: 0, dst_y_offset: 0, dst_x_size: nil, dst_y_size: nil,
|
49
|
-
resampling:
|
49
|
+
resampling: "")
|
50
50
|
FFI::GDAL::VRT.VRTAddSimpleSource(
|
51
51
|
vrt_band,
|
52
52
|
source_band, # hSrcBand
|
data/lib/gdal/warp_operation.rb
CHANGED
@@ -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 WarpOperation
|
@@ -18,7 +18,7 @@ module GDAL
|
|
18
18
|
def initialize(warp_options)
|
19
19
|
pointer = FFI::GDAL::Warper.GDALCreateWarpOperation(warp_options.c_struct)
|
20
20
|
|
21
|
-
raise GDAL::Error,
|
21
|
+
raise GDAL::Error, "Unable to create warp operation" if pointer.null?
|
22
22
|
|
23
23
|
@c_pointer = FFI::AutoPointer.new(pointer, WarpOperation.method(:release))
|
24
24
|
end
|
data/lib/gdal/warp_options.rb
CHANGED
@@ -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 WarpOptions
|
@@ -97,7 +97,7 @@ module GDAL
|
|
97
97
|
|
98
98
|
# @param geometry [OGR::Geometry]
|
99
99
|
def cutline=(geometry)
|
100
|
-
raise
|
100
|
+
raise "Not a geom" unless geometry.is_a?(OGR::Geometry)
|
101
101
|
|
102
102
|
@cutline = geometry
|
103
103
|
|
data/lib/gdal.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
3
|
+
require_relative "ffi-gdal"
|
4
|
+
require_relative "ffi/gdal"
|
5
5
|
|
6
6
|
module GDAL
|
7
7
|
class << self
|
@@ -27,23 +27,23 @@ module GDAL
|
|
27
27
|
end
|
28
28
|
|
29
29
|
# Autoload just the core GDAL object types.
|
30
|
-
autoload :ColorTable, gdal_require(
|
31
|
-
autoload :Dataset, gdal_require(
|
32
|
-
autoload :DataType, gdal_require(
|
33
|
-
autoload :Driver, gdal_require(
|
34
|
-
autoload :GeoTransform, gdal_require(
|
35
|
-
autoload :Logger, gdal_require(
|
36
|
-
autoload :MajorObject, gdal_require(
|
37
|
-
autoload :Options, gdal_require(
|
38
|
-
autoload :RasterAttributeTable, gdal_require(
|
39
|
-
autoload :RasterBand, gdal_require(
|
30
|
+
autoload :ColorTable, gdal_require("gdal/color_table")
|
31
|
+
autoload :Dataset, gdal_require("gdal/dataset")
|
32
|
+
autoload :DataType, gdal_require("gdal/data_type")
|
33
|
+
autoload :Driver, gdal_require("gdal/driver")
|
34
|
+
autoload :GeoTransform, gdal_require("gdal/geo_transform")
|
35
|
+
autoload :Logger, gdal_require("gdal/logger")
|
36
|
+
autoload :MajorObject, gdal_require("gdal/major_object")
|
37
|
+
autoload :Options, gdal_require("gdal/options")
|
38
|
+
autoload :RasterAttributeTable, gdal_require("gdal/raster_attribute_table")
|
39
|
+
autoload :RasterBand, gdal_require("gdal/raster_band")
|
40
40
|
end
|
41
41
|
|
42
|
-
require_relative
|
43
|
-
require_relative
|
44
|
-
require_relative
|
45
|
-
require_relative
|
46
|
-
require_relative
|
42
|
+
require_relative "gdal/exceptions"
|
43
|
+
require_relative "gdal/version_info"
|
44
|
+
require_relative "gdal/environment_methods"
|
45
|
+
require_relative "gdal/internal_helpers"
|
46
|
+
require_relative "gdal/cpl_error_handler"
|
47
47
|
|
48
48
|
module GDAL
|
49
49
|
extend VersionInfo
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require_relative
|
5
|
-
require_relative
|
3
|
+
require "narray"
|
4
|
+
require_relative "../ogr"
|
5
|
+
require_relative "../gdal"
|
6
6
|
|
7
7
|
module OGR
|
8
8
|
class CoordinateTransformation
|
@@ -13,7 +13,7 @@ module OGR
|
|
13
13
|
FFI::GDAL::GDAL.OCTProj4Normalize(proj4_source)
|
14
14
|
else
|
15
15
|
raise OGR::UnsupportedOperation,
|
16
|
-
|
16
|
+
"Your version of GDAL/OGR does not support OCTProj4Normalize"
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -46,7 +46,7 @@ module OGR
|
|
46
46
|
# by the null-pointer check below.
|
47
47
|
pointer = FFI::OGR::SRSAPI.OCTNewCoordinateTransformation(source_ptr, destination_ptr)
|
48
48
|
|
49
|
-
raise GDAL::Error,
|
49
|
+
raise GDAL::Error, "Unable to create coordinate transformation" if pointer.null?
|
50
50
|
|
51
51
|
@c_pointer = pointer
|
52
52
|
end
|
data/lib/ogr/data_source.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
3
|
+
require_relative "../gdal"
|
4
|
+
require_relative "../ogr"
|
5
|
+
require_relative "../gdal/major_object"
|
6
6
|
|
7
7
|
module OGR
|
8
8
|
class DataSource
|
@@ -14,7 +14,7 @@ module OGR
|
|
14
14
|
# @param path [String]
|
15
15
|
# @param access_flag [String] 'r' for read, 'w', for write.
|
16
16
|
# @return [OGR::DataSource]
|
17
|
-
def self.open(path, access_flag =
|
17
|
+
def self.open(path, access_flag = "r")
|
18
18
|
ds = new(path, access_flag)
|
19
19
|
|
20
20
|
if block_given?
|
@@ -138,9 +138,9 @@ module OGR
|
|
138
138
|
# @param options [Hash] Driver-specific options.
|
139
139
|
# @return [OGR::Layer]
|
140
140
|
def create_layer(name, geometry_type: :wkbUnknown, spatial_reference: nil, **options)
|
141
|
-
unless test_capability(
|
141
|
+
unless test_capability("CreateLayer")
|
142
142
|
raise OGR::UnsupportedOperation,
|
143
|
-
|
143
|
+
"This data source does not support creating layers."
|
144
144
|
end
|
145
145
|
|
146
146
|
spatial_ref_ptr = GDAL._pointer(OGR::SpatialReference, spatial_reference, autorelease: false) if spatial_reference
|
@@ -174,9 +174,9 @@ module OGR
|
|
174
174
|
# @param index [Integer]
|
175
175
|
# @raise [OGR::Failure]
|
176
176
|
def delete_layer(index)
|
177
|
-
unless test_capability(
|
177
|
+
unless test_capability("DeleteLayer")
|
178
178
|
raise OGR::UnsupportedOperation,
|
179
|
-
|
179
|
+
"This data source does not support deleting layers."
|
180
180
|
end
|
181
181
|
|
182
182
|
OGR::ErrorHandling.handle_ogr_err("Unable to delete layer at index #{index}") do
|
@@ -236,7 +236,7 @@ module OGR
|
|
236
236
|
|
237
237
|
# @raise [OGR::Failure]
|
238
238
|
def sync_to_disk
|
239
|
-
OGR::ErrorHandling.handle_ogr_err(
|
239
|
+
OGR::ErrorHandling.handle_ogr_err("Unable to syn datasource to disk") do
|
240
240
|
FFI::OGR::API.OGR_DS_SyncToDisk(@c_pointer)
|
241
241
|
end
|
242
242
|
end
|
data/lib/ogr/driver.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
3
|
+
require_relative "../ogr"
|
4
|
+
require_relative "../gdal"
|
5
|
+
require_relative "../gdal/major_object"
|
6
6
|
|
7
7
|
module OGR
|
8
8
|
# Wrapper for OGR's Driver class. In this case, to use a driver, find the
|
@@ -69,7 +69,7 @@ module OGR
|
|
69
69
|
# @param file_name [String]
|
70
70
|
# @param access_flag [String] 'r' or 'w'.
|
71
71
|
# @return [OGR::DataSource, nil]
|
72
|
-
def open(file_name, access_flag =
|
72
|
+
def open(file_name, access_flag = "r")
|
73
73
|
update = OGR._boolean_access_flag(access_flag)
|
74
74
|
|
75
75
|
data_source_ptr = FFI::OGR::API.OGR_Dr_Open(@c_pointer, file_name, update)
|
@@ -87,8 +87,8 @@ module OGR
|
|
87
87
|
# @param options [Hash]
|
88
88
|
# @return [OGR::DataSource, nil]
|
89
89
|
def create_data_source(file_name, **options)
|
90
|
-
unless test_capability(
|
91
|
-
raise OGR::UnsupportedOperation,
|
90
|
+
unless test_capability("CreateDataSource")
|
91
|
+
raise OGR::UnsupportedOperation, "This driver does not support data source creation."
|
92
92
|
end
|
93
93
|
|
94
94
|
options_ptr = GDAL::Options.pointer(options)
|
@@ -97,7 +97,7 @@ module OGR
|
|
97
97
|
file_name, options_ptr)
|
98
98
|
raise OGR::CreateFailure, "Unable to create DataSource '#{file_name}'" if data_source_ptr.null?
|
99
99
|
|
100
|
-
ds = OGR::DataSource.new(data_source_ptr,
|
100
|
+
ds = OGR::DataSource.new(data_source_ptr, "w")
|
101
101
|
yield ds if block_given?
|
102
102
|
|
103
103
|
ds
|
@@ -106,8 +106,8 @@ module OGR
|
|
106
106
|
# @param file_name [String]
|
107
107
|
# @raise [OGR::Failure]
|
108
108
|
def delete_data_source(file_name)
|
109
|
-
unless test_capability(
|
110
|
-
raise OGR::UnsupportedOperation,
|
109
|
+
unless test_capability("DeleteDataSource")
|
110
|
+
raise OGR::UnsupportedOperation, "This driver does not support deleting data sources."
|
111
111
|
end
|
112
112
|
|
113
113
|
OGR::ErrorHandling.handle_ogr_err("Unable to delete data source '#{file_name}'") do
|
data/lib/ogr/envelope.rb
CHANGED
data/lib/ogr/error_handling.rb
CHANGED
data/lib/ogr/extensions/all.rb
CHANGED
@@ -6,23 +6,23 @@ module OGR
|
|
6
6
|
module CapabilityMethods
|
7
7
|
# @return [Boolean] +true+ if the DataSource can create existing Layers.
|
8
8
|
def can_create_layer?
|
9
|
-
test_capability(
|
9
|
+
test_capability("CreateLayer")
|
10
10
|
end
|
11
11
|
|
12
12
|
# @return [Boolean] +true+ if the DataSource can delete existing Layers.
|
13
13
|
def can_delete_layer?
|
14
|
-
test_capability(
|
14
|
+
test_capability("DeleteLayer")
|
15
15
|
end
|
16
16
|
|
17
17
|
# @return [Boolean] +true+ if the DataSource supports creating a
|
18
18
|
# GeometryField after a Layer has been created.
|
19
19
|
def can_create_geometry_field_after_create_layer?
|
20
|
-
test_capability(
|
20
|
+
test_capability("CreateGeomFieldAfterCreateLayer")
|
21
21
|
end
|
22
22
|
|
23
23
|
# @return [Boolean] +true+ if the DataSource supports curve geometries.
|
24
24
|
def supports_curve_geometries?
|
25
|
-
test_capability(
|
25
|
+
test_capability("CurveGeometries")
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "ogr/driver"
|
4
4
|
|
5
5
|
module OGR
|
6
6
|
module DriverMixins
|
@@ -8,12 +8,12 @@ module OGR
|
|
8
8
|
module CapabilityMethods
|
9
9
|
# @return [Boolean] +true+ if this driver supports creating data sources.
|
10
10
|
def can_create_data_source?
|
11
|
-
test_capability(
|
11
|
+
test_capability("CreateDataSource")
|
12
12
|
end
|
13
13
|
|
14
14
|
# @return [Boolean] +true+ if this driver supports deleting data sources.
|
15
15
|
def can_delete_data_source?
|
16
|
-
test_capability(
|
16
|
+
test_capability("DeleteDataSource")
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -1,15 +1,15 @@
|
|
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
|
12
|
-
require
|
3
|
+
require "ogr/geometries/geometry_collection"
|
4
|
+
require "ogr/geometries/geometry_collection_25d"
|
5
|
+
require "ogr/geometries/multi_line_string"
|
6
|
+
require "ogr/geometries/multi_line_string_25d"
|
7
|
+
require "ogr/geometries/multi_point"
|
8
|
+
require "ogr/geometries/multi_point_25d"
|
9
|
+
require "ogr/geometries/multi_polygon"
|
10
|
+
require "ogr/geometries/multi_polygon_25d"
|
11
|
+
require "ogr/geometries/polygon"
|
12
|
+
require "ogr/geometries/polygon_25d"
|
13
13
|
|
14
14
|
module OGR
|
15
15
|
module GeometryMixins
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require_relative
|
5
|
-
require_relative
|
3
|
+
require "ogr/spatial_reference"
|
4
|
+
require_relative "ewkb_record"
|
5
|
+
require_relative "wkb_record"
|
6
6
|
|
7
7
|
module OGR
|
8
8
|
module Geometry
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require_relative
|
3
|
+
require "bindata"
|
4
|
+
require "ffi-gdal"
|
5
|
+
require "ogr"
|
6
|
+
require_relative "wkb_record"
|
7
7
|
|
8
8
|
# rubocop:disable Naming/PredicateName
|
9
9
|
module OGR
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "ogr/geometry"
|
4
4
|
|
5
5
|
module OGR
|
6
6
|
module GeometryMixins
|
@@ -10,15 +10,12 @@ module OGR
|
|
10
10
|
return unless spatial_reference
|
11
11
|
|
12
12
|
self_as4326 =
|
13
|
-
if spatial_reference.authority_code ==
|
13
|
+
if spatial_reference.authority_code == "4326"
|
14
14
|
self
|
15
15
|
else
|
16
16
|
# NOTE: #clone here has overridden Ruby's clone and calls OGR_G_Clone;
|
17
17
|
# it's important to do this and
|
18
|
-
as4326
|
19
|
-
return unless as4326.transform_to!(OGR::SpatialReference.new.import_from_epsg(4326))
|
20
|
-
|
21
|
-
as4326
|
18
|
+
clone.tap { |as4326| as4326.transform_to!(OGR::SpatialReference.new.import_from_epsg(4326)) }
|
22
19
|
end
|
23
20
|
|
24
21
|
self_as4326 = self_as4326.buffer(0) unless valid?
|
@@ -64,7 +61,7 @@ module OGR
|
|
64
61
|
false
|
65
62
|
end
|
66
63
|
|
67
|
-
def to_vector(file_name, driver, layer_name:
|
64
|
+
def to_vector(file_name, driver, layer_name: "vectorized_geometry", spatial_reference: nil)
|
68
65
|
driver = OGR::Driver.by_name(driver)
|
69
66
|
|
70
67
|
data_source = driver.create_data_source(file_name)
|