ffi-gdal 1.0.0.beta16 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +17 -0
  3. data/.github/workflows/codacy.yml +61 -0
  4. data/.github/workflows/codeql.yml +74 -0
  5. data/.github/workflows/continuous-integration.yml +36 -0
  6. data/.github/workflows/dependency-review.yml +20 -0
  7. data/.github/workflows/specs-in-docker.yml +27 -0
  8. data/.gitignore +3 -0
  9. data/.rspec +1 -0
  10. data/.rubocop.yml +10 -80
  11. data/.rubocop_todo.yml +23 -40
  12. data/.ruby-version +1 -1
  13. data/Changelog-0.x.md +512 -0
  14. data/Changelog.md +12 -0
  15. data/Dockerfile.gdal2 +110 -0
  16. data/Dockerfile.gdal3 +73 -0
  17. data/README.md +25 -14
  18. data/Rakefile +0 -8
  19. data/Tiltfile +91 -0
  20. data/bin/bundle +123 -0
  21. data/bin/docker-clean +8 -0
  22. data/bin/rake +29 -0
  23. data/bin/rspec +29 -0
  24. data/bin/rubocop +29 -0
  25. data/docker-compose.yml +25 -0
  26. data/examples/extract_and_colorize.rb +0 -13
  27. data/examples/geometries.rb +14 -14
  28. data/examples/ogr_layer_to_layer.rb +1 -3
  29. data/examples/raster_erasing.rb +1 -0
  30. data/examples/remove_small_polygons.rb +1 -1
  31. data/examples/testing_gdal.rb +20 -17
  32. data/examples/warping.rb +9 -7
  33. data/ffi-gdal.gemspec +12 -6
  34. data/lib/ext/ffi_library_function_checks.rb +2 -2
  35. data/lib/ext/to_bool.rb +5 -3
  36. data/lib/ffi/cpl/conv.rb +27 -25
  37. data/lib/ffi/cpl/error.rb +19 -20
  38. data/lib/ffi/cpl/hash_set.rb +4 -4
  39. data/lib/ffi/cpl/http.rb +3 -3
  40. data/lib/ffi/cpl/http_result.rb +8 -8
  41. data/lib/ffi/cpl/list.rb +1 -1
  42. data/lib/ffi/cpl/mime_part.rb +2 -2
  43. data/lib/ffi/cpl/minixml.rb +7 -7
  44. data/lib/ffi/cpl/progress.rb +8 -8
  45. data/lib/ffi/cpl/quad_tree.rb +14 -14
  46. data/lib/ffi/cpl/rect_obj.rb +3 -3
  47. data/lib/ffi/cpl/string.rb +17 -20
  48. data/lib/ffi/cpl/vsi.rb +13 -13
  49. data/lib/ffi/cpl/xml_node.rb +3 -3
  50. data/lib/ffi/extensions/gdal/extensions/all.rb +4 -0
  51. data/lib/ffi/extensions/gdal/extensions/version.rb +9 -0
  52. data/lib/ffi/extensions/gdal/extensions.rb +12 -0
  53. data/lib/ffi/extensions/rttopo/gbox.rb +19 -0
  54. data/lib/ffi/extensions/rttopo/geom.rb +16 -0
  55. data/lib/ffi/extensions/rttopo.rb +41 -0
  56. data/lib/ffi/gdal/alg.rb +277 -277
  57. data/lib/ffi/gdal/color_entry.rb +3 -3
  58. data/lib/ffi/gdal/gcp.rb +6 -6
  59. data/lib/ffi/gdal/gdal.rb +349 -349
  60. data/lib/ffi/gdal/grid.rb +134 -134
  61. data/lib/ffi/gdal/grid_data_metrics_options.rb +4 -4
  62. data/lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb +9 -9
  63. data/lib/ffi/gdal/grid_moving_average_options.rb +4 -4
  64. data/lib/ffi/gdal/grid_nearest_neighbor_options.rb +3 -3
  65. data/lib/ffi/gdal/matching.rb +3 -3
  66. data/lib/ffi/gdal/rpc_info.rb +17 -17
  67. data/lib/ffi/gdal/transformer_info.rb +4 -4
  68. data/lib/ffi/gdal/version.rb +1 -1
  69. data/lib/ffi/gdal/vrt.rb +39 -39
  70. data/lib/ffi/gdal/warp_options.rb +34 -34
  71. data/lib/ffi/gdal/warper.rb +90 -90
  72. data/lib/ffi/gdal.rb +2 -31
  73. data/lib/ffi/ogr/api.rb +175 -167
  74. data/lib/ffi/ogr/contour_writer_info.rb +4 -4
  75. data/lib/ffi/ogr/core.rb +107 -107
  76. data/lib/ffi/ogr/envelope.rb +3 -3
  77. data/lib/ffi/ogr/envelope_3d.rb +5 -5
  78. data/lib/ffi/ogr/featurestyle.rb +3 -3
  79. data/lib/ffi/ogr/field.rb +22 -22
  80. data/lib/ffi/ogr/geocoding.rb +4 -4
  81. data/lib/ffi/ogr/srs_api.rb +154 -155
  82. data/lib/ffi/ogr/style_param.rb +3 -3
  83. data/lib/ffi/ogr/style_value.rb +4 -4
  84. data/lib/gdal/color_entry.rb +1 -5
  85. data/lib/gdal/color_interpretation.rb +7 -3
  86. data/lib/gdal/color_table.rb +46 -27
  87. data/lib/gdal/cpl_error_handler.rb +26 -6
  88. data/lib/gdal/data_type.rb +10 -3
  89. data/lib/gdal/dataset.rb +171 -85
  90. data/lib/gdal/dataset_mixins/algorithm_methods.rb +44 -44
  91. data/lib/gdal/dataset_mixins/matching.rb +1 -1
  92. data/lib/gdal/dataset_mixins/warp_methods.rb +4 -2
  93. data/lib/gdal/driver.rb +38 -21
  94. data/lib/gdal/environment_methods.rb +6 -6
  95. data/lib/gdal/extensions/all.rb +3 -0
  96. data/lib/gdal/{color_entry_mixins → extensions/color_entry}/extensions.rb +4 -1
  97. data/lib/gdal/{color_table_mixins → extensions/color_table}/extensions.rb +3 -0
  98. data/lib/gdal/extensions/dataset/extensions.rb +205 -0
  99. data/lib/gdal/{driver_mixins → extensions/driver}/extensions.rb +6 -2
  100. data/lib/gdal/{geo_transform_mixins → extensions/geo_transform}/extensions.rb +10 -8
  101. data/lib/gdal/{gridder → extensions/gridder}/point_extracting.rb +7 -5
  102. data/lib/gdal/{gridder.rb → extensions/gridder.rb} +33 -33
  103. data/lib/gdal/{gridder_options.rb → extensions/gridder_options.rb} +13 -14
  104. data/lib/gdal/{raster_attribute_table_mixins → extensions/raster_attribute_table}/extensions.rb +8 -6
  105. data/lib/gdal/{raster_band_mixins → extensions/raster_band}/algorithm_extensions.rb +8 -6
  106. data/lib/gdal/{raster_band_mixins → extensions/raster_band}/coloring_extensions.rb +6 -4
  107. data/lib/gdal/{raster_band_mixins → extensions/raster_band}/extensions.rb +9 -5
  108. data/lib/gdal/{raster_band_mixins → extensions/raster_band}/io_extensions.rb +18 -14
  109. data/lib/gdal/{raster_band_classifier.rb → extensions/raster_band_classifier.rb} +3 -5
  110. data/lib/gdal/geo_transform.rb +1 -6
  111. data/lib/gdal/grid.rb +3 -2
  112. data/lib/gdal/grid_algorithms.rb +9 -9
  113. data/lib/gdal/internal_helpers.rb +46 -9
  114. data/lib/gdal/major_object.rb +11 -3
  115. data/lib/gdal/options.rb +26 -32
  116. data/lib/gdal/raster_attribute_table.rb +63 -37
  117. data/lib/gdal/raster_band.rb +164 -116
  118. data/lib/gdal/raster_band_mixins/algorithm_methods.rb +26 -25
  119. data/lib/gdal/rpc_info.rb +3 -2
  120. data/lib/gdal/transformers/approximate_transformer.rb +12 -3
  121. data/lib/gdal/transformers/base_general_image_projection_transformer.rb +15 -2
  122. data/lib/gdal/transformers/gcp_transformer.rb +27 -19
  123. data/lib/gdal/transformers/general_image_projection_transformer.rb +8 -6
  124. data/lib/gdal/transformers/general_image_projection_transformer2.rb +9 -6
  125. data/lib/gdal/transformers/general_image_projection_transformer3.rb +6 -2
  126. data/lib/gdal/transformers/geolocation_transformer.rb +12 -4
  127. data/lib/gdal/transformers/reprojection_transformer.rb +11 -3
  128. data/lib/gdal/transformers/rpc_transformer.rb +11 -2
  129. data/lib/gdal/transformers/tps_transformer.rb +12 -4
  130. data/lib/gdal/version_info.rb +2 -2
  131. data/lib/gdal/virtual_dataset.rb +2 -0
  132. data/lib/gdal/warp_operation.rb +65 -54
  133. data/lib/gdal/warp_options.rb +9 -11
  134. data/lib/ogr/coordinate_transformation.rb +23 -9
  135. data/lib/ogr/data_source.rb +68 -37
  136. data/lib/ogr/driver.rb +18 -17
  137. data/lib/ogr/envelope.rb +0 -3
  138. data/lib/ogr/error_handling.rb +22 -24
  139. data/lib/ogr/extensions/all.rb +3 -0
  140. data/lib/ogr/{data_source_mixins → extensions/data_source}/capability_methods.rb +2 -0
  141. data/lib/ogr/extensions/data_source/data_source_extensions.rb +16 -0
  142. data/lib/ogr/{driver_mixins → extensions/driver}/capability_methods.rb +5 -1
  143. data/lib/ogr/extensions/envelope/extensions.rb +114 -0
  144. data/lib/ogr/extensions/feature/extensions.rb +87 -0
  145. data/lib/ogr/extensions/feature_definition/extensions.rb +43 -0
  146. data/lib/ogr/extensions/geometries/point/extensions.rb +19 -0
  147. data/lib/ogr/extensions/geometry/container_mixins.rb +56 -0
  148. data/lib/ogr/extensions/geometry/ewkb_io_extensions.rb +44 -0
  149. data/lib/ogr/extensions/geometry/ewkb_record.rb +94 -0
  150. data/lib/ogr/{geometry_mixins → extensions/geometry}/extensions.rb +16 -9
  151. data/lib/ogr/extensions/geometry/rttopo_extensions.rb +48 -0
  152. data/lib/ogr/extensions/geometry/wkb_record.rb +63 -0
  153. data/lib/ogr/extensions/geometry_types/curve/extensions.rb +68 -0
  154. data/lib/ogr/{layer_mixins → extensions/layer}/capability_methods.rb +4 -0
  155. data/lib/ogr/{layer_mixins → extensions/layer}/extensions.rb +11 -6
  156. data/lib/ogr/extensions/spatial_reference/extensions.rb +38 -0
  157. data/lib/ogr/extensions/spatial_reference/initializers.rb +138 -0
  158. data/lib/ogr/extensions/style_table/extensions.rb +31 -0
  159. data/lib/ogr/feature.rb +173 -88
  160. data/lib/ogr/feature_definition.rb +53 -45
  161. data/lib/ogr/field.rb +17 -19
  162. data/lib/ogr/field_definition.rb +30 -18
  163. data/lib/ogr/geocoder.rb +11 -4
  164. data/lib/ogr/geometries/line_string.rb +1 -0
  165. data/lib/ogr/geometries/line_string_25d.rb +0 -9
  166. data/lib/ogr/geometries/linear_ring.rb +2 -2
  167. data/lib/ogr/geometries/point.rb +0 -9
  168. data/lib/ogr/geometry.rb +116 -49
  169. data/lib/ogr/geometry_field_definition.rb +31 -15
  170. data/lib/ogr/geometry_types/container.rb +26 -28
  171. data/lib/ogr/geometry_types/curve.rb +5 -61
  172. data/lib/ogr/geometry_types/surface.rb +1 -1
  173. data/lib/ogr/internal_helpers.rb +2 -2
  174. data/lib/ogr/layer.rb +12 -10
  175. data/lib/ogr/layer_mixins/ogr_feature_methods.rb +39 -27
  176. data/lib/ogr/layer_mixins/ogr_field_methods.rb +66 -50
  177. data/lib/ogr/layer_mixins/ogr_layer_method_methods.rb +17 -8
  178. data/lib/ogr/layer_mixins/ogr_query_filter_methods.rb +7 -6
  179. data/lib/ogr/layer_mixins/ogr_sql_methods.rb +15 -7
  180. data/lib/ogr/spatial_reference.rb +79 -42
  181. data/lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb +149 -118
  182. data/lib/ogr/spatial_reference_mixins/exporters.rb +87 -51
  183. data/lib/ogr/spatial_reference_mixins/importers.rb +88 -43
  184. data/lib/ogr/spatial_reference_mixins/morphers.rb +12 -8
  185. data/lib/ogr/spatial_reference_mixins/parameter_getter_setters.rb +27 -13
  186. data/lib/ogr/style_table.rb +15 -5
  187. data/lib/ogr/style_tool.rb +29 -15
  188. data/lib/ogr.rb +1 -0
  189. data/rakelib/docker.rake +10 -0
  190. data/sorbet/rbi/hidden-definitions/errors.txt +21790 -0
  191. data/tilt/gdal2.yml +22 -0
  192. data/tilt/gdal3.yml +22 -0
  193. metadata +116 -280
  194. data/History.md +0 -360
  195. data/lib/ext/error_symbols.rb +0 -7
  196. data/lib/gdal/dataset_mixins/extensions.rb +0 -380
  197. data/lib/gdal/merger.rb +0 -132
  198. data/lib/ogr/data_source_extensions.rb +0 -10
  199. data/lib/ogr/envelope_extensions.rb +0 -110
  200. data/lib/ogr/feature_definition_extensions.rb +0 -39
  201. data/lib/ogr/feature_extensions.rb +0 -87
  202. data/lib/ogr/geometry_mixins/container_mixins.rb +0 -25
  203. data/lib/ogr/spatial_reference_extensions.rb +0 -34
  204. data/lib/ogr/style_table_extensions.rb +0 -26
  205. data/spec/ffi-gdal_spec.rb +0 -24
  206. data/spec/integration/gdal/color_table_info_spec.rb +0 -78
  207. data/spec/integration/gdal/dataset_info_spec.rb +0 -342
  208. data/spec/integration/gdal/driver_info_spec.rb +0 -170
  209. data/spec/integration/gdal/geo_transform_info_spec.rb +0 -226
  210. data/spec/integration/gdal/gridder_spec.rb +0 -331
  211. data/spec/integration/gdal/raster_attribute_table_info_spec.rb +0 -229
  212. data/spec/integration/gdal/raster_band_algorithms_spec.rb +0 -35
  213. data/spec/integration/gdal/raster_band_info_spec.rb +0 -320
  214. data/spec/integration/ogr/layer_spec.rb +0 -95
  215. data/spec/spec_helper.rb +0 -116
  216. data/spec/support/images/123.tiff +0 -0
  217. data/spec/support/images/osgeo/gdal/data/hfa/float-rle.img +0 -0
  218. data/spec/support/images/osgeo/geotiff/GeogToWGS84GeoKey/GeogToWGS84GeoKey5.lgo +0 -31
  219. data/spec/support/images/osgeo/geotiff/GeogToWGS84GeoKey/GeogToWGS84GeoKey5.tif +0 -0
  220. data/spec/support/images/osgeo/geotiff/GeogToWGS84GeoKey/GeogToWGS84GeoKey5.tif.msk +0 -0
  221. data/spec/support/images/osgeo/geotiff/GeogToWGS84GeoKey/GeogToWGS84GeoKey5.txt +0 -10
  222. data/spec/support/images/osgeo/geotiff/gdal_eg/cea.tif +0 -0
  223. data/spec/support/images/osgeo/geotiff/gdal_eg/cea.txt +0 -84
  224. data/spec/support/images/osgeo/geotiff/zi_imaging/image0.lgo +0 -45
  225. data/spec/support/images/osgeo/geotiff/zi_imaging/image0.tif +0 -0
  226. data/spec/support/integration_help.rb +0 -34
  227. data/spec/support/shapefiles/states_21basic/states.dbf +0 -0
  228. data/spec/support/shapefiles/states_21basic/states.prj +0 -1
  229. data/spec/support/shapefiles/states_21basic/states.sbn +0 -0
  230. data/spec/support/shapefiles/states_21basic/states.sbx +0 -0
  231. data/spec/support/shapefiles/states_21basic/states.shp +0 -0
  232. data/spec/support/shapefiles/states_21basic/states.shp.xml +0 -3
  233. data/spec/support/shapefiles/states_21basic/states.shx +0 -0
  234. data/spec/support/shared_contexts.rb +0 -28
  235. data/spec/support/shared_examples/gdal/major_object_examples.rb +0 -55
  236. data/spec/support/shared_examples/ogr/a_25d_geometry.rb +0 -9
  237. data/spec/support/shared_examples/ogr/a_container_geometry.rb +0 -49
  238. data/spec/support/shared_examples/ogr/a_geometry.rb +0 -406
  239. data/spec/support/shared_examples/ogr/a_line_string.rb +0 -18
  240. data/spec/support/test_style_table.txt +0 -3
  241. data/spec/support/worldfiles/SR_50M/SR_50M.VERSION.txt +0 -1
  242. data/spec/support/worldfiles/SR_50M/SR_50M.prj +0 -1
  243. data/spec/support/worldfiles/SR_50M/SR_50M.tfw +0 -6
  244. data/spec/support/worldfiles/SR_50M/SR_50M.tif +0 -0
  245. data/spec/unit/ext/error_symbols_spec.rb +0 -69
  246. data/spec/unit/ext/numeric_as_data_type_spec.rb +0 -115
  247. data/spec/unit/ffi/gdal_spec.rb +0 -73
  248. data/spec/unit/gdal/color_entry_spec.rb +0 -8
  249. data/spec/unit/gdal/color_interpretation_spec.rb +0 -8
  250. data/spec/unit/gdal/color_table_mixins/extensions_spec.rb +0 -62
  251. data/spec/unit/gdal/color_table_spec.rb +0 -146
  252. data/spec/unit/gdal/data_type_spec.rb +0 -74
  253. data/spec/unit/gdal/dataset_mixins/warp_methods_spec.rb +0 -55
  254. data/spec/unit/gdal/dataset_spec.rb +0 -148
  255. data/spec/unit/gdal/driver_mixins/extensions_spec.rb +0 -24
  256. data/spec/unit/gdal/driver_spec.rb +0 -51
  257. data/spec/unit/gdal/environment_methods_spec.rb +0 -8
  258. data/spec/unit/gdal/geo_transform_mixins/extensions_spec.rb +0 -69
  259. data/spec/unit/gdal/geo_transform_spec.rb +0 -265
  260. data/spec/unit/gdal/grid_spec.rb +0 -98
  261. data/spec/unit/gdal/gridder/point_extracting_spec.rb +0 -101
  262. data/spec/unit/gdal/gridder_options_spec.rb +0 -185
  263. data/spec/unit/gdal/gridder_spec.rb +0 -182
  264. data/spec/unit/gdal/internal_helpers_spec.rb +0 -278
  265. data/spec/unit/gdal/major_object_spec.rb +0 -10
  266. data/spec/unit/gdal/options_spec.rb +0 -33
  267. data/spec/unit/gdal/raster_attribute_table_spec.rb +0 -7
  268. data/spec/unit/gdal/raster_band_classifier_spec.rb +0 -260
  269. data/spec/unit/gdal/raster_band_mixins/extensions_spec.rb +0 -73
  270. data/spec/unit/gdal/raster_band_mixins/io_extensions_spec.rb +0 -135
  271. data/spec/unit/gdal/raster_band_spec.rb +0 -8
  272. data/spec/unit/gdal/rpc_info_spec.rb +0 -8
  273. data/spec/unit/gdal/version_info_spec.rb +0 -10
  274. data/spec/unit/gdal/virtual_dataset_spec.rb +0 -34
  275. data/spec/unit/gdal/warp_operation_spec.rb +0 -8
  276. data/spec/unit/gdal/warp_options_spec.rb +0 -338
  277. data/spec/unit/ogr/coordinate_transformation_spec.rb +0 -104
  278. data/spec/unit/ogr/data_source_mixins/capability_methods_spec.rb +0 -32
  279. data/spec/unit/ogr/data_source_spec.rb +0 -223
  280. data/spec/unit/ogr/driver_mixins/capability_methods_spec.rb +0 -20
  281. data/spec/unit/ogr/driver_spec.rb +0 -152
  282. data/spec/unit/ogr/envelope_spec.rb +0 -324
  283. data/spec/unit/ogr/feature_definition_spec.rb +0 -296
  284. data/spec/unit/ogr/feature_extensions_spec.rb +0 -90
  285. data/spec/unit/ogr/feature_spec.rb +0 -363
  286. data/spec/unit/ogr/field_definition_spec.rb +0 -118
  287. data/spec/unit/ogr/field_spec.rb +0 -195
  288. data/spec/unit/ogr/geometries/geometry_collection_25d_spec.rb +0 -25
  289. data/spec/unit/ogr/geometries/geometry_collection_spec.rb +0 -188
  290. data/spec/unit/ogr/geometries/line_string_25d_spec.rb +0 -25
  291. data/spec/unit/ogr/geometries/line_string_spec.rb +0 -107
  292. data/spec/unit/ogr/geometries/linear_ring_spec.rb +0 -92
  293. data/spec/unit/ogr/geometries/multi_line_string_25d_spec.rb +0 -25
  294. data/spec/unit/ogr/geometries/multi_line_string_spec.rb +0 -16
  295. data/spec/unit/ogr/geometries/multi_point_25d_spec.rb +0 -25
  296. data/spec/unit/ogr/geometries/multi_point_spec.rb +0 -16
  297. data/spec/unit/ogr/geometries/multi_polygon_25d_spec.rb +0 -25
  298. data/spec/unit/ogr/geometries/multi_polygon_spec.rb +0 -43
  299. data/spec/unit/ogr/geometries/none_geometry_spec.rb +0 -14
  300. data/spec/unit/ogr/geometries/point_25d_spec.rb +0 -25
  301. data/spec/unit/ogr/geometries/point_spec.rb +0 -307
  302. data/spec/unit/ogr/geometries/polygon_25d_spec.rb +0 -25
  303. data/spec/unit/ogr/geometries/polygon_spec.rb +0 -19
  304. data/spec/unit/ogr/geometries/unknown_geometry_spec.rb +0 -12
  305. data/spec/unit/ogr/geometry_field_definition_spec.rb +0 -73
  306. data/spec/unit/ogr/geometry_spec.rb +0 -711
  307. data/spec/unit/ogr/internal_helpers_spec.rb +0 -70
  308. data/spec/unit/ogr/layer_mixins/capability_methods_spec.rb +0 -90
  309. data/spec/unit/ogr/layer_mixins/ogr_feature_methods_spec.rb +0 -155
  310. data/spec/unit/ogr/layer_mixins/ogr_field_methods_spec.rb +0 -434
  311. data/spec/unit/ogr/layer_mixins/ogr_layer_method_methods_spec.rb +0 -22
  312. data/spec/unit/ogr/layer_mixins/ogr_query_filter_methods_spec.rb +0 -44
  313. data/spec/unit/ogr/layer_mixins/ogr_sql_methods_spec.rb +0 -14
  314. data/spec/unit/ogr/layer_spec.rb +0 -98
  315. data/spec/unit/ogr/spatial_reference_mixins/coordinate_system_getter_setters_spec.rb +0 -48
  316. data/spec/unit/ogr/spatial_reference_mixins/exporters_spec.rb +0 -151
  317. data/spec/unit/ogr/spatial_reference_mixins/importers_spec.rb +0 -40
  318. data/spec/unit/ogr/spatial_reference_mixins/morphers_spec.rb +0 -38
  319. data/spec/unit/ogr/spatial_reference_mixins/parameter_getter_setters_spec.rb +0 -105
  320. data/spec/unit/ogr/spatial_reference_mixins/type_checks_spec.rb +0 -159
  321. data/spec/unit/ogr/spatial_reference_spec.rb +0 -44
  322. data/spec/unit/ogr/style_table_spec.rb +0 -108
  323. data/spec/unit/ogr/style_tool_spec.rb +0 -159
  324. data/spec/unit/version_info_spec.rb +0 -50
data/Dockerfile.gdal3 ADDED
@@ -0,0 +1,73 @@
1
+ # syntax=docker/dockerfile:1
2
+ FROM osgeo/gdal:ubuntu-small-3.5.0 as base
3
+
4
+ #------------------------------------------------------------------------------
5
+ # Dev setup 1
6
+ #------------------------------------------------------------------------------
7
+ FROM base as ruby_builder
8
+
9
+ RUN apt-get update -yqq \
10
+ && apt-get upgrade -yqq \
11
+ && apt-get install -yqq --no-install-recommends \
12
+ build-essential \
13
+ libffi-dev \
14
+ libgeos-dev \
15
+ libproj-dev \
16
+ libyaml-dev \
17
+ && rm -rf /var/lib/apt/lists/*
18
+
19
+ ENV GEM_HOME /gems
20
+ ENV BUNDLE_SILENCE_ROOT_WARNING=1 \
21
+ BUNDLE_APP_CONFIG="$GEM_HOME"
22
+ ENV PATH $GEM_HOME/bin:$PATH
23
+ RUN mkdir -p "$GEM_HOME" && chmod 777 "$GEM_HOME"
24
+
25
+ COPY --from=ruby:3.1.2 --chown=root /usr/local/bin/* /usr/local/bin/
26
+
27
+ COPY --from=ruby:3.1.2 --chown=root /usr/local/lib/libruby.so.3.1.2 /usr/local/lib/
28
+ RUN ln -s /usr/local/lib/libruby.so.3.1.2 /usr/local/lib/libruby.so
29
+
30
+ COPY --from=ruby:3.1.2 --chown=root /usr/local/lib/pkgconfig/ruby-3.1.pc /usr/local/lib/pkgconfig/
31
+ COPY --from=ruby:3.1.2 --chown=root /usr/local/lib/ruby/3.1.0 /usr/local/lib/ruby/3.1.0
32
+ COPY --from=ruby:3.1.2 --chown=root /usr/local/lib/ruby/gems /usr/local/lib/ruby/gems
33
+ COPY --from=ruby:3.1.2 --chown=root /usr/local/lib/ruby/site_ruby /usr/local/lib/ruby/site_ruby
34
+ COPY --from=ruby:3.1.2 --chown=root /usr/local/lib/ruby/vendor_ruby /usr/local/lib/ruby/vendor_ruby
35
+
36
+ COPY --from=ruby:3.1.2 --chown=root /usr/local/include/ruby-3.1.0 /usr/local/include/ruby-3.1.0
37
+
38
+ COPY --from=ruby:3.1.2 --chown=root /usr/local/etc/gemrc /usr/local/etc/gemrc
39
+
40
+ # Link the libraries after copying them over from the ruby image.
41
+ RUN ldconfig
42
+
43
+ RUN gem update --system \
44
+ && gem install bundler
45
+
46
+ #------------------------------------------------------------------------------
47
+ # Dev setup 1
48
+ #------------------------------------------------------------------------------
49
+ FROM ruby_builder as dev_builder
50
+
51
+ RUN apt-get update -yqq \
52
+ && apt-get install -yqq --no-install-recommends \
53
+ git \
54
+ librttopo-dev \
55
+ && apt-get clean \
56
+ && rm -rf /var/lib/apt/lists/*
57
+
58
+ COPY ./ffi-gdal.gemspec /usr/src/ffi-gdal/
59
+ COPY ./lib/ffi/gdal/version.rb /usr/src/ffi-gdal/lib/ffi/gdal/
60
+ COPY ./Gemfile* /usr/src/ffi-gdal/
61
+
62
+ WORKDIR /usr/src/ffi-gdal
63
+
64
+ # Use a docker volume for storing gems
65
+ ENV BUNDLE_PATH /gems
66
+ RUN bundle install
67
+
68
+ #------------
69
+ # Copy over the rest of the lib
70
+ COPY . .
71
+
72
+ CMD ["tail", "-f", "/dev/null"]
73
+ # vim:ft=dockerfile
data/README.md CHANGED
@@ -1,16 +1,13 @@
1
- ffi-gdal
2
- ========
1
+ # ffi-gdal
3
2
 
4
3
  Ruby wrapper around GDAL, using FFI, along with some helper methods.
5
4
 
6
- Installation
7
- ------------
5
+ ## Installation
8
6
 
9
7
  For Ubuntu you need to install libgdal-dev via:
10
8
 
11
9
  sudo apt-get install libgdal-dev
12
10
 
13
-
14
11
  Add this line to your application's Gemfile:
15
12
 
16
13
  gem 'ffi-gdal'
@@ -23,12 +20,11 @@ Or install it yourself as:
23
20
 
24
21
  $ gem install ffi-gdal
25
22
 
26
- Usage
27
- -----
23
+ ## Usage
28
24
 
29
25
  ffi-gdal provides two interfaces, really: the direct FFI wrapper around GDAL's
30
26
  C API, and a Ruby-fied interface that uses the FFI wrapper to make use more
31
- like using an object-oriented library instead of a functional one. Most likely
27
+ like using an object-oriented library instead of a functional one. Most likely
32
28
  you'll just want to use the Ruby-fied library, but if for some reason that
33
29
  doesn't get you what you want, direct access to the FFI wrapper (which is
34
30
  really just direct access to the C API) is available.
@@ -49,17 +45,32 @@ For classes that are enabled with logging capabilities, you can turn logging on
49
45
  and off like `GDAL::RasterBand.logging_enabled = true`. If you're using ffi-gdal
50
46
  in Rails, you can `GDAL::Logger.logger = Rails.logger`.
51
47
 
52
- Additional Libraries
53
- --------------------
48
+ ## Additional Libraries
54
49
 
55
- [ffi-gdal-extensions](https://bitbucket.org/agrian/ffi-gdal-extensions) provides
50
+ [ffi-gdal-extensions](https://github.com/agrian-inc/ffi-gdal-extensions) provides
56
51
  additional functionality, not provided in this core, GDAL-wrapper library.
57
52
 
58
- Contributing
59
- ------------
53
+ ## Contributing
60
54
 
61
- 1. Fork it ( https://bitbucket.org/agrian/ffi-gdal/fork )
55
+ 1. Fork it ( https://github.com/agrian-inc/ffi-gdal/fork )
62
56
  2. Create your feature branch (`git checkout -b my-new-feature`)
63
57
  3. Commit your changes (`git commit -am 'Add some feature'`)
64
58
  4. Push to the branch (`git push origin my-new-feature`)
65
59
  5. Create a new Pull Request
60
+
61
+ ### Docker
62
+
63
+ There are a couple `Dockerfile`s that allow doing development/testing against
64
+ GDAL 2.4 and 3.x.
65
+
66
+ ...for GDAL2:
67
+
68
+ ```sh
69
+ docker-compose run gdal2 bundle exec rake spec
70
+ ```
71
+
72
+ ...for GDAL3:
73
+
74
+ ```sh
75
+ docker-compose run gdal3 bundle exec rake spec
76
+ ```
data/Rakefile CHANGED
@@ -2,14 +2,6 @@
2
2
 
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
- require 'rubocop/rake_task'
6
-
7
- RuboCop::RakeTask.new do |t|
8
- t.fail_on_error = false
9
- t.formatters = ['RuboCop::Formatter::CheckstyleFormatter']
10
- t.options = %w[--out tmp/checkstyle.xml]
11
- t.requires = ['rubocop/formatter/checkstyle_formatter']
12
- end
13
5
 
14
6
  namespace :spec do
15
7
  RSpec::Core::RakeTask.new(:unit) do |t|
data/Tiltfile ADDED
@@ -0,0 +1,91 @@
1
+ # ╭─────────────────────────────────────────────────────────╮
2
+ # │ Enforce a minimum Tilt version, so labels are supported │
3
+ # │ https://docs.tilt.dev/api.html#api.version_settings │
4
+ # ╰─────────────────────────────────────────────────────────╯
5
+ version_settings(constraint='>=0.22.1')
6
+
7
+ docker_build(
8
+ "ffi-gdal_gdal2",
9
+ context='.',
10
+ dockerfile='./Dockerfile.gdal2',
11
+ build_args={"GDAL_VERSION": "2.4.4"},
12
+ ignore=[
13
+ "tmp/*",
14
+ "coverage/",
15
+ "spec/examples.txt",
16
+ "Gemfile.lock"
17
+ ],
18
+ live_update=[
19
+ sync('.', '/usr/src/ffi-gdal'),
20
+ run('bundle install', trigger='ffi-gdal.gemspec'), restart_container()
21
+ ]
22
+ )
23
+
24
+ docker_build(
25
+ "ffi-gdal_gdal3",
26
+ context='.',
27
+ dockerfile='./Dockerfile.gdal3',
28
+ ignore=[
29
+ "tmp/*",
30
+ "coverage/",
31
+ "spec/examples.txt",
32
+ "Gemfile.lock"
33
+ ],
34
+ live_update=[
35
+ sync('.', '/usr/src/ffi-gdal'),
36
+ run('bundle install', trigger='ffi-gdal.gemspec'), restart_container()
37
+ ]
38
+ )
39
+
40
+ # ╓────────────╖
41
+ # ║ UI Buttons ║
42
+ # ╙────────────╜
43
+ load('ext://uibutton', 'cmd_button')
44
+
45
+ # ╭──────────────────────────────────────────────────────╮
46
+ # │ Make the same buttons for gdal2 and gdal3 containers │
47
+ # ╰──────────────────────────────────────────────────────╯
48
+ for gdal_version in ['gdal2', 'gdal3']:
49
+ cmd_button(gdal_version + ":bundle install",
50
+ argv=['docker', 'compose', 'run', gdal_version, 'bin/bundle', 'install'],
51
+ resource=gdal_version,
52
+ icon_name='install_desktop',
53
+ text='bundle install'
54
+ )
55
+ cmd_button(gdal_version + ":bundle update",
56
+ argv=['docker', 'compose', 'run', gdal_version, 'bin/bundle', 'update'],
57
+ resource=gdal_version,
58
+ icon_name='refresh',
59
+ text='bundle update'
60
+ )
61
+ cmd_button(gdal_version + ":rake spec",
62
+ argv=['docker', 'compose', 'run', gdal_version, 'bin/rake', 'spec'],
63
+ resource=gdal_version,
64
+ icon_name='bolt',
65
+ text='rake spec'
66
+ )
67
+ cmd_button(gdal_version + ":rubocop",
68
+ argv=['docker', 'compose', 'run', gdal_version, 'bin/rubocop'],
69
+ resource=gdal_version,
70
+ icon_name='search_check',
71
+ text='rubocop'
72
+ )
73
+ cmd_button(gdal_version + ":rubocop fix (safe)",
74
+ argv=['docker', 'compose', 'run', gdal_version, 'bin/rubocop', '-a'],
75
+ resource=gdal_version,
76
+ icon_name='done_outline',
77
+ text='rubocop -a'
78
+ )
79
+ cmd_button(gdal_version + ":rubocop fix (all)",
80
+ argv=['docker', 'compose', 'run', gdal_version, 'bin/rubocop', '-A'],
81
+ resource=gdal_version,
82
+ icon_name='done_all',
83
+ text='rubocop -A'
84
+ )
85
+
86
+ docker_compose("docker-compose.yml")
87
+
88
+ dc_resource('gdal2')
89
+ dc_resource('gdal3')
90
+
91
+ # vim:ft=Tiltfile syntax=python
data/bin/bundle ADDED
@@ -0,0 +1,123 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'bundle' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require 'rubygems'
12
+
13
+ m = Module.new do
14
+ module_function
15
+
16
+ def invoked_as_script?
17
+ File.expand_path($PROGRAM_NAME) == File.expand_path(__FILE__)
18
+ end
19
+
20
+ def env_var_version
21
+ ENV.fetch('BUNDLER_VERSION', nil)
22
+ end
23
+
24
+ def cli_arg_version
25
+ return unless invoked_as_script? # don't want to hijack other binstubs
26
+ return unless 'update'.start_with?(ARGV.first || ' ') # must be running `bundle update`
27
+
28
+ bundler_version = nil
29
+ update_index = nil
30
+ ARGV.each_with_index do |a, i|
31
+ bundler_version = a if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
32
+ next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/o
33
+
34
+ bundler_version = Regexp.last_match(1)
35
+ update_index = i
36
+ end
37
+ bundler_version
38
+ end
39
+
40
+ def gemfile
41
+ gemfile = ENV.fetch('BUNDLE_GEMFILE', nil)
42
+ return gemfile if gemfile && !gemfile.empty?
43
+
44
+ File.expand_path('../Gemfile', __dir__)
45
+ end
46
+
47
+ def lockfile
48
+ lockfile =
49
+ case File.basename(gemfile)
50
+ when 'gems.rb' then gemfile.sub(/\.rb$/, gemfile)
51
+ else "#{gemfile}.lock"
52
+ end
53
+ File.expand_path(lockfile)
54
+ end
55
+
56
+ def lockfile_version
57
+ return unless File.file?(lockfile)
58
+
59
+ lockfile_contents = File.read(lockfile)
60
+ return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/o
61
+
62
+ Regexp.last_match(1)
63
+ end
64
+
65
+ def bundler_requirement
66
+ @bundler_requirement ||=
67
+ env_var_version || cli_arg_version ||
68
+ bundler_requirement_for(lockfile_version)
69
+ end
70
+
71
+ def bundler_requirement_for(version)
72
+ return "#{Gem::Requirement.default}.a" unless version
73
+
74
+ bundler_gem_version = Gem::Version.new(version)
75
+
76
+ requirement = bundler_gem_version.approximate_recommendation
77
+
78
+ return requirement unless Gem.rubygems_version < Gem::Version.new('2.7.0')
79
+
80
+ requirement += '.a' if bundler_gem_version.prerelease?
81
+
82
+ requirement
83
+ end
84
+
85
+ def load_bundler!
86
+ ENV['BUNDLE_GEMFILE'] ||= gemfile
87
+
88
+ activate_bundler
89
+ end
90
+
91
+ def activate_bundler
92
+ gem_error = activation_error_handling do
93
+ gem 'bundler', bundler_requirement
94
+ end
95
+ return if gem_error.nil?
96
+
97
+ require_error = activation_error_handling do
98
+ require 'bundler/version'
99
+ end
100
+ if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
101
+ return
102
+ end
103
+
104
+ warn <<~MSG
105
+ Activating bundler (#{bundler_requirement}) failed:
106
+ #{gem_error.message}
107
+
108
+ To install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`
109
+ MSG
110
+ exit 42
111
+ end
112
+
113
+ def activation_error_handling
114
+ yield
115
+ nil
116
+ rescue StandardError, LoadError => e
117
+ e
118
+ end
119
+ end
120
+
121
+ m.load_bundler!
122
+
123
+ load Gem.bin_path('bundler', 'bundle') if m.invoked_as_script?
data/bin/docker-clean ADDED
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ # ╭───────────────────────────────────────────────────────────────────────╮
4
+ # │Using Tilt ends up generating a bunch of local images; I thought Tilt │
5
+ # │is supposed to be resposible for cleaning these up, but it doesn't look│
6
+ # │like it does? │
7
+ # ╰───────────────────────────────────────────────────────────────────────╯
8
+ docker images -a | grep 'gdal' | awk '{print $3}' | xargs docker rmi
data/bin/rake ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rake' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require 'pathname'
12
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path('bundle', __dir__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if /This file was generated by Bundler/.match?(File.read(bundle_binstub, 300))
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require 'rubygems'
27
+ require 'bundler/setup'
28
+
29
+ load Gem.bin_path('rake', 'rake')
data/bin/rspec ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require 'pathname'
12
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path('bundle', __dir__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if /This file was generated by Bundler/.match?(File.read(bundle_binstub, 300))
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require 'rubygems'
27
+ require 'bundler/setup'
28
+
29
+ load Gem.bin_path('rspec-core', 'rspec')
data/bin/rubocop ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rubocop' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require 'pathname'
12
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path('bundle', __dir__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if /This file was generated by Bundler/.match?(File.read(bundle_binstub, 300))
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require 'rubygems'
27
+ require 'bundler/setup'
28
+
29
+ load Gem.bin_path('rubocop', 'rubocop')
@@ -0,0 +1,25 @@
1
+ ---
2
+ version: "3"
3
+
4
+ services:
5
+ gdal2:
6
+ build:
7
+ context: .
8
+ args:
9
+ GDAL_VERSION: "2.4.4"
10
+ dockerfile: Dockerfile.gdal2
11
+ volumes:
12
+ - .:/usr/src/ffi-gdal
13
+ - gem_cache2:/gems
14
+
15
+ gdal3:
16
+ build:
17
+ context: .
18
+ dockerfile: Dockerfile.gdal3
19
+ volumes:
20
+ - .:/usr/src/ffi-gdal
21
+ - gem_cache3:/gems
22
+
23
+ volumes:
24
+ gem_cache2:
25
+ gem_cache3:
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'bundler/setup'
4
- require 'pry'
5
4
  require 'ffi-gdal'
6
5
 
7
6
  GDAL::Logger.logging_enabled = true
@@ -40,18 +39,6 @@ floyd.extract_ndvi('ndvi_uint16.tif', band_order: %i[nir red green blue],
40
39
  remove_negatives: true,
41
40
  photometric: 'PALETTE').close
42
41
 
43
- # GNDVI as Byte
44
- floyd.extract_gndvi('gndvi_byte.tif', band_order: %i[nir red green blue],
45
- data_type: :GDT_Byte,
46
- remove_negatives: true,
47
- photometric: 'PALETTE').close
48
-
49
- # GNDVI as UInt16
50
- floyd.extract_gndvi('gndvi_uint16.tif', band_order: %i[nir red green blue],
51
- data_type: :GDT_UInt16,
52
- remove_negatives: true,
53
- photometric: 'PALETTE').close
54
-
55
42
  #---
56
43
  # Colorize after extraction...
57
44
  #---
@@ -1,31 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'bundler/setup'
4
- require 'pry'
5
4
  require 'ffi-gdal'
5
+ require 'ogr'
6
6
 
7
- data_source = OGR::DataSource.open('spec/support/shapefiles/states_21basic/states.shp', 'r')
7
+ _data_source = OGR::DataSource.open('spec/support/shapefiles/states_21basic/states.shp', 'r')
8
8
 
9
9
  point_wkt = 'POINT (1 2)'
10
- point = OGR::Geometry.create_from_wkt(point_wkt)
11
- other_point_wkt = 'POINT (1 2)'
12
- other_point = OGR::Geometry.create_from_wkt(point_wkt)
10
+ _point = OGR::Geometry.create_from_wkt(point_wkt)
11
+ _other_point_wkt = 'POINT (1 2)'
12
+ _other_point = OGR::Geometry.create_from_wkt(point_wkt)
13
13
 
14
14
  line_string_wkt = 'LINESTRING (1 2, 10 30, 40 40, 1 2)'
15
- line_string = OGR::Geometry.create_from_wkt(line_string_wkt)
15
+ _line_string = OGR::Geometry.create_from_wkt(line_string_wkt)
16
16
  other_line_string_wkt = 'LINESTRING (10 10, 0 30, 40 10)'
17
- other_line_string = OGR::Geometry.create_from_wkt(other_line_string_wkt)
17
+ _other_line_string = OGR::Geometry.create_from_wkt(other_line_string_wkt)
18
18
 
19
19
  polygon_wkt = 'POLYGON ((0 0,4 0,4 4,0 4,0 0), (1 1, 2 1, 2 2, 1 1))'
20
- polygon = OGR::Geometry.create_from_wkt(polygon_wkt)
20
+ _polygon = OGR::Geometry.create_from_wkt(polygon_wkt)
21
21
  other_polygon_wkt = 'POLYGON ((1 1,5 1,5 5,1 5,1 1), (10 10, 20 10, 20 20, 10 10))'
22
- other_polygon = OGR::Geometry.create_from_wkt(other_polygon_wkt)
22
+ _other_polygon = OGR::Geometry.create_from_wkt(other_polygon_wkt)
23
23
 
24
24
  multi_point_wkt = 'MULTIPOINT ((10 40), (40 30), (20 20), (30 10))'
25
- multi_point = OGR::Geometry.create_from_wkt(multi_point_wkt)
25
+ _multi_point = OGR::Geometry.create_from_wkt(multi_point_wkt)
26
26
 
27
27
  multi_line_string_wkt = 'MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))'
28
- multi_line_string = OGR::Geometry.create_from_wkt(multi_line_string_wkt)
28
+ _multi_line_string = OGR::Geometry.create_from_wkt(multi_line_string_wkt)
29
29
 
30
30
  multi_polygon_wkt = <<-WKT
31
31
  MULTIPOLYGON (((-120.03296317083633 44.226828996384285, -120.03199741570855 44.230616638863914,
@@ -93,7 +93,7 @@ multi_polygon_wkt = <<-WKT
93
93
  -120.0331825583669 44.22634017780693, -120.03296317083633 44.226828996384285)))
94
94
  WKT
95
95
 
96
- multi_polygon = OGR::Geometry.create_from_wkt(multi_polygon_wkt)
96
+ _multi_polygon = OGR::Geometry.create_from_wkt(multi_polygon_wkt)
97
97
 
98
98
  # point_wkt = 'POINT (1 2)'
99
99
  # point = OGR::Geometry.create_from_wkt(point_wkt)
@@ -112,5 +112,5 @@ multi_polygon = OGR::Geometry.create_from_wkt(multi_polygon_wkt)
112
112
  #
113
113
 
114
114
  geometry = geometry.clone
115
- ls = geometry.to_line_string
116
- mls = geometry.to_multi_line_string
115
+ _ls = geometry.to_line_string
116
+ _mls = geometry.to_multi_line_string
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'bundler/setup'
4
- require 'pry'
5
4
  require 'ffi-gdal'
6
5
 
7
- include GDAL::Logger
6
+ include GDAL::Logger # rubocop:disable Style/MixinUsage
8
7
  GDAL::Logger.logging_enabled = true
9
8
 
10
9
  # http://pcjericks.github.io/py-gdalogr-cookbook/vector_layers.html#create-a-new-layer-from-the-extent-of-an-existing-layer
@@ -14,7 +13,6 @@ data_source = OGR::DataSource.open('../spec/support/shapefiles/states_21basic/st
14
13
  layer = data_source.layer(0)
15
14
  extent = layer.extent
16
15
 
17
- # extent = geometry.envelope.world_to_pixels(floyd.geo_transform)
18
16
  # x_min = extent[:x_origin]
19
17
  # x_max = extent[:x_max]
20
18
  # y_min = extent[:y_origin]
@@ -5,6 +5,7 @@ require 'thor'
5
5
  require 'fileutils'
6
6
  require 'gdal/dataset'
7
7
  require 'gdal/raster_band'
8
+ require 'gdal/raster_band/algorithm_extensions'
8
9
 
9
10
  GDAL::Logger.logging_enabled = true
10
11
 
@@ -11,7 +11,7 @@ GDAL::Logger.logging_enabled = true
11
11
  module Examples
12
12
  class RemoveSmallPolygons < ::Thor
13
13
  desc 'filter SOURCE_PATH DEST_PATH SIZE',
14
- 'Removes polygons from SOURCE that are under SIZE'
14
+ 'Removes polygons from SOURCE that are under SIZE'
15
15
  option :band_number, type: :numeric, default: 1
16
16
  def filter(source_path, dest_path, size)
17
17
  puts "Copying source '#{source_path}' to '#{dest_path}'..."