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
  module OGR
2
4
  module DataSourceMixins
3
5
  # Helper methods for determining the current DataSource's capabilities.
@@ -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
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OGR
2
4
  module DriverMixins
3
5
  # Helper methods for testing capabilities of the current driver.
@@ -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 nil unless @c_struct.is_a? FFI::OGR::Envelope3D
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 nil unless @c_struct.is_a? FFI::OGR::Envelope3D
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
@@ -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: proc { true },
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) },
@@ -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? Fixnum
17
+ elsif driver.is_a? Integer
16
18
  "Driver at index #{driver} not found."
17
19
  end
18
20
 
@@ -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 !@c_pointer.is_a?(FFI::Pointer) || @c_pointer.null?
24
- raise OGR::InvalidFeature, "Unable to create Feature with #{fd_or_pointer}"
25
- end
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(time.zone)
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 !@c_pointer.is_a?(FFI::Pointer) || @c_pointer.null?
23
- raise OGR::InvalidFeatureDefinition, "Unable to create #{self.class.name} from #{name_or_pointer}"
24
- end
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
@@ -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] && @c_struct[:string].null?
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]
@@ -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
- unless @c_pointer.is_a?(FFI::Pointer) && !@c_pointer.null?
21
- raise OGR::InvalidFieldDefinition, "Unable to create #{self.class.name} from #{name_or_pointer}"
22
- end
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!
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../ogr'
2
4
 
3
5
  module OGR
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../geometry_types/container'
2
4
  require_relative '../geometry_types/surface'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'geometry_collection'
2
4
 
3
5
  module OGR
@@ -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(
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'line_string'
2
4
 
3
5
  module OGR
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'line_string'
2
4
 
3
5
  module OGR
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../geometry_types/curve'
2
4
  require_relative '../geometry_types/container'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'multi_line_string'
2
4
 
3
5
  module OGR
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../geometry_types/container'
2
4
 
3
5
  module OGR
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'multi_point'
2
4
 
3
5
  module OGR