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.
Files changed (303) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +54 -19
  3. data/.rubocop_todo.yml +65 -0
  4. data/.ruby-version +1 -1
  5. data/Gemfile +2 -0
  6. data/History.md +74 -0
  7. data/README.md +5 -0
  8. data/Rakefile +11 -1
  9. data/bitbucket-pipelines.yml +16 -0
  10. data/examples/extract_and_colorize.rb +7 -10
  11. data/examples/geometries.rb +68 -1
  12. data/examples/gridding.rb +2 -0
  13. data/examples/ogr_layer_to_layer.rb +2 -0
  14. data/examples/raster_erasing.rb +15 -8
  15. data/examples/remove_small_polygons.rb +2 -0
  16. data/examples/testing_gdal.rb +9 -2
  17. data/examples/warping.rb +23 -5
  18. data/ffi-gdal.gemspec +7 -4
  19. data/lib/ext/error_symbols.rb +2 -0
  20. data/lib/ext/ffi_library_function_checks.rb +2 -0
  21. data/lib/ext/float_ext.rb +2 -0
  22. data/lib/ext/narray_ext.rb +2 -0
  23. data/lib/ext/numeric_as_data_type.rb +2 -0
  24. data/lib/ext/to_bool.rb +5 -3
  25. data/lib/ffi-gdal.rb +2 -0
  26. data/lib/ffi/cpl.rb +2 -0
  27. data/lib/ffi/cpl/conv.rb +4 -2
  28. data/lib/ffi/cpl/error.rb +2 -0
  29. data/lib/ffi/cpl/hash_set.rb +2 -0
  30. data/lib/ffi/cpl/http.rb +2 -0
  31. data/lib/ffi/cpl/http_result.rb +2 -0
  32. data/lib/ffi/cpl/list.rb +2 -0
  33. data/lib/ffi/cpl/mime_part.rb +2 -0
  34. data/lib/ffi/cpl/minixml.rb +2 -0
  35. data/lib/ffi/cpl/port.rb +2 -0
  36. data/lib/ffi/cpl/progress.rb +2 -0
  37. data/lib/ffi/cpl/quad_tree.rb +2 -0
  38. data/lib/ffi/cpl/rect_obj.rb +2 -0
  39. data/lib/ffi/cpl/string.rb +2 -0
  40. data/lib/ffi/cpl/vsi.rb +2 -0
  41. data/lib/ffi/cpl/xml_node.rb +2 -0
  42. data/lib/ffi/gdal.rb +3 -3
  43. data/lib/ffi/gdal/alg.rb +2 -0
  44. data/lib/ffi/gdal/color_entry.rb +2 -0
  45. data/lib/ffi/gdal/exceptions.rb +2 -0
  46. data/lib/ffi/gdal/gcp.rb +2 -0
  47. data/lib/ffi/gdal/gdal.rb +2 -0
  48. data/lib/ffi/gdal/grid.rb +2 -0
  49. data/lib/ffi/gdal/grid_data_metrics_options.rb +2 -0
  50. data/lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb +2 -0
  51. data/lib/ffi/gdal/grid_moving_average_options.rb +2 -0
  52. data/lib/ffi/gdal/grid_nearest_neighbor_options.rb +2 -0
  53. data/lib/ffi/gdal/matching.rb +2 -0
  54. data/lib/ffi/gdal/rpc_info.rb +2 -0
  55. data/lib/ffi/gdal/transformer_info.rb +2 -0
  56. data/lib/ffi/gdal/version.rb +3 -1
  57. data/lib/ffi/gdal/vrt.rb +2 -0
  58. data/lib/ffi/gdal/warp_options.rb +9 -4
  59. data/lib/ffi/gdal/warper.rb +19 -1
  60. data/lib/ffi/ogr.rb +2 -0
  61. data/lib/ffi/ogr/api.rb +2 -0
  62. data/lib/ffi/ogr/contour_writer_info.rb +2 -0
  63. data/lib/ffi/ogr/core.rb +2 -0
  64. data/lib/ffi/ogr/envelope.rb +2 -0
  65. data/lib/ffi/ogr/envelope_3d.rb +2 -0
  66. data/lib/ffi/ogr/featurestyle.rb +2 -0
  67. data/lib/ffi/ogr/field.rb +2 -0
  68. data/lib/ffi/ogr/geocoding.rb +2 -0
  69. data/lib/ffi/ogr/srs_api.rb +3 -0
  70. data/lib/ffi/ogr/style_param.rb +2 -0
  71. data/lib/ffi/ogr/style_value.rb +2 -0
  72. data/lib/gdal.rb +3 -0
  73. data/lib/gdal/color_entry.rb +2 -0
  74. data/lib/gdal/color_entry_mixins/extensions.rb +2 -14
  75. data/lib/gdal/color_interpretation.rb +2 -0
  76. data/lib/gdal/color_table.rb +2 -0
  77. data/lib/gdal/color_table_mixins/extensions.rb +3 -17
  78. data/lib/gdal/color_table_types/cmyk.rb +2 -0
  79. data/lib/gdal/color_table_types/gray.rb +2 -0
  80. data/lib/gdal/color_table_types/hls.rb +2 -0
  81. data/lib/gdal/color_table_types/rgb.rb +2 -0
  82. data/lib/gdal/cpl_error_handler.rb +2 -0
  83. data/lib/gdal/data_type.rb +2 -0
  84. data/lib/gdal/dataset.rb +11 -7
  85. data/lib/gdal/dataset_mixins/algorithm_methods.rb +7 -4
  86. data/lib/gdal/dataset_mixins/extensions.rb +7 -47
  87. data/lib/gdal/dataset_mixins/matching.rb +4 -1
  88. data/lib/gdal/dataset_mixins/warp_methods.rb +52 -11
  89. data/lib/gdal/driver.rb +6 -8
  90. data/lib/gdal/driver_mixins/extensions.rb +2 -0
  91. data/lib/gdal/environment_methods.rb +2 -0
  92. data/lib/gdal/exceptions.rb +2 -0
  93. data/lib/gdal/geo_transform.rb +3 -3
  94. data/lib/gdal/geo_transform_mixins/extensions.rb +2 -17
  95. data/lib/gdal/grid.rb +4 -1
  96. data/lib/gdal/grid_algorithms.rb +2 -0
  97. data/lib/gdal/grid_algorithms/data_metrics_base.rb +2 -0
  98. data/lib/gdal/grid_algorithms/inverse_distance_to_a_power.rb +2 -0
  99. data/lib/gdal/grid_algorithms/metric_average_distance.rb +2 -0
  100. data/lib/gdal/grid_algorithms/metric_average_distance_pts.rb +2 -0
  101. data/lib/gdal/grid_algorithms/metric_count.rb +2 -0
  102. data/lib/gdal/grid_algorithms/metric_maximum.rb +2 -0
  103. data/lib/gdal/grid_algorithms/metric_minimum.rb +2 -0
  104. data/lib/gdal/grid_algorithms/metric_range.rb +2 -0
  105. data/lib/gdal/grid_algorithms/moving_average.rb +2 -0
  106. data/lib/gdal/grid_algorithms/nearest_neighbor.rb +2 -0
  107. data/lib/gdal/gridder.rb +11 -3
  108. data/lib/gdal/gridder/point_extracting.rb +3 -2
  109. data/lib/gdal/gridder_options.rb +2 -0
  110. data/lib/gdal/internal_helpers.rb +3 -4
  111. data/lib/gdal/logger.rb +2 -0
  112. data/lib/gdal/major_object.rb +2 -0
  113. data/lib/gdal/merger.rb +2 -0
  114. data/lib/gdal/options.rb +16 -13
  115. data/lib/gdal/raster_attribute_table.rb +2 -0
  116. data/lib/gdal/raster_attribute_table_mixins/extensions.rb +3 -16
  117. data/lib/gdal/raster_band.rb +11 -6
  118. data/lib/gdal/raster_band_classifier.rb +52 -19
  119. data/lib/gdal/raster_band_mixins/algorithm_extensions.rb +2 -0
  120. data/lib/gdal/raster_band_mixins/algorithm_methods.rb +12 -5
  121. data/lib/gdal/raster_band_mixins/coloring_extensions.rb +3 -1
  122. data/lib/gdal/raster_band_mixins/extensions.rb +6 -35
  123. data/lib/gdal/raster_band_mixins/io_extensions.rb +7 -4
  124. data/lib/gdal/rpc_info.rb +2 -0
  125. data/lib/gdal/transformer.rb +2 -0
  126. data/lib/gdal/transformers/approximate_transformer.rb +4 -1
  127. data/lib/gdal/transformers/base_general_image_projection_transformer.rb +4 -1
  128. data/lib/gdal/transformers/gcp_transformer.rb +6 -2
  129. data/lib/gdal/transformers/general_image_projection_transformer.rb +2 -0
  130. data/lib/gdal/transformers/general_image_projection_transformer2.rb +4 -1
  131. data/lib/gdal/transformers/general_image_projection_transformer3.rb +4 -1
  132. data/lib/gdal/transformers/geolocation_transformer.rb +4 -1
  133. data/lib/gdal/transformers/reprojection_transformer.rb +2 -0
  134. data/lib/gdal/transformers/rpc_transformer.rb +4 -1
  135. data/lib/gdal/transformers/tps_transformer.rb +2 -0
  136. data/lib/gdal/version_info.rb +9 -7
  137. data/lib/gdal/virtual_dataset.rb +2 -0
  138. data/lib/gdal/warp_operation.rb +2 -0
  139. data/lib/gdal/warp_options.rb +105 -35
  140. data/lib/ogr.rb +2 -0
  141. data/lib/ogr/coordinate_transformation.rb +2 -0
  142. data/lib/ogr/data_source.rb +5 -9
  143. data/lib/ogr/data_source_extensions.rb +2 -19
  144. data/lib/ogr/data_source_mixins/capability_methods.rb +2 -0
  145. data/lib/ogr/driver.rb +4 -6
  146. data/lib/ogr/driver_mixins/capability_methods.rb +2 -0
  147. data/lib/ogr/envelope.rb +4 -2
  148. data/lib/ogr/envelope_extensions.rb +2 -22
  149. data/lib/ogr/error_handling.rb +3 -1
  150. data/lib/ogr/exceptions.rb +3 -1
  151. data/lib/ogr/feature.rb +17 -9
  152. data/lib/ogr/feature_definition.rb +7 -4
  153. data/lib/ogr/feature_definition_extensions.rb +2 -18
  154. data/lib/ogr/feature_extensions.rb +2 -27
  155. data/lib/ogr/field.rb +5 -1
  156. data/lib/ogr/field_definition.rb +5 -6
  157. data/lib/ogr/geocoder.rb +2 -0
  158. data/lib/ogr/geometries/geometry_collection.rb +2 -0
  159. data/lib/ogr/geometries/geometry_collection_25d.rb +2 -0
  160. data/lib/ogr/geometries/line_string.rb +2 -1
  161. data/lib/ogr/geometries/line_string_25d.rb +2 -0
  162. data/lib/ogr/geometries/linear_ring.rb +2 -0
  163. data/lib/ogr/geometries/multi_line_string.rb +2 -0
  164. data/lib/ogr/geometries/multi_line_string_25d.rb +2 -0
  165. data/lib/ogr/geometries/multi_point.rb +2 -0
  166. data/lib/ogr/geometries/multi_point_25d.rb +2 -0
  167. data/lib/ogr/geometries/multi_polygon.rb +2 -0
  168. data/lib/ogr/geometries/multi_polygon_25d.rb +2 -0
  169. data/lib/ogr/geometries/none_geometry.rb +2 -0
  170. data/lib/ogr/geometries/point.rb +2 -0
  171. data/lib/ogr/geometries/point_25d.rb +2 -0
  172. data/lib/ogr/geometries/polygon.rb +2 -0
  173. data/lib/ogr/geometries/polygon_25d.rb +2 -0
  174. data/lib/ogr/geometries/unknown_geometry.rb +2 -0
  175. data/lib/ogr/geometry.rb +3 -4
  176. data/lib/ogr/geometry_field_definition.rb +3 -4
  177. data/lib/ogr/geometry_mixins/container_mixins.rb +2 -0
  178. data/lib/ogr/geometry_mixins/extensions.rb +10 -39
  179. data/lib/ogr/geometry_types/container.rb +2 -0
  180. data/lib/ogr/geometry_types/curve.rb +3 -1
  181. data/lib/ogr/geometry_types/surface.rb +2 -0
  182. data/lib/ogr/internal_helpers.rb +2 -0
  183. data/lib/ogr/layer.rb +5 -1
  184. data/lib/ogr/layer_mixins/capability_methods.rb +2 -0
  185. data/lib/ogr/layer_mixins/extensions.rb +9 -27
  186. data/lib/ogr/layer_mixins/ogr_feature_methods.rb +6 -12
  187. data/lib/ogr/layer_mixins/ogr_field_methods.rb +10 -14
  188. data/lib/ogr/layer_mixins/ogr_layer_method_methods.rb +2 -0
  189. data/lib/ogr/layer_mixins/ogr_query_filter_methods.rb +8 -3
  190. data/lib/ogr/layer_mixins/ogr_sql_methods.rb +3 -3
  191. data/lib/ogr/spatial_reference.rb +12 -2
  192. data/lib/ogr/spatial_reference_extensions.rb +2 -26
  193. data/lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb +12 -5
  194. data/lib/ogr/spatial_reference_mixins/exporters.rb +2 -0
  195. data/lib/ogr/spatial_reference_mixins/importers.rb +6 -2
  196. data/lib/ogr/spatial_reference_mixins/morphers.rb +2 -0
  197. data/lib/ogr/spatial_reference_mixins/parameter_getter_setters.rb +2 -0
  198. data/lib/ogr/spatial_reference_mixins/type_checks.rb +2 -0
  199. data/lib/ogr/style_table.rb +2 -0
  200. data/lib/ogr/style_table_extensions.rb +2 -10
  201. data/lib/ogr/style_tool.rb +2 -0
  202. data/spec/ffi-gdal_spec.rb +2 -0
  203. data/spec/integration/gdal/color_table_info_spec.rb +2 -0
  204. data/spec/integration/gdal/dataset_info_spec.rb +15 -13
  205. data/spec/integration/gdal/driver_info_spec.rb +3 -1
  206. data/spec/integration/gdal/geo_transform_info_spec.rb +2 -0
  207. data/spec/integration/gdal/gridder_spec.rb +2 -0
  208. data/spec/integration/gdal/raster_attribute_table_info_spec.rb +2 -0
  209. data/spec/integration/gdal/raster_band_algorithms_spec.rb +2 -0
  210. data/spec/integration/gdal/raster_band_info_spec.rb +37 -15
  211. data/spec/integration/ogr/layer_spec.rb +2 -6
  212. data/spec/spec_helper.rb +3 -1
  213. data/spec/support/images/123.tiff +0 -0
  214. data/spec/support/integration_help.rb +2 -0
  215. data/spec/support/shared_contexts.rb +2 -0
  216. data/spec/support/shared_examples/gdal/major_object_examples.rb +2 -0
  217. data/spec/support/shared_examples/ogr/{a_25D_geometry.rb → a_25d_geometry.rb} +2 -0
  218. data/spec/support/shared_examples/ogr/a_container_geometry.rb +2 -0
  219. data/spec/support/shared_examples/ogr/a_geometry.rb +3 -1
  220. data/spec/support/shared_examples/ogr/a_line_string.rb +2 -0
  221. data/spec/unit/ext/error_symbols_spec.rb +2 -0
  222. data/spec/unit/ext/numeric_as_data_type_spec.rb +2 -0
  223. data/spec/unit/ffi/gdal_spec.rb +3 -0
  224. data/spec/unit/gdal/color_entry_spec.rb +2 -0
  225. data/spec/unit/gdal/color_interpretation_spec.rb +2 -0
  226. data/spec/unit/gdal/color_table_mixins/extensions_spec.rb +2 -0
  227. data/spec/unit/gdal/color_table_spec.rb +2 -0
  228. data/spec/unit/gdal/data_type_spec.rb +2 -0
  229. data/spec/unit/gdal/dataset_mixins/warp_methods_spec.rb +55 -0
  230. data/spec/unit/gdal/dataset_spec.rb +2 -0
  231. data/spec/unit/gdal/driver_mixins/extensions_spec.rb +2 -0
  232. data/spec/unit/gdal/driver_spec.rb +2 -0
  233. data/spec/unit/gdal/environment_methods_spec.rb +2 -0
  234. data/spec/unit/gdal/geo_transform_mixins/extensions_spec.rb +2 -0
  235. data/spec/unit/gdal/geo_transform_spec.rb +2 -13
  236. data/spec/unit/gdal/grid_spec.rb +10 -0
  237. data/spec/unit/gdal/gridder/point_extracting_spec.rb +2 -0
  238. data/spec/unit/gdal/gridder_options_spec.rb +2 -0
  239. data/spec/unit/gdal/gridder_spec.rb +42 -0
  240. data/spec/unit/gdal/internal_helpers_spec.rb +2 -0
  241. data/spec/unit/gdal/major_object_spec.rb +2 -0
  242. data/spec/unit/gdal/options_spec.rb +28 -1
  243. data/spec/unit/gdal/raster_attribute_table_spec.rb +2 -0
  244. data/spec/unit/gdal/raster_band_classifier_spec.rb +43 -5
  245. data/spec/unit/gdal/raster_band_mixins/extensions_spec.rb +2 -0
  246. data/spec/unit/gdal/raster_band_mixins/io_extensions_spec.rb +2 -0
  247. data/spec/unit/gdal/raster_band_spec.rb +2 -0
  248. data/spec/unit/gdal/rpc_info_spec.rb +2 -0
  249. data/spec/unit/gdal/version_info_spec.rb +2 -0
  250. data/spec/unit/gdal/virtual_dataset_spec.rb +2 -0
  251. data/spec/unit/gdal/warp_operation_spec.rb +2 -0
  252. data/spec/unit/gdal/warp_options_spec.rb +338 -0
  253. data/spec/unit/ogr/coordinate_transformation_spec.rb +2 -0
  254. data/spec/unit/ogr/data_source_mixins/capability_methods_spec.rb +2 -0
  255. data/spec/unit/ogr/data_source_spec.rb +2 -0
  256. data/spec/unit/ogr/driver_mixins/capability_methods_spec.rb +2 -0
  257. data/spec/unit/ogr/driver_spec.rb +3 -1
  258. data/spec/unit/ogr/envelope_spec.rb +2 -0
  259. data/spec/unit/ogr/feature_definition_spec.rb +2 -19
  260. data/spec/unit/ogr/feature_extensions_spec.rb +3 -1
  261. data/spec/unit/ogr/feature_spec.rb +3 -3
  262. data/spec/unit/ogr/field_definition_spec.rb +2 -19
  263. data/spec/unit/ogr/field_spec.rb +3 -1
  264. data/spec/unit/ogr/geometries/geometry_collection_25d_spec.rb +2 -0
  265. data/spec/unit/ogr/geometries/geometry_collection_spec.rb +2 -0
  266. data/spec/unit/ogr/geometries/line_string_25d_spec.rb +2 -0
  267. data/spec/unit/ogr/geometries/line_string_spec.rb +2 -0
  268. data/spec/unit/ogr/geometries/linear_ring_spec.rb +2 -0
  269. data/spec/unit/ogr/geometries/multi_line_string_25d_spec.rb +2 -0
  270. data/spec/unit/ogr/geometries/multi_line_string_spec.rb +2 -0
  271. data/spec/unit/ogr/geometries/multi_point_25d_spec.rb +2 -0
  272. data/spec/unit/ogr/geometries/multi_point_spec.rb +2 -0
  273. data/spec/unit/ogr/geometries/multi_polygon_25d_spec.rb +2 -0
  274. data/spec/unit/ogr/geometries/multi_polygon_spec.rb +2 -0
  275. data/spec/unit/ogr/geometries/none_geometry_spec.rb +2 -0
  276. data/spec/unit/ogr/geometries/point_25d_spec.rb +2 -0
  277. data/spec/unit/ogr/geometries/point_spec.rb +2 -0
  278. data/spec/unit/ogr/geometries/polygon_25d_spec.rb +2 -0
  279. data/spec/unit/ogr/geometries/polygon_spec.rb +2 -0
  280. data/spec/unit/ogr/geometries/unknown_geometry_spec.rb +2 -0
  281. data/spec/unit/ogr/geometry_field_definition_spec.rb +2 -16
  282. data/spec/unit/ogr/geometry_spec.rb +2 -0
  283. data/spec/unit/ogr/internal_helpers_spec.rb +2 -0
  284. data/spec/unit/ogr/layer_mixins/capability_methods_spec.rb +2 -0
  285. data/spec/unit/ogr/layer_mixins/ogr_feature_methods_spec.rb +2 -0
  286. data/spec/unit/ogr/layer_mixins/ogr_field_methods_spec.rb +2 -0
  287. data/spec/unit/ogr/layer_mixins/ogr_layer_method_methods_spec.rb +2 -0
  288. data/spec/unit/ogr/layer_mixins/ogr_query_filter_methods_spec.rb +2 -0
  289. data/spec/unit/ogr/layer_mixins/ogr_sql_methods_spec.rb +2 -0
  290. data/spec/unit/ogr/layer_spec.rb +2 -0
  291. data/spec/unit/ogr/spatial_reference_mixins/coordinate_system_getter_setters_spec.rb +2 -0
  292. data/spec/unit/ogr/spatial_reference_mixins/exporters_spec.rb +19 -15
  293. data/spec/unit/ogr/spatial_reference_mixins/importers_spec.rb +2 -0
  294. data/spec/unit/ogr/spatial_reference_mixins/morphers_spec.rb +9 -7
  295. data/spec/unit/ogr/spatial_reference_mixins/parameter_getter_setters_spec.rb +2 -0
  296. data/spec/unit/ogr/spatial_reference_mixins/type_checks_spec.rb +2 -0
  297. data/spec/unit/ogr/spatial_reference_spec.rb +4 -2
  298. data/spec/unit/ogr/style_table_spec.rb +2 -26
  299. data/spec/unit/ogr/style_tool_spec.rb +2 -0
  300. data/spec/unit/version_info_spec.rb +2 -0
  301. metadata +47 -15
  302. data/lib/ogr/field_definition_extensions.rb +0 -22
  303. data/lib/ogr/geometry_field_definition_extensions.rb +0 -19
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
  require_relative '../../ext/ffi_library_function_checks'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
 
3
5
  module FFI
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
 
3
5
  module FFI
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FFI
2
4
  module GDAL
3
- VERSION = '1.0.0.beta6'.freeze
5
+ VERSION = '1.0.0.beta11'
4
6
  end
5
7
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
  require_relative '../../ext/ffi_library_function_checks'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
 
3
5
  module FFI
@@ -32,14 +34,17 @@ module FFI
32
34
  :destination_density_mask_function_arg, :pointer,
33
35
  :destination_validity_mask_function, Warper.find_type(:GDALMaskFunc),
34
36
  :destination_validity_mask_function_arg, :pointer,
35
- # :pre_warp_chunk_processor, CPL::Error::CPLErr,
36
- :pre_warp_chunk_processor, :pointer,
37
+ :pre_warp_chunk_processor, callback(%i[pointer pointer], CPL::Error::CPLErr),
37
38
  :pre_warp_processor_arg, :pointer,
38
- # :post_warp_chunk_processor, CPL::Error::CPLErr,
39
- :post_warp_chunk_processor, :pointer,
39
+ :post_warp_chunk_processor, callback(%i[pointer pointer], CPL::Error::CPLErr),
40
40
  :post_warp_processor_arg, :pointer,
41
41
  :cutline, :pointer,
42
42
  :cutline_blend_distance, :double
43
+
44
+ def initialize
45
+ super
46
+ self[:progress] = proc { true } if self[:progress].null?
47
+ end
43
48
  end
44
49
  end
45
50
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
  require_relative '../../ext/ffi_library_function_checks'
3
5
 
@@ -11,7 +13,7 @@ module FFI
11
13
  # Typedefs
12
14
  #------------------------------------------------------------------------
13
15
  typedef :pointer, :GDALWarpOperationH
14
- callback :GDALMaskFunc,
16
+ MaskFunc = callback :GDALMaskFunc,
15
17
  [
16
18
  :pointer,
17
19
  :int,
@@ -85,6 +87,22 @@ module FFI
85
87
  FFI::GDAL::WarpOptions.ptr
86
88
  ],
87
89
  CPL::Error::CPLErr
90
+ attach_function :GDALCreateAndReprojectImage,
91
+ [
92
+ FFI::GDAL::GDAL.find_type(:GDALDatasetH),
93
+ :string,
94
+ :string,
95
+ :string,
96
+ FFI::GDAL::GDAL.find_type(:GDALDriverH),
97
+ :pointer,
98
+ ResampleAlg,
99
+ :double,
100
+ :double,
101
+ FFI::GDAL::GDAL.find_type(:GDALProgressFunc),
102
+ :pointer,
103
+ FFI::GDAL::WarpOptions.ptr
104
+ ],
105
+ CPL::Error::CPLErr
88
106
  attach_function :GDALAutoCreateWarpedVRT,
89
107
  [
90
108
  FFI::GDAL::GDAL.find_type(:GDALDatasetH),
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FFI
2
4
  module OGR
3
5
  autoload :API, File.expand_path('ogr/api.rb', __dir__)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../ext/ffi_library_function_checks'
2
4
 
3
5
  module FFI
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
 
3
5
  module FFI
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
  require_relative '../../ext/ffi_library_function_checks'
3
5
  require_relative 'field'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
 
3
5
  module FFI
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
 
3
5
  module FFI
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
 
3
5
  module FFI
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../cpl/conv'
2
4
 
3
5
  module FFI
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
  require_relative '../../ext/ffi_library_function_checks'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../ext/ffi_library_function_checks'
2
4
 
3
5
  module FFI
@@ -93,6 +95,7 @@ module FFI
93
95
  gen.const :SRS_UL_INDIAN_CHAIN, '%s', nil, :INDIAN_CHAIN_LABEL, &:inspect
94
96
  gen.const :SRS_UL_INDIAN_CHAIN_CONV, '%s', nil, :METER_TO_INDIAN_CHAIN, &:to_f
95
97
  end
98
+
96
99
  SRS_UL.calculate
97
100
 
98
101
  SRS_UA = FFI::ConstGenerator.new('SRS_UL') do |gen|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
  require_relative '../cpl/port'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
 
3
5
  module FFI
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'ffi-gdal'
2
4
 
3
5
  module GDAL
@@ -30,6 +32,7 @@ module GDAL
30
32
  autoload :Driver, gdal_require('gdal/driver')
31
33
  autoload :GeoTransform, gdal_require('gdal/geo_transform')
32
34
  autoload :Logger, gdal_require('gdal/logger')
35
+ autoload :MajorObject, gdal_require('gdal/major_object')
33
36
  autoload :Options, gdal_require('gdal/options')
34
37
  autoload :RasterAttributeTable, gdal_require('gdal/raster_attribute_table')
35
38
  autoload :RasterBand, gdal_require('gdal/raster_band')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'color_entry_mixins/extensions'
2
4
 
3
5
  module GDAL
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
 
3
5
  module GDAL
@@ -13,20 +15,6 @@ module GDAL
13
15
  [color1, color2, color3]
14
16
  end
15
17
  end
16
-
17
- def as_json(_options = nil)
18
- {
19
- color1: color1,
20
- color2: color2,
21
- color3: color3,
22
- color4: color4
23
- }
24
- end
25
-
26
- # @return [String]
27
- def to_json(options = nil)
28
- as_json(options).to_json
29
- end
30
18
  end
31
19
  end
32
20
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GDAL
2
4
  class ColorInterpretation
3
5
  # @param gdal_color_interp [FFI::GDAL::ColorInterp]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../gdal'
2
4
  require_relative 'color_table_mixins/extensions'
3
5
  require_relative 'color_entry'
@@ -1,12 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
 
3
5
  module GDAL
4
6
  module ColorTableMixins
5
7
  module Extensions
6
8
  def color_entries_for(color_number)
7
- unless (1..4).to_a.include? color_number
8
- raise "Invalid ColorEntry number 'color#{color_number}'"
9
- end
9
+ raise "Invalid ColorEntry number 'color#{color_number}'" unless (1..4).to_a.include? color_number
10
10
 
11
11
  Array.new(color_entry_count) do |i|
12
12
  color_entry(i).send("color#{color_number}".to_sym)
@@ -29,20 +29,6 @@ module GDAL
29
29
  color_entry_as_rgb(i)
30
30
  end
31
31
  end
32
-
33
- # @return [Hash]
34
- def as_json(_options = nil)
35
- {
36
- color_entry_count: color_entry_count,
37
- color_entries: color_entries.map(&:as_json),
38
- palette_interpretation: palette_interpretation
39
- }
40
- end
41
-
42
- # @return [String]
43
- def to_json(options = nil)
44
- as_json(options).to_json
45
- end
46
32
  end
47
33
  end
48
34
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GDAL
2
4
  module ColorTableTypes
3
5
  module CMYK
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GDAL
2
4
  module ColorTableTypes
3
5
  module Gray
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GDAL
2
4
  module ColorTableTypes
3
5
  module HLS
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GDAL
2
4
  module ColorTableTypes
3
5
  module RGB
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GDAL
2
4
  # This is used to override GDAL's built-in error handling. By default, GDAL
3
5
  # only logs errors to STDOUT, which doesn't allow a whole lot of flexibility.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GDAL
2
4
  # Info about GDAL data types (GDT symbols).
3
5
  class DataType
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'uri'
2
4
  require_relative '../gdal'
3
5
  require_relative '../ogr'
@@ -300,6 +302,7 @@ module GDAL
300
302
  # @param band_space [Fixnum] The byte offset from the start of one band's
301
303
  # data to the start of the next. If defaulted (0), the size of
302
304
  # +line_space+ * +buffer_y_size* is used.
305
+ # rubocop:disable: Metrics/MethodLength
303
306
  def raster_io(access_flag, buffer = nil,
304
307
  x_size: nil, y_size: nil, x_offset: 0, y_offset: 0,
305
308
  buffer_x_size: nil, buffer_y_size: nil, buffer_data_type: nil,
@@ -343,6 +346,7 @@ module GDAL
343
346
 
344
347
  buffer
345
348
  end
349
+ # rubocop:enable: Metrics/MethodLength
346
350
 
347
351
  private
348
352
 
@@ -353,13 +357,13 @@ module GDAL
353
357
  # @return [Fixnum]
354
358
  def parse_mask_flag_symbols(*flags)
355
359
  flags.reduce(0) do |result, flag|
356
- result |= case flag
357
- when :GMF_ALL_VALID then 0x01
358
- when :GMF_PER_DATASET then 0x02
359
- when :GMF_PER_ALPHA then 0x04
360
- when :GMF_NODATA then 0x08
361
- else 0
362
- end
360
+ result | case flag
361
+ when :GMF_ALL_VALID then 0x01
362
+ when :GMF_PER_DATASET then 0x02
363
+ when :GMF_PER_ALPHA then 0x04
364
+ when :GMF_NODATA then 0x08
365
+ else 0
366
+ end
363
367
  end
364
368
  end
365
369
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GDAL
2
4
  module DatasetMixins
3
5
  # Wrappers for Warp algorithm methods defined in gdal_alg.h.
@@ -16,7 +18,7 @@ module GDAL
16
18
  # polygon or that are selected by Brezenham's line algorithm. Defaults to
17
19
  # +false+.
18
20
  # @option options burn_value_from ["Z"] Use the Z values of the geometries.
19
- # @option @options merge_alg [String] "REPLACE" or "ADD". REPLACE results
21
+ # @option options merge_alg [String] "REPLACE" or "ADD". REPLACE results
20
22
  # in overwriting of value, while ADD adds the new value to the existing
21
23
  # raster, suitable for heatmaps for instance.
22
24
  def rasterize_geometries!(band_numbers, geometries, burn_values,
@@ -40,7 +42,7 @@ module GDAL
40
42
  burn_values_ptr = FFI::MemoryPointer.new(:pointer, burn_values.size)
41
43
  burn_values_ptr.write_array_of_double(burn_values)
42
44
 
43
- FFI::GDAL::GDAL.GDALRasterizeGeometries(@c_pointer,
45
+ FFI::GDAL::Alg.GDALRasterizeGeometries(@c_pointer,
44
46
  band_numbers.size,
45
47
  band_numbers_ptr,
46
48
  geometries.size,
@@ -94,7 +96,7 @@ module GDAL
94
96
  burn_values_ptr.write_array_of_double(burn_values)
95
97
  log "burn value ptr null? #{burn_values_ptr.null?}"
96
98
 
97
- FFI::GDAL::GDAL.GDALRasterizeLayers(@c_pointer, # hDS
99
+ FFI::GDAL::Alg.GDALRasterizeLayers(@c_pointer, # hDS
98
100
  band_numbers.size, # nBandCount
99
101
  band_numbers_ptr, # panBandList
100
102
  layers.size, # nLayerCount
@@ -185,7 +187,8 @@ module GDAL
185
187
  pixels_ptr,
186
188
  lines_ptr,
187
189
  extents_ptr,
188
- options)
190
+ options
191
+ )
189
192
 
190
193
  extents_array = extents_ptr.read_array_of_double(4)
191
194
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
  require 'narray'
3
5
  require_relative '../../ffi-gdal'
@@ -33,8 +35,6 @@ module GDAL
33
35
  # Defaults to -9999.0.
34
36
  # @param options [Hash] Options that get used for creating the new NDVI
35
37
  # dataset. See docs for GDAL::Driver#create_dataset.
36
- # @return [GDAL::Dataset] The new NDVI dataset. *Be sure to call #close on
37
- # this object or the data may not persist!*
38
38
  def extract_ndvi(destination, red_band_number, nir_band_number, driver_name: 'GTiff',
39
39
  output_data_type: nil, remove_negatives: false, no_data_value: -9999.0, **options)
40
40
  red = raster_band(red_band_number)
@@ -46,7 +46,7 @@ module GDAL
46
46
  the_array = calculate_ndvi(red.to_na, nir.to_na, no_data_value, remove_negatives, output_data_type)
47
47
  driver = GDAL::Driver.by_name(driver_name)
48
48
 
49
- ndvi = driver.create_dataset(destination, raster_x_size, raster_y_size,
49
+ driver.create_dataset(destination, raster_x_size, raster_y_size,
50
50
  data_type: output_data_type, **options) do |ndvi_dataset|
51
51
  ndvi_dataset.geo_transform = geo_transform
52
52
  ndvi_dataset.projection = projection
@@ -55,10 +55,6 @@ module GDAL
55
55
  ndvi_band.write_xy_narray(the_array)
56
56
  ndvi_band.no_data_value = no_data_value
57
57
  end
58
-
59
- ndvi.close
60
-
61
- ndvi
62
58
  end
63
59
 
64
60
  # Extracts the NIR band and writes to a new file. NOTE: be sure to close
@@ -74,8 +70,6 @@ module GDAL
74
70
  # in this data type. Defaults to use the current data type.
75
71
  # @param options [Hash] Options that get used for creating the new NDVI
76
72
  # dataset. See docs for GDAL::Driver#create_dataset.
77
- # @return [GDAL::Dataset] The new NIR dataset. *Be sure to call #close on
78
- # this object or the data may not persist!*
79
73
  def extract_nir(destination, band_number, driver_name: 'GTiff', output_data_type: nil, **options)
80
74
  original_nir_band = raster_band(band_number)
81
75
  raise InvalidBandNumber, "Band #{band_number} found but was nil." if original_nir_band.nil?
@@ -83,7 +77,7 @@ module GDAL
83
77
  output_data_type ||= original_nir_band.data_type
84
78
  driver = GDAL::Driver.by_name(driver_name)
85
79
 
86
- nir = driver.create_dataset(destination, raster_x_size, raster_y_size,
80
+ driver.create_dataset(destination, raster_x_size, raster_y_size,
87
81
  data_type: output_data_type, **options) do |nir_dataset|
88
82
  nir_dataset.geo_transform = geo_transform
89
83
  nir_dataset.projection = projection
@@ -91,10 +85,6 @@ module GDAL
91
85
  nir_band = nir_dataset.raster_band(1)
92
86
  original_nir_band.copy_whole_raster(nir_band)
93
87
  end
94
-
95
- nir.close
96
-
97
- nir
98
88
  end
99
89
 
100
90
  # Extracts the RGB bands and writes to a new file. NOTE: this closes the
@@ -111,7 +101,6 @@ module GDAL
111
101
  # in this data type. Defaults to use the current data type.
112
102
  # @param options [Hash] Options that get used for creating the new NDVI
113
103
  # dataset. See docs for GDAL::Driver#create_dataset.
114
- # @return [GDAL::Dataset]
115
104
  def extract_natural_color(destination, red_band_number, green_band_number, blue_band_number,
116
105
  driver_name: 'GTiff', output_data_type: nil, **options)
117
106
  original_bands = {
@@ -123,7 +112,7 @@ module GDAL
123
112
  output_data_type ||= raster_band(1).data_type
124
113
  driver = GDAL::Driver.by_name(driver_name)
125
114
 
126
- natural_color = driver.create_dataset(destination, raster_x_size, raster_y_size,
115
+ driver.create_dataset(destination, raster_x_size, raster_y_size,
127
116
  band_count: 3, data_type: output_data_type, **options) do |new_dataset|
128
117
  new_dataset.geo_transform = geo_transform
129
118
  new_dataset.projection = projection
@@ -137,10 +126,6 @@ module GDAL
137
126
  new_blue_band = new_dataset.raster_band(3)
138
127
  original_bands[:blue].copy_whole_raster(new_blue_band)
139
128
  end
140
-
141
- natural_color.close
142
-
143
- natural_color
144
129
  end
145
130
 
146
131
  # @param red_band_array [NArray]
@@ -273,7 +258,7 @@ module GDAL
273
258
  spatial_ref = OGR::SpatialReference.new(projection)
274
259
  begin
275
260
  spatial_ref.auto_identify_epsg!
276
- rescue
261
+ rescue StandardError
277
262
  OGR::UnsupportedSRS
278
263
  end
279
264
  end
@@ -291,9 +276,7 @@ module GDAL
291
276
  layer.create_field(OGR::FieldDefinition.new(field_name, :OFTInteger))
292
277
  band = raster_band(band_number)
293
278
 
294
- unless band
295
- raise GDAL::InvalidBandNumber, "Unknown band number: #{band_number}"
296
- end
279
+ raise GDAL::InvalidBandNumber, "Unknown band number: #{band_number}" unless band
297
280
 
298
281
  pixel_value_field = layer.feature_definition.field_index(field_name)
299
282
  options = { pixel_value_field: pixel_value_field }
@@ -367,29 +350,6 @@ module GDAL
367
350
  NArray[*na.transpose]
368
351
  end
369
352
 
370
- # @return [Hash]
371
- def as_json(options = nil)
372
- {
373
- dataset: {
374
- driver: driver.long_name,
375
- file_list: file_list,
376
- gcp_count: gcp_count,
377
- gcp_projection: gcp_projection,
378
- geo_transform: geo_transform.as_json(options),
379
- projection: projection,
380
- raster_count: raster_count,
381
- raster_bands: raster_bands.map(&:as_json),
382
- spatial_reference: spatial_reference.as_json(options)
383
- },
384
- metadata: all_metadata
385
- }
386
- end
387
-
388
- # @return [String]
389
- def to_json(options = nil)
390
- as_json(options).to_json
391
- end
392
-
393
353
  private
394
354
 
395
355
  # @param ndvi [NArray]