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/lib/ogr/driver.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../ogr'
|
2
4
|
require_relative '../gdal'
|
3
5
|
require_relative '../gdal/major_object'
|
@@ -72,9 +74,7 @@ module OGR
|
|
72
74
|
|
73
75
|
data_source_ptr = FFI::OGR::API.OGR_Dr_Open(@c_pointer, file_name, update)
|
74
76
|
|
75
|
-
if data_source_ptr.null?
|
76
|
-
raise OGR::InvalidDataSource, "Unable to open data source at #{file_name}"
|
77
|
-
end
|
77
|
+
raise OGR::InvalidDataSource, "Unable to open data source at #{file_name}" if data_source_ptr.null?
|
78
78
|
|
79
79
|
OGR::DataSource.new(data_source_ptr, nil)
|
80
80
|
end
|
@@ -122,9 +122,7 @@ module OGR
|
|
122
122
|
def copy_data_source(source_data_source, new_file_name, **options)
|
123
123
|
source_ptr = GDAL._pointer(OGR::DataSource, source_data_source)
|
124
124
|
|
125
|
-
if source_ptr.nil? || source_ptr.null?
|
126
|
-
raise OGR::InvalidDataSource, source_data_source
|
127
|
-
end
|
125
|
+
raise OGR::InvalidDataSource, source_data_source if source_ptr.nil? || source_ptr.null?
|
128
126
|
|
129
127
|
options_ptr = GDAL::Options.pointer(options)
|
130
128
|
|
data/lib/ogr/envelope.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../ogr'
|
2
4
|
require_relative 'envelope_extensions'
|
3
5
|
|
@@ -69,7 +71,7 @@ module OGR
|
|
69
71
|
|
70
72
|
# @param new_z_min [Float]
|
71
73
|
def z_min=(new_z_min)
|
72
|
-
return
|
74
|
+
return unless @c_struct.is_a? FFI::OGR::Envelope3D
|
73
75
|
|
74
76
|
@c_struct[:min_z] = new_z_min
|
75
77
|
end
|
@@ -83,7 +85,7 @@ module OGR
|
|
83
85
|
|
84
86
|
# @param new_z_max [Float]
|
85
87
|
def z_max=(new_z_max)
|
86
|
-
return
|
88
|
+
return unless @c_struct.is_a? FFI::OGR::Envelope3D
|
87
89
|
|
88
90
|
@c_struct[:max_z] = new_z_max
|
89
91
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
|
3
5
|
module OGR
|
@@ -101,28 +103,6 @@ module OGR
|
|
101
103
|
polygon
|
102
104
|
end
|
103
105
|
|
104
|
-
# @return [Hash]
|
105
|
-
def as_json(_options = nil)
|
106
|
-
json = {
|
107
|
-
x_min: x_min,
|
108
|
-
x_max: x_max,
|
109
|
-
y_min: y_min,
|
110
|
-
y_max: y_max
|
111
|
-
}
|
112
|
-
|
113
|
-
if @c_struct.is_a? FFI::OGR::Envelope3D
|
114
|
-
json[:z_min] = z_min
|
115
|
-
json[:z_max] = z_max
|
116
|
-
end
|
117
|
-
|
118
|
-
json
|
119
|
-
end
|
120
|
-
|
121
|
-
# @return [String]
|
122
|
-
def to_json(options = nil)
|
123
|
-
as_json(options).to_json
|
124
|
-
end
|
125
|
-
|
126
106
|
def to_a
|
127
107
|
[x_min, y_min, x_max, y_max]
|
128
108
|
end
|
data/lib/ogr/error_handling.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'exceptions'
|
2
4
|
|
3
5
|
module OGR
|
@@ -23,7 +25,7 @@ module OGR
|
|
23
25
|
# @return [Proc]
|
24
26
|
def error_class_map(error_class)
|
25
27
|
{
|
26
|
-
OGRERR_NONE:
|
28
|
+
OGRERR_NONE: ->(_msg) { true },
|
27
29
|
OGRERR_NOT_ENOUGH_DATA: ->(msg) { raise_exception(OGR::NotEnoughData, msg) },
|
28
30
|
OGRERR_NOT_ENOUGH_MEMORY: ->(msg) { raise_exception(::NoMemoryError, msg) },
|
29
31
|
OGRERR_UNSUPPORTED_GEOMETRY_TYPE: ->(msg) { raise_exception(OGR::UnsupportedGeometryType, msg) },
|
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,
|
@@ -333,7 +339,7 @@ module OGR
|
|
333
339
|
# @param index [Fixnum]
|
334
340
|
# @return [String]
|
335
341
|
def field_as_string(index)
|
336
|
-
FFI::OGR::API.OGR_F_GetFieldAsString(@c_pointer, index)
|
342
|
+
FFI::OGR::API.OGR_F_GetFieldAsString(@c_pointer, index).force_encoding(Encoding::UTF_8)
|
337
343
|
end
|
338
344
|
|
339
345
|
# @param index [Fixnum]
|
@@ -386,6 +392,7 @@ module OGR
|
|
386
392
|
|
387
393
|
formatted_tz = OGR._format_time_zone_for_ruby(time_zone_flag_ptr.read_int)
|
388
394
|
|
395
|
+
# rubocop:disable Style/DateTime
|
389
396
|
if formatted_tz
|
390
397
|
DateTime.new(
|
391
398
|
year_ptr.read_int,
|
@@ -406,6 +413,7 @@ module OGR
|
|
406
413
|
second_ptr.read_int
|
407
414
|
)
|
408
415
|
end
|
416
|
+
# rubocop:enable Style/DateTime
|
409
417
|
end
|
410
418
|
|
411
419
|
# @return [String]
|
@@ -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
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
|
3
5
|
module OGR
|
@@ -33,23 +35,5 @@ module OGR
|
|
33
35
|
|
34
36
|
geometry_field_definition(g)
|
35
37
|
end
|
36
|
-
|
37
|
-
# @return [Hash]
|
38
|
-
def as_json(_options = nil)
|
39
|
-
{
|
40
|
-
field_count: field_count,
|
41
|
-
field_definitions: field_definitions.map(&:as_json),
|
42
|
-
geometry_field_count: geometry_field_count,
|
43
|
-
geometry_type: geometry_type,
|
44
|
-
is_geometry_ignored: geometry_ignored?,
|
45
|
-
is_style_ignored: style_ignored?,
|
46
|
-
name: name
|
47
|
-
}
|
48
|
-
end
|
49
|
-
|
50
|
-
# @return [String]
|
51
|
-
def to_json(options = nil)
|
52
|
-
as_json(options).to_json
|
53
|
-
end
|
54
38
|
end
|
55
39
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
|
3
5
|
module OGR
|
@@ -81,32 +83,5 @@ module OGR
|
|
81
83
|
def geometry_fields
|
82
84
|
each_geometry_field.to_a
|
83
85
|
end
|
84
|
-
|
85
|
-
# @return [Hash]
|
86
|
-
def as_json(options = nil)
|
87
|
-
fields_with_nested_json = fields.map.with_index do |f, i|
|
88
|
-
{
|
89
|
-
field_definition: field_definition(i).as_json(options),
|
90
|
-
value: f
|
91
|
-
}
|
92
|
-
end
|
93
|
-
|
94
|
-
{
|
95
|
-
definition: definition.as_json(options),
|
96
|
-
fid: fid,
|
97
|
-
field_count: field_count,
|
98
|
-
fields: fields_with_nested_json,
|
99
|
-
geometry: geometry ? geometry.as_json(options) : nil,
|
100
|
-
geometry_field_count: geometry_field_count,
|
101
|
-
geometry_field_definition: each_geometry_field_definition.map { |gfd| gfd.as_json(options) },
|
102
|
-
style_string: style_string,
|
103
|
-
style_table: style_table ? style_table.as_json(options) : nil
|
104
|
-
}
|
105
|
-
end
|
106
|
-
|
107
|
-
# @return [String]
|
108
|
-
def to_json(options = nil)
|
109
|
-
as_json(options).to_json
|
110
|
-
end
|
111
86
|
end
|
112
87
|
end
|
data/lib/ogr/field.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'date'
|
2
4
|
require_relative '../ogr'
|
3
5
|
|
@@ -50,7 +52,7 @@ module OGR
|
|
50
52
|
|
51
53
|
# TODO: This blows up when another value type has been set.
|
52
54
|
def string
|
53
|
-
return '' if @c_struct[:string]
|
55
|
+
return '' if @c_struct[:string]&.null?
|
54
56
|
|
55
57
|
@c_struct[:string].read_string
|
56
58
|
end
|
@@ -184,6 +186,7 @@ module OGR
|
|
184
186
|
|
185
187
|
formatted_tz = OGR._format_time_zone_for_ruby(c_date[:tz_flag].to_i)
|
186
188
|
|
189
|
+
# rubocop:disable Style/DateTime
|
187
190
|
DateTime.new(c_date[:year],
|
188
191
|
c_date[:month],
|
189
192
|
c_date[:day],
|
@@ -191,6 +194,7 @@ module OGR
|
|
191
194
|
c_date[:minute],
|
192
195
|
c_date[:second],
|
193
196
|
formatted_tz)
|
197
|
+
# rubocop:enable Style/DateTime
|
194
198
|
end
|
195
199
|
|
196
200
|
# @param new_date [Date, Time, DateTime]
|
data/lib/ogr/field_definition.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../ogr'
|
2
|
-
require_relative 'field_definition_extensions'
|
3
4
|
|
4
5
|
module OGR
|
5
6
|
class FieldDefinition
|
6
|
-
include FieldDefinitionExtensions
|
7
|
-
|
8
7
|
# @return [FFI::Pointer] C pointer to the C FieldDefn.
|
9
8
|
attr_reader :c_pointer
|
10
9
|
|
@@ -17,9 +16,9 @@ module OGR
|
|
17
16
|
name_or_pointer
|
18
17
|
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
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}"
|
23
22
|
end
|
24
23
|
|
25
24
|
def destroy!
|
data/lib/ogr/geocoder.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../geometry_types/curve'
|
2
4
|
|
3
5
|
module OGR
|
4
6
|
class LineString
|
5
7
|
include OGR::Geometry
|
6
8
|
include GeometryTypes::Curve
|
7
|
-
|
8
9
|
def self.approximate_arc_angles(center_x, center_y, z, primary_radius, secondary_radius,
|
9
10
|
rotation, start_angle, end_angle, max_angle_step_size_degrees = 0)
|
10
11
|
geometry_ptr = FFI::GDAL::GDAL.OGR_G_ApproximateArcAngles(
|