ffi-gdal 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +15 -0
  3. data/.github/workflows/codacy.yml +1 -1
  4. data/.github/workflows/dependency-review.yml +1 -1
  5. data/.github/workflows/specs-in-docker.yml +3 -1
  6. data/.prettierrc.yml +4 -0
  7. data/.rubocop.yml +9 -5
  8. data/.rubocop_todo.yml +5 -11
  9. data/.solargraph.yml +13 -0
  10. data/Changelog-0.x.md +229 -174
  11. data/Changelog.md +20 -4
  12. data/Dockerfile.gdal2 +2 -85
  13. data/Gemfile +12 -2
  14. data/LICENSE.txt +1 -1
  15. data/README.md +14 -16
  16. data/Rakefile +6 -6
  17. data/bin/bundle +12 -12
  18. data/bin/rake +6 -6
  19. data/bin/rspec +6 -6
  20. data/bin/rubocop +6 -6
  21. data/examples/extract_and_colorize.rb +15 -15
  22. data/examples/geometries.rb +12 -12
  23. data/examples/gridding.rb +17 -17
  24. data/examples/ogr_layer_to_layer.rb +3 -3
  25. data/examples/raster_erasing.rb +9 -9
  26. data/examples/remove_small_polygons.rb +11 -11
  27. data/examples/testing_gdal.rb +20 -20
  28. data/examples/warping.rb +13 -13
  29. data/ffi-gdal.gemspec +16 -27
  30. data/lib/ext/ffi_library_function_checks.rb +3 -3
  31. data/lib/ext/narray_ext.rb +1 -1
  32. data/lib/ext/to_bool.rb +2 -2
  33. data/lib/ffi/cpl/conv.rb +2 -2
  34. data/lib/ffi/cpl/error.rb +1 -1
  35. data/lib/ffi/cpl/hash_set.rb +2 -2
  36. data/lib/ffi/cpl/http.rb +3 -3
  37. data/lib/ffi/cpl/http_result.rb +2 -2
  38. data/lib/ffi/cpl/list.rb +1 -1
  39. data/lib/ffi/cpl/mime_part.rb +1 -1
  40. data/lib/ffi/cpl/minixml.rb +2 -2
  41. data/lib/ffi/cpl/port.rb +1 -1
  42. data/lib/ffi/cpl/progress.rb +2 -2
  43. data/lib/ffi/cpl/quad_tree.rb +3 -3
  44. data/lib/ffi/cpl/rect_obj.rb +1 -1
  45. data/lib/ffi/cpl/string.rb +1 -1
  46. data/lib/ffi/cpl/vsi.rb +2 -2
  47. data/lib/ffi/cpl/xml_node.rb +1 -1
  48. data/lib/ffi/cpl.rb +11 -11
  49. data/lib/ffi/extensions/gdal/extensions/all.rb +2 -2
  50. data/lib/ffi/extensions/gdal/extensions.rb +2 -2
  51. data/lib/ffi/extensions/rttopo/gbox.rb +1 -1
  52. data/lib/ffi/extensions/rttopo/geom.rb +2 -2
  53. data/lib/ffi/extensions/rttopo.rb +3 -3
  54. data/lib/ffi/gdal/alg.rb +2 -2
  55. data/lib/ffi/gdal/color_entry.rb +1 -1
  56. data/lib/ffi/gdal/gcp.rb +1 -1
  57. data/lib/ffi/gdal/gdal.rb +3 -3
  58. data/lib/ffi/gdal/grid.rb +2 -2
  59. data/lib/ffi/gdal/grid_data_metrics_options.rb +1 -1
  60. data/lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb +1 -1
  61. data/lib/ffi/gdal/grid_moving_average_options.rb +1 -1
  62. data/lib/ffi/gdal/grid_nearest_neighbor_options.rb +1 -1
  63. data/lib/ffi/gdal/matching.rb +2 -2
  64. data/lib/ffi/gdal/rpc_info.rb +1 -1
  65. data/lib/ffi/gdal/transformer_info.rb +1 -1
  66. data/lib/ffi/gdal/version.rb +1 -1
  67. data/lib/ffi/gdal/vrt.rb +2 -2
  68. data/lib/ffi/gdal/warp_options.rb +1 -1
  69. data/lib/ffi/gdal/warper.rb +2 -2
  70. data/lib/ffi/gdal.rb +22 -22
  71. data/lib/ffi/ogr/api.rb +3 -3
  72. data/lib/ffi/ogr/contour_writer_info.rb +1 -1
  73. data/lib/ffi/ogr/core.rb +9 -9
  74. data/lib/ffi/ogr/envelope.rb +1 -1
  75. data/lib/ffi/ogr/envelope_3d.rb +1 -1
  76. data/lib/ffi/ogr/featurestyle.rb +1 -1
  77. data/lib/ffi/ogr/field.rb +1 -1
  78. data/lib/ffi/ogr/geocoding.rb +2 -2
  79. data/lib/ffi/ogr/srs_api.rb +63 -63
  80. data/lib/ffi/ogr/style_param.rb +2 -2
  81. data/lib/ffi/ogr/style_value.rb +1 -1
  82. data/lib/ffi/ogr.rb +11 -11
  83. data/lib/ffi-gdal.rb +8 -8
  84. data/lib/gdal/color_table.rb +6 -6
  85. data/lib/gdal/dataset/accessors.rb +101 -0
  86. data/lib/gdal/{dataset_mixins → dataset}/algorithm_methods.rb +1 -1
  87. data/lib/gdal/dataset/class_methods.rb +69 -0
  88. data/lib/gdal/dataset/internal_functions.rb +22 -0
  89. data/lib/gdal/{dataset_mixins → dataset}/matching.rb +1 -1
  90. data/lib/gdal/dataset/raster_band_methods.rb +181 -0
  91. data/lib/gdal/{dataset_mixins → dataset}/warp_methods.rb +1 -1
  92. data/lib/gdal/dataset.rb +21 -359
  93. data/lib/gdal/driver.rb +10 -10
  94. data/lib/gdal/environment_methods.rb +1 -1
  95. data/lib/gdal/extensions/all.rb +1 -1
  96. data/lib/gdal/extensions/color_entry/extensions.rb +2 -2
  97. data/lib/gdal/extensions/color_table/extensions.rb +2 -2
  98. data/lib/gdal/extensions/dataset/extensions.rb +11 -11
  99. data/lib/gdal/extensions/driver/extensions.rb +7 -7
  100. data/lib/gdal/extensions/geo_transform/extensions.rb +2 -2
  101. data/lib/gdal/extensions/gridder.rb +8 -8
  102. data/lib/gdal/extensions/gridder_options.rb +6 -6
  103. data/lib/gdal/extensions/raster_attribute_table/extensions.rb +1 -1
  104. data/lib/gdal/extensions/raster_band/algorithm_extensions.rb +4 -4
  105. data/lib/gdal/extensions/raster_band/coloring_extensions.rb +1 -1
  106. data/lib/gdal/extensions/raster_band/extensions.rb +3 -3
  107. data/lib/gdal/extensions/raster_band/io_extensions.rb +4 -4
  108. data/lib/gdal/extensions/raster_band_classifier.rb +3 -3
  109. data/lib/gdal/geo_transform.rb +1 -1
  110. data/lib/gdal/grid.rb +6 -6
  111. data/lib/gdal/grid_algorithms/metric_average_distance.rb +1 -1
  112. data/lib/gdal/grid_algorithms/metric_average_distance_pts.rb +1 -1
  113. data/lib/gdal/grid_algorithms/metric_count.rb +1 -1
  114. data/lib/gdal/grid_algorithms/metric_maximum.rb +1 -1
  115. data/lib/gdal/grid_algorithms/metric_minimum.rb +1 -1
  116. data/lib/gdal/grid_algorithms/metric_range.rb +1 -1
  117. data/lib/gdal/grid_algorithms.rb +9 -9
  118. data/lib/gdal/internal_helpers.rb +3 -3
  119. data/lib/gdal/logger.rb +1 -1
  120. data/lib/gdal/major_object.rb +6 -6
  121. data/lib/gdal/options.rb +2 -2
  122. data/lib/gdal/raster_attribute_table.rb +5 -5
  123. data/lib/gdal/raster_band.rb +24 -24
  124. data/lib/gdal/rpc_info.rb +2 -2
  125. data/lib/gdal/transformer.rb +1 -1
  126. data/lib/gdal/transformers/general_image_projection_transformer.rb +1 -1
  127. data/lib/gdal/transformers/general_image_projection_transformer2.rb +1 -1
  128. data/lib/gdal/transformers/general_image_projection_transformer3.rb +1 -1
  129. data/lib/gdal/version_info.rb +9 -9
  130. data/lib/gdal/virtual_dataset.rb +4 -4
  131. data/lib/gdal/warp_operation.rb +2 -2
  132. data/lib/gdal/warp_options.rb +2 -2
  133. data/lib/gdal.rb +17 -17
  134. data/lib/ogr/coordinate_transformation.rb +5 -5
  135. data/lib/ogr/data_source.rb +9 -9
  136. data/lib/ogr/driver.rb +9 -9
  137. data/lib/ogr/envelope.rb +1 -1
  138. data/lib/ogr/error_handling.rb +1 -1
  139. data/lib/ogr/extensions/all.rb +1 -1
  140. data/lib/ogr/extensions/data_source/capability_methods.rb +4 -4
  141. data/lib/ogr/extensions/data_source/data_source_extensions.rb +1 -1
  142. data/lib/ogr/extensions/driver/capability_methods.rb +3 -3
  143. data/lib/ogr/extensions/envelope/extensions.rb +1 -1
  144. data/lib/ogr/extensions/feature/extensions.rb +1 -1
  145. data/lib/ogr/extensions/feature_definition/extensions.rb +1 -1
  146. data/lib/ogr/extensions/geometries/point/extensions.rb +1 -1
  147. data/lib/ogr/extensions/geometry/container_mixins.rb +10 -10
  148. data/lib/ogr/extensions/geometry/ewkb_io_extensions.rb +3 -3
  149. data/lib/ogr/extensions/geometry/ewkb_record.rb +4 -4
  150. data/lib/ogr/extensions/geometry/extensions.rb +4 -7
  151. data/lib/ogr/extensions/geometry/rttopo_extensions.rb +2 -2
  152. data/lib/ogr/extensions/geometry/wkb_record.rb +3 -3
  153. data/lib/ogr/extensions/geometry_types/curve/extensions.rb +2 -2
  154. data/lib/ogr/extensions/layer/capability_methods.rb +17 -17
  155. data/lib/ogr/extensions/layer/extensions.rb +1 -1
  156. data/lib/ogr/extensions/spatial_reference/extensions.rb +1 -1
  157. data/lib/ogr/extensions/spatial_reference/initializers.rb +2 -2
  158. data/lib/ogr/extensions/style_table/extensions.rb +1 -1
  159. data/lib/ogr/feature.rb +15 -15
  160. data/lib/ogr/feature_definition.rb +2 -2
  161. data/lib/ogr/field.rb +5 -5
  162. data/lib/ogr/field_definition.rb +1 -1
  163. data/lib/ogr/geocoder.rb +1 -1
  164. data/lib/ogr/geometries/geometry_collection.rb +2 -2
  165. data/lib/ogr/geometries/geometry_collection_25d.rb +1 -1
  166. data/lib/ogr/geometries/line_string.rb +1 -1
  167. data/lib/ogr/geometries/line_string_25d.rb +1 -1
  168. data/lib/ogr/geometries/linear_ring.rb +2 -2
  169. data/lib/ogr/geometries/multi_line_string.rb +2 -2
  170. data/lib/ogr/geometries/multi_line_string_25d.rb +1 -1
  171. data/lib/ogr/geometries/multi_point.rb +1 -1
  172. data/lib/ogr/geometries/multi_point_25d.rb +1 -1
  173. data/lib/ogr/geometries/multi_polygon.rb +2 -2
  174. data/lib/ogr/geometries/multi_polygon_25d.rb +1 -1
  175. data/lib/ogr/geometries/point_25d.rb +1 -1
  176. data/lib/ogr/geometries/polygon.rb +2 -2
  177. data/lib/ogr/geometries/polygon_25d.rb +1 -1
  178. data/lib/ogr/geometry.rb +11 -11
  179. data/lib/ogr/geometry_types/container.rb +1 -1
  180. data/lib/ogr/geometry_types/curve.rb +1 -1
  181. data/lib/ogr/internal_helpers.rb +4 -4
  182. data/lib/ogr/layer.rb +8 -8
  183. data/lib/ogr/layer_mixins/ogr_feature_methods.rb +9 -9
  184. data/lib/ogr/layer_mixins/ogr_field_methods.rb +15 -15
  185. data/lib/ogr/layer_mixins/ogr_sql_methods.rb +2 -2
  186. data/lib/ogr/spatial_reference.rb +19 -19
  187. data/lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb +4 -4
  188. data/lib/ogr/spatial_reference_mixins/exporters.rb +9 -9
  189. data/lib/ogr/spatial_reference_mixins/importers.rb +2 -2
  190. data/lib/ogr/spatial_reference_mixins/morphers.rb +2 -2
  191. data/lib/ogr/spatial_reference_mixins/parameter_getter_setters.rb +1 -1
  192. data/lib/ogr/style_table.rb +3 -3
  193. data/lib/ogr/style_tool.rb +1 -1
  194. data/lib/ogr.rb +33 -33
  195. data/rakelib/docker.rake +2 -2
  196. metadata +14 -150
  197. data/bitbucket-pipelines.yml +0 -16
  198. data/tilt/gdal2.yml +0 -22
  199. data/tilt/gdal3.yml +0 -22
data/Changelog-0.x.md CHANGED
@@ -1,9 +1,11 @@
1
1
  # Changelog: 0.x
2
2
 
3
- Changes listed in this file (somewhat) reflect changes throughout 0.x-1.0.0-beta releases. The
4
- 1.0.0-beta\* releases ended up with many unexpected changes, often leading to API changes that didn't
5
- get documented. Instead of keeping a mish-mash of valid and invalid change entries in the proper
6
- [Changelog](Changelog.md), we've moved those here, as they were just prior to the 1.0.0 release.
3
+ Changes listed in this file (somewhat) reflect changes throughout 0.x-1.0.0-beta
4
+ releases. The 1.0.0-beta\* releases ended up with many unexpected changes, often
5
+ leading to API changes that didn't get documented. Instead of keeping a
6
+ mish-mash of valid and invalid change entries in the proper
7
+ [Changelog](Changelog.md), we've moved those here, as they were just prior to
8
+ the 1.0.0 release.
7
9
 
8
10
  ---
9
11
 
@@ -13,7 +15,8 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
13
15
 
14
16
  - Added `.release` class method for many `GDAL` types.
15
17
  - Added `GDAL::Dataset.copy_whole_raster`.
16
- - Added exception messages for `OGR` methods that raised using `OGR::ErrorHandling`.
18
+ - Added exception messages for `OGR` methods that raised using
19
+ `OGR::ErrorHandling`.
17
20
  - Added alias for `OGR::SpatialReferenceMixins::Exporters#to_gml` to `to_xml`.
18
21
  - Wrapped `OGR_G_ExportToIsoWkt` and `OGR_G_ExportToJsonEx`.
19
22
  - Merged `ffi-gdal-extensions` gem back to `ffi-gdal`.
@@ -25,10 +28,10 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
25
28
 
26
29
  #### GDAL
27
30
 
28
- - _BREAKING_: `GDAL::RasterBand#no_data_value=` now accepts `nil` to allow unsetting the NODATA
29
- value.
30
- - _BREAKING_: Many methods were not communicating errors `CPLErr` back to the caller; these now
31
- raise on `CE_Failure` or `CE_Fatal`:
31
+ - _BREAKING_: `GDAL::RasterBand#no_data_value=` now accepts `nil` to allow
32
+ unsetting the NODATA value.
33
+ - _BREAKING_: Many methods were not communicating errors `CPLErr` back to the
34
+ caller; these now raise on `CE_Failure` or `CE_Fatal`:
32
35
  - `GDAL::Dataset#add_band`
33
36
  - `GDAL::Dataset#build_overviews`
34
37
  - `GDAL::Dataset#create_mask_band`
@@ -60,30 +63,37 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
60
63
  - `GDAL::RasterBand#write_block`
61
64
  - `GDAL` errors that return `CPLE_AppDefined` now raise `GDAL::Error`.
62
65
  - `GDAL` errors now truncate less of the backtrace.
63
- - `GDAL::RasterBand#scale` and `#offset` now return the `Float` value and raise on a failed call
64
- instead of returning a `Hash` with that info.
66
+ - `GDAL::RasterBand#scale` and `#offset` now return the `Float` value and raise
67
+ on a failed call instead of returning a `Hash` with that info.
65
68
 
66
69
  #### OGR
67
70
 
68
- - _BREAKING_: `OGR::DataSource#copy_data_source` now raises instead of returning `nil` on a failure
69
- to copy.
70
- - _BREAKING_: `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#set_utm`'s second param is
71
- now a keyword arg, `north:` that defaults to `true` (like GDAL's default).
72
- - `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#set_towgs84`'s `z_distance` requires a
73
- value internally, but was defaulted to `nil`; changed the default value to `0.0`.
74
- - _BREAKING_: `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#axis`'s `target_key` is
75
- now required.
76
- - _BREAKING_: `OGR::CoordinateTransformation.new` raises a `GDAL:Error` instead of `OGR::Failure`.
77
- In GDAL 3, the GDAL error handler kicks in when bad data is used to instantiate the
78
- `CoordinateTranformation`. In < 3, the Ruby code checks the returned pointer and raises if it's
79
- null. Now these raise the same exception.
80
- - _BREAKING_: `OGR::Driver.create_data_source` raises on failure instead of returning `nil`.
81
- - `OGR::SpatialReferenceMixins::Importers` now return `self` instead of the `OGR` error code
82
- `Symbol`.
71
+ - _BREAKING_: `OGR::DataSource#copy_data_source` now raises instead of returning
72
+ `nil` on a failure to copy.
73
+ - _BREAKING_:
74
+ `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#set_utm`'s second
75
+ param is now a keyword arg, `north:` that defaults to `true` (like GDAL's
76
+ default).
77
+ - `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#set_towgs84`'s
78
+ `z_distance` requires a value internally, but was defaulted to `nil`; changed
79
+ the default value to `0.0`.
80
+ - _BREAKING_:
81
+ `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#axis`'s
82
+ `target_key` is now required.
83
+ - _BREAKING_: `OGR::CoordinateTransformation.new` raises a `GDAL:Error` instead
84
+ of `OGR::Failure`. In GDAL 3, the GDAL error handler kicks in when bad data is
85
+ used to instantiate the `CoordinateTranformation`. In < 3, the Ruby code
86
+ checks the returned pointer and raises if it's null. Now these raise the same
87
+ exception.
88
+ - _BREAKING_: `OGR::Driver.create_data_source` raises on failure instead of
89
+ returning `nil`.
90
+ - `OGR::SpatialReferenceMixins::Importers` now return `self` instead of the
91
+ `OGR` error code `Symbol`.
83
92
 
84
93
  ### Fixed
85
94
 
86
- - [DEV-12827] Fixed lots of double-free crashes resulting from misuse of `FFI::Pointer#autorelease`:
95
+ - [DEV-12827] Fixed lots of double-free crashes resulting from misuse of
96
+ `FFI::Pointer#autorelease`:
87
97
  - `GDAL::CPLErrorHandler#custom_handle`
88
98
  - `GDAL::ColorInterpretation.name`
89
99
  - `GDAL::ColorTable#clone`
@@ -125,12 +135,13 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
125
135
 
126
136
  ### GDAL
127
137
 
128
- - `GDAL::RasterBand#no_data_value` uses `BigDecimal` for checking the returned float value.
138
+ - `GDAL::RasterBand#no_data_value` uses `BigDecimal` for checking the returned
139
+ float value.
129
140
 
130
141
  #### OGR
131
142
 
132
- - [DEV-12827] Fixed a number of memory leaks where returned strings should be released using
133
- `FFI::CPL::VSI.VSIFree()`:
143
+ - [DEV-12827] Fixed a number of memory leaks where returned strings should be
144
+ released using `FFI::CPL::VSI.VSIFree()`:
134
145
  - `OGR::Geometry#to_gml`
135
146
  - `OGR::Geometry#to_kml`
136
147
  - `OGR::Geometry#to_geo_json`
@@ -142,52 +153,60 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
142
153
  - `OGR::SpatialReference#to_wkt`
143
154
  - `OGR::SpatialReference#to_pretty_wkt`
144
155
  - `OGR::SpatialReference#to_xml`
145
- - `OGR::SpatialReferenceMixins::Importers::ClassMethods#new_from_epsga` was incorrectly calling
146
- `import_from_epsg` instead of `import_from_epsga`.
147
- - `OGR::SpatialReference.release` fixed to use `OSRRelease()` in order to avoid use-after-free.
148
- - `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#set_utm`'s internal call was expecting
149
- an `int`, but was getting passed a `bool`.
150
- - `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#towgs84` now properly reads data out
151
- of the internal C array.
152
- - `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#axis`: the `orientation` value in the
153
- returned `Hash` wasn't calling a fully qualified module.
156
+ - `OGR::SpatialReferenceMixins::Importers::ClassMethods#new_from_epsga` was
157
+ incorrectly calling `import_from_epsg` instead of `import_from_epsga`.
158
+ - `OGR::SpatialReference.release` fixed to use `OSRRelease()` in order to avoid
159
+ use-after-free.
160
+ - `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#set_utm`'s
161
+ internal call was expecting an `int`, but was getting passed a `bool`.
162
+ - `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#towgs84` now
163
+ properly reads data out of the internal C array.
164
+ - `OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters#axis`: the
165
+ `orientation` value in the returned `Hash` wasn't calling a fully qualified
166
+ module.
154
167
  - `OGR::SpatialReferenceMixins::Exporters#to_xml` now actually works.
155
168
 
156
169
  ### Removed
157
170
 
158
171
  - [DEV-361] Move extension methods to ffi-gdal-extensions.
159
- - Removed attach_function to CPLURLGetValue and CPLURLAddKVP as they are not in GDAL 2.
172
+ - Removed attach_function to CPLURLGetValue and CPLURLAddKVP as they are not in
173
+ GDAL 2.
160
174
  - `GDAL::MajorObject#description=`
161
175
 
162
176
  ## 1.0.0.beta16 / 2022-06-09
163
177
 
164
178
  ### Bug Fixes
165
179
 
166
- - [DEV-34269] Ensure `GDAL::RasterBandClassifier#equal_count_ranges` returns a range when only one is requested.
180
+ - [DEV-34269] Ensure `GDAL::RasterBandClassifier#equal_count_ranges` returns a
181
+ range when only one is requested.
167
182
 
168
183
  ## 1.0.0.beta15 / 2022-05-12
169
184
 
170
185
  ### Improvements
171
186
 
172
- - [DEV-20059] Ensure `GDAL::RasterBandClassifier#equal_count_ranges` has a minimum spacing between breakpoints.
187
+ - [DEV-20059] Ensure `GDAL::RasterBandClassifier#equal_count_ranges` has a
188
+ minimum spacing between breakpoints.
173
189
 
174
190
  ## 1.0.0.beta14 / 2022-05-06
175
191
 
176
192
  ### Bug Fixes
177
193
 
178
- - [DEV-34133] Don't URI.parse path in `GDAL::Dataset#initialize` and `OGR::DataSource#initialize`.
194
+ - [DEV-34133] Don't URI.parse path in `GDAL::Dataset#initialize` and
195
+ `OGR::DataSource#initialize`.
179
196
 
180
197
  ## 1.0.0.beta13 / 2022-04-20
181
198
 
182
199
  ### Bug Fixes
183
200
 
184
- - [DEV-20247] Fix return value for `OGR::LayerMixins::Extensions#point_values` when no features are found.
201
+ - [DEV-20247] Fix return value for `OGR::LayerMixins::Extensions#point_values`
202
+ when no features are found.
185
203
 
186
204
  ## 1.0.0.beta12 / 2021-06-07
187
205
 
188
206
  ### Removed
189
207
 
190
- - Removed `GDAL::MajorObject#description=`, as this shouldn't be called and causes problems.
208
+ - Removed `GDAL::MajorObject#description=`, as this shouldn't be called and
209
+ causes problems.
191
210
 
192
211
  ### Bug Fixes
193
212
 
@@ -203,7 +222,8 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
203
222
 
204
223
  ### Fixed
205
224
 
206
- - [DEV-7980] Ensure `OGR::Feature#field_as_string` returns a UTF-8 encoded String.
225
+ - [DEV-7980] Ensure `OGR::Feature#field_as_string` returns a UTF-8 encoded
226
+ String.
207
227
 
208
228
  ## [1.0.0.beta9] - 2018-03-26
209
229
 
@@ -224,7 +244,8 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
224
244
 
225
245
  ### Fixed
226
246
 
227
- - Ensure `GDAL::RasterBandMixinsIOExtensions#read_blocks_by_block` always yields an Array of pixels.
247
+ - Ensure `GDAL::RasterBandMixinsIOExtensions#read_blocks_by_block` always yields
248
+ an Array of pixels.
228
249
 
229
250
  ## [1.0.0.beta7] - 2016-09-21
230
251
 
@@ -232,17 +253,20 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
232
253
 
233
254
  #### GDAL
234
255
 
235
- - Added wrapper for GDALCreateAndReprojectImage in `gdal/dataset_mixins/warp_methods.rb`.
256
+ - Added wrapper for GDALCreateAndReprojectImage in
257
+ `gdal/dataset_mixins/warp_methods.rb`.
236
258
  - Added `GDAL::Options.to_hash` to convert a pointer of options to a Ruby Hash.
237
259
 
238
260
  ### Changed
239
261
 
240
262
  #### GDAL
241
263
 
242
- - (BREAKING CHANGE) Additionally, changed `GDAL::DatasetMixins::WarpMethods#reproject_image`'s
243
- `destination_spatial_reference` named param to `destination_projection` which takes a String of
244
- WKT for a projection instead of an `OGR::SpatialReference`.
245
- - Return `nil` for missing NODATA values in `GDAL::RasterBand#no_data_value` and `#no_data_value=`.
264
+ - (BREAKING CHANGE) Additionally, changed
265
+ `GDAL::DatasetMixins::WarpMethods#reproject_image`'s
266
+ `destination_spatial_reference` named param to `destination_projection` which
267
+ takes a String of WKT for a projection instead of an `OGR::SpatialReference`.
268
+ - Return `nil` for missing NODATA values in `GDAL::RasterBand#no_data_value` and
269
+ `#no_data_value=`.
246
270
 
247
271
  ### Fixed
248
272
 
@@ -252,9 +276,10 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
252
276
 
253
277
  #### GDAL
254
278
 
255
- - `GDAL::RasterBandMixins::IOExtensions#write_xy_narray` no longer duplicates data when blocks have
256
- a remainder.
257
- - `GDAL::WarpOptions` should properly act as a wrapper for `FFI::GDAL::WarpOptions`.
279
+ - `GDAL::RasterBandMixins::IOExtensions#write_xy_narray` no longer duplicates
280
+ data when blocks have a remainder.
281
+ - `GDAL::WarpOptions` should properly act as a wrapper for
282
+ `FFI::GDAL::WarpOptions`.
258
283
  - `Updated extract methods to be compatible with latest `GDAL::Driver#create_dataset`.
259
284
  - `GDAL::MajorObject` now gets autoloaded.
260
285
  - Fix `GDAL::DatasetMixins::AlgorithmMethods` to use the right `FFI` module for
@@ -262,13 +287,15 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
262
287
 
263
288
  #### OGR
264
289
 
265
- - [AGDEV-17357] Define constants from C using `const_set` instead of `class_eval`.
290
+ - [AGDEV-17357] Define constants from C using `const_set` instead of
291
+ `class_eval`.
266
292
  - Fixed `OGR::GeometryTypes::Curve#points` (missing local variable).
267
293
 
268
294
  ### Removed
269
295
 
270
- - Removed all `#as_json` and `#to_json` definitions. They were out of date, not used, and sometimes
271
- confusing (ex `OGR::Geometries#to_json` vs `#to_geo_json`).
296
+ - Removed all `#as_json` and `#to_json` definitions. They were out of date, not
297
+ used, and sometimes confusing (ex `OGR::Geometries#to_json` vs
298
+ `#to_geo_json`).
272
299
 
273
300
  ## [1.0.0.beta6] - 2016-04-18
274
301
 
@@ -276,148 +303,172 @@ get documented. Instead of keeping a mish-mash of valid and invalid change entri
276
303
 
277
304
  #### GDAL
278
305
 
279
- - Added wrappers for the Grid API. It uses `GDAL::Gridder`, which is the programmatic equivalent to
280
- the `gdal_grid` command-line utility, `GDAL::GridderOptions`, which is an object used to mimic the
281
- options you pass to `gdal_grid`, and `GDAL::Grid`, which is the simple object that performs the
306
+ - Added wrappers for the Grid API. It uses `GDAL::Gridder`, which is the
307
+ programmatic equivalent to the `gdal_grid` command-line utility,
308
+ `GDAL::GridderOptions`, which is an object used to mimic the options you pass
309
+ to `gdal_grid`, and `GDAL::Grid`, which is the simple object that performs the
282
310
  gridding.
283
- - Added first wrapper of `gdalwarper.h` methods, found in `GDAL::DatasetMixins::WarpMethods`.
284
- - Added `GDAL::GeoTransformMixins::Extensions.new_from_envelope` which lets you create a
285
- `GDAL::GeoTransform` using the points from an `OGR::Envelope` and the destination raster's width
286
- and height. It's convenient because it calculates the pixel size for you.
287
- - Added `GDAL::RasterBand#write_block`. Somehow this went missing from previous `RasterBand`
288
- wrapping.
289
- - Added `GDAL::InternalHelpers._buffer_from_data_type` to compliment the existing
290
- `._pointer_from_data_type`. Useful for creating buffer-specific pointers from a GDAL data type.
291
- - Added `GDAL::InternalHelpers` methods for creating NArrays based on GDAL data types.
292
- - `GDAL::Options` values all have `#to_s` called on them to ensure they're Strings before handing
293
- them over to GDAL. The GDAL options "hash" requires that both keys and values be Strings.
294
- - `GDAL::RasterBandMixins::AlgorithmMethods` that use GDALProgressFunc functions can now participate
295
- in GDALScaledProgress functions.
311
+ - Added first wrapper of `gdalwarper.h` methods, found in
312
+ `GDAL::DatasetMixins::WarpMethods`.
313
+ - Added `GDAL::GeoTransformMixins::Extensions.new_from_envelope` which lets you
314
+ create a `GDAL::GeoTransform` using the points from an `OGR::Envelope` and the
315
+ destination raster's width and height. It's convenient because it calculates
316
+ the pixel size for you.
317
+ - Added `GDAL::RasterBand#write_block`. Somehow this went missing from previous
318
+ `RasterBand` wrapping.
319
+ - Added `GDAL::InternalHelpers._buffer_from_data_type` to compliment the
320
+ existing `._pointer_from_data_type`. Useful for creating buffer-specific
321
+ pointers from a GDAL data type.
322
+ - Added `GDAL::InternalHelpers` methods for creating NArrays based on GDAL data
323
+ types.
324
+ - `GDAL::Options` values all have `#to_s` called on them to ensure they're
325
+ Strings before handing them over to GDAL. The GDAL options "hash" requires
326
+ that both keys and values be Strings.
327
+ - `GDAL::RasterBandMixins::AlgorithmMethods` that use GDALProgressFunc functions
328
+ can now participate in GDALScaledProgress functions.
296
329
  - Added `GDAL::RasterBandMixins::Extensions#pixel_count`.
297
- - Allow `GDAL::Dataset`s to be open in shared mode vs non-shared mode. All Datasets now default to
298
- use shared mode.
299
- - Added enumerator `RasterAttributeTableMixins::Extensions#each_column` to allow nicer iterating
300
- over columns.
330
+ - Allow `GDAL::Dataset`s to be open in shared mode vs non-shared mode. All
331
+ Datasets now default to use shared mode.
332
+ - Added enumerator `RasterAttributeTableMixins::Extensions#each_column` to allow
333
+ nicer iterating over columns.
301
334
 
302
335
  #### OGR
303
336
 
304
337
  - Added `OGR::CoordinateTransform#transform_ex`.
305
- - Added `OGR::FeatureExtensions#field()` which gets the field using the associated
306
- `OGR::FieldDefinition#type`. Makes so you don't always have to request the field by its type
307
- (`field_as_double`).
308
- - Added `OGR::LayerMixins::Extensions#point_values()` which gets values for all of the points in the
309
- layer. It also allows you to specify getting field values with that, which helps retrieving data
310
- for the Grid API. You can also pass it a block to filter out points that don't match some criteria
311
- defined in the block.
312
- - Added `OGR::LayerMixins::Extensions#any_geometries_with_z?` which simply checks to see if the
313
- layer has any geometries with Z values.
314
- - `GDAL::DataType.by_name` always calls `#to_s` on the param now, letting you pass in Symbols.
315
- - Added `OGR::Point#set_point`, `OGR::Point25#set_point`, and `OGR::GeometryTypes::Curve#set_point`
316
- wrappers for `OGR_G_SetPoint_2D` and `OGR_G_SetPoint`.
317
- - Added `OGR::LineString#add_geometry` to allow adding a OGR::Point object to the LineString instead
318
- of having to pass coordinates in to #add_point.
319
- - Added `OGR::GeometryMixins::Extensions#invalid?` to compliment `OGR::Geometry#valid?`.
320
- - Added `OGR::LayerMixins::Extensions#point_geometry`, `#each_point_geometry`, and
321
- `point_geometries`. Since `#point` implies it returns a Point object, but the OGR API's related
322
- method returns point values (x, y, z), it seemed like it would be useful to have a method that
323
- returned a geometry.
338
+ - Added `OGR::FeatureExtensions#field()` which gets the field using the
339
+ associated `OGR::FieldDefinition#type`. Makes so you don't always have to
340
+ request the field by its type (`field_as_double`).
341
+ - Added `OGR::LayerMixins::Extensions#point_values()` which gets values for all
342
+ of the points in the layer. It also allows you to specify getting field values
343
+ with that, which helps retrieving data for the Grid API. You can also pass it
344
+ a block to filter out points that don't match some criteria defined in the
345
+ block.
346
+ - Added `OGR::LayerMixins::Extensions#any_geometries_with_z?` which simply
347
+ checks to see if the layer has any geometries with Z values.
348
+ - `GDAL::DataType.by_name` always calls `#to_s` on the param now, letting you
349
+ pass in Symbols.
350
+ - Added `OGR::Point#set_point`, `OGR::Point25#set_point`, and
351
+ `OGR::GeometryTypes::Curve#set_point` wrappers for `OGR_G_SetPoint_2D` and
352
+ `OGR_G_SetPoint`.
353
+ - Added `OGR::LineString#add_geometry` to allow adding a OGR::Point object to
354
+ the LineString instead of having to pass coordinates in to #add_point.
355
+ - Added `OGR::GeometryMixins::Extensions#invalid?` to compliment
356
+ `OGR::Geometry#valid?`.
357
+ - Added `OGR::LayerMixins::Extensions#point_geometry`, `#each_point_geometry`,
358
+ and `point_geometries`. Since `#point` implies it returns a Point object, but
359
+ the OGR API's related method returns point values (x, y, z), it seemed like it
360
+ would be useful to have a method that returned a geometry.
324
361
 
325
362
  ### Changed
326
363
 
327
364
  #### GDAL
328
365
 
329
- - Renamed `GDAL::GridTypes` to `GDAL::GridAlgorithms`. This shouldn't impact anyone/thing since it's
330
- only relative to the newly added Grid API wrapper. There just happened to me some Grid cruft that
331
- had been laying around for some time.
332
- - Renamed `GDAL::RasterBandMixins::Extenions#each_by_block` to `#read_by_block`. Its functionality
333
- was doing reading, yet implied reading or writing; since writing by block isn't needed anywhere
334
- internally yet, I just renamed this.
335
- - Renamed `GDAL::RasterBandMixins#write_array` to `#write_xy_narray`. This method's name inferred
336
- that it could write any old Array, but that's not the case--it only writes 2D NArray data.
337
- - `GDAL::DatasetMixins::Extensions#extent` now manually builds an `OGR::Polygon` instead of
338
- polygonizing the entire dataset and taking the envelope of that. Much faster this way.
339
- - Refactored `GDAL::RasterBandMixins::Exsentions#projected_points` to return a 3D NArray (indicating
340
- pixel/row position) instead of just a 2D NArray of coordinates.
366
+ - Renamed `GDAL::GridTypes` to `GDAL::GridAlgorithms`. This shouldn't impact
367
+ anyone/thing since it's only relative to the newly added Grid API wrapper.
368
+ There just happened to me some Grid cruft that had been laying around for some
369
+ time.
370
+ - Renamed `GDAL::RasterBandMixins::Extenions#each_by_block` to `#read_by_block`.
371
+ Its functionality was doing reading, yet implied reading or writing; since
372
+ writing by block isn't needed anywhere internally yet, I just renamed this.
373
+ - Renamed `GDAL::RasterBandMixins#write_array` to `#write_xy_narray`. This
374
+ method's name inferred that it could write any old Array, but that's not the
375
+ case--it only writes 2D NArray data.
376
+ - `GDAL::DatasetMixins::Extensions#extent` now manually builds an `OGR::Polygon`
377
+ instead of polygonizing the entire dataset and taking the envelope of that.
378
+ Much faster this way.
379
+ - Refactored `GDAL::RasterBandMixins::Exsentions#projected_points` to return a
380
+ 3D NArray (indicating pixel/row position) instead of just a 2D NArray of
381
+ coordinates.
341
382
  - Allow `GDAL::RasterBand#create_mask_band` to take a single flag or many.
342
- - Allow `GDAL::Driver#create_dataset` and `GDAL::Dataset.open` to take a block, yielding the dataset
343
- then closing it afterwards.
344
- - `GDAL::RasterBandClassifier` now uses NArray to classify. Can result in quite a large performance
345
- gain.
346
- - `GDAL::RasterAttributeTable` methods that returned -1 when a value can't be returned now return
347
- nil instead.
348
- - Renamed `GDAL::RasterAttributeTable#value_to_*` methods to be named after their C functions. Also,
349
- renamed `#add_value` to `#set_value` and refactored into `RasterAttributeTableMixins::Extensions`.
350
- - Swapped order of params in `GDAL::Driver#rename_dataset` to be (old, new) instead of (new, old).
383
+ - Allow `GDAL::Driver#create_dataset` and `GDAL::Dataset.open` to take a block,
384
+ yielding the dataset then closing it afterwards.
385
+ - `GDAL::RasterBandClassifier` now uses NArray to classify. Can result in quite
386
+ a large performance gain.
387
+ - `GDAL::RasterAttributeTable` methods that returned -1 when a value can't be
388
+ returned now return nil instead.
389
+ - Renamed `GDAL::RasterAttributeTable#value_to_*` methods to be named after
390
+ their C functions. Also, renamed `#add_value` to `#set_value` and refactored
391
+ into `RasterAttributeTableMixins::Extensions`.
392
+ - Swapped order of params in `GDAL::Driver#rename_dataset` to be (old, new)
393
+ instead of (new, old).
351
394
  - `GDAL::Driver#copy_dataset` now yields a writable Dataset.
352
395
  - `GDAL::Driver#copy_dataset` now properly takes progress block arguments.
353
396
 
354
397
  #### OGR
355
398
 
356
- - `OGR::DataSource.open` can now take a block, yielding the data source, then closing it afterwards.
357
- - Extracted `OGR::LayerMixins::Extensions#each_feature` from `OGR::LayerMixins::Extensions#features`
358
- to provide an Enumerator. This lets consumers utilize yielded `OGR::Feature`s as they're retrieved
359
- instead of after the `features` Array has been built. `OGR::LayerMixins::Extensions#features` now
360
- uses this too.
399
+ - `OGR::DataSource.open` can now take a block, yielding the data source, then
400
+ closing it afterwards.
401
+ - Extracted `OGR::LayerMixins::Extensions#each_feature` from
402
+ `OGR::LayerMixins::Extensions#features` to provide an Enumerator. This lets
403
+ consumers utilize yielded `OGR::Feature`s as they're retrieved instead of
404
+ after the `features` Array has been built.
405
+ `OGR::LayerMixins::Extensions#features` now uses this too.
361
406
 
362
407
  ### Fixed
363
408
 
364
- - Cleanup `OGR::Feature`s that were a result of `OGR::Layer#next_feature`. According to GDAL docs,
365
- these _must_ be cleaned up before the layer is.
409
+ - Cleanup `OGR::Feature`s that were a result of `OGR::Layer#next_feature`.
410
+ According to GDAL docs, these _must_ be cleaned up before the layer is.
366
411
 
367
412
  #### GDAL
368
413
 
369
- - `GDAL::RasterBandMixins::AlgorithmMethods#fill_nodata!` was calling the old name of the C
370
- function.
414
+ - `GDAL::RasterBandMixins::AlgorithmMethods#fill_nodata!` was calling the old
415
+ name of the C function.
371
416
  - `GDAL::EnvironmentMethods#dump_open_datasets` now works.
372
417
 
373
418
  #### OGR
374
419
 
375
- - `OGR::Field#date=` was casting the passed value to a `Time` object, which in doing so was setting
376
- the time zone. If a user passes in an object that doesn't have the TZ set, the method shouldn't be
377
- setting it for them.
420
+ - `OGR::Field#date=` was casting the passed value to a `Time` object, which in
421
+ doing so was setting the time zone. If a user passes in an object that doesn't
422
+ have the TZ set, the method shouldn't be setting it for them.
378
423
  - `OGR::Geometry#point_on_surface` now properly returns a geometry object.
379
424
  - `OGR::CoordinateTransform#transform` never worked. Fixed.
380
425
  - `OGR::GeometryMixins::Extensions#utm_zone` no longer creates invalid geometry.
381
426
  - `OGR::Feature#dump_readable` never worked. Fixed.
382
427
  - `OGR::Geometry#dump_readable` never worked. Fixed.
383
428
  - Added missing output_layer param to `OGR::LayerMixins::OGRLayerMethodMethods`.
384
- - `FFI::OGR::Core::WKBGeometryType` was using an INT32 instead of UINT32 and thus 25D geometry types
385
- weren't completely accurate.
386
- - `OGR::LayerMixins::Extensions#geometry_from_extent` now builds an `OGR::Polygon` using the same
387
- algorithm that `GDAL::DatasetMixins::Extensions#extent` uses. One could argue that there was also
388
- a bug here in that `geometry_from_extent` used to return the convex hull of the extent, not the
389
- extent itself.
429
+ - `FFI::OGR::Core::WKBGeometryType` was using an INT32 instead of UINT32 and
430
+ thus 25D geometry types weren't completely accurate.
431
+ - `OGR::LayerMixins::Extensions#geometry_from_extent` now builds an
432
+ `OGR::Polygon` using the same algorithm that
433
+ `GDAL::DatasetMixins::Extensions#extent` uses. One could argue that there was
434
+ also a bug here in that `geometry_from_extent` used to return the convex hull
435
+ of the extent, not the extent itself.
390
436
 
391
437
  ### Removed
392
438
 
393
- - Removed all `ObjectSpace.define_finalizer` calls that "cleaned up" C pointers for Ruby-wrapped
394
- objects that had not yet been closed/destroyed. This was keeping those Ruby objects from getting
395
- collected (?) and effectively causing lots of unnecessary memory use.
439
+ - Removed all `ObjectSpace.define_finalizer` calls that "cleaned up" C pointers
440
+ for Ruby-wrapped objects that had not yet been closed/destroyed. This was
441
+ keeping those Ruby objects from getting collected (?) and effectively causing
442
+ lots of unnecessary memory use.
396
443
 
397
444
  ## [1.0.0.beta5] - 2015-06-16
398
445
 
399
446
  ### Added
400
447
 
401
- - Added `GDAL::RasterBand#raster_io` and refactored `GDAL::RasterBand#write_array` to use it.
448
+ - Added `GDAL::RasterBand#raster_io` and refactored
449
+ `GDAL::RasterBand#write_array` to use it.
402
450
 
403
451
  ### Changed
404
452
 
405
- - `GDAL::RasterBandClassifier#equal_count_ranges` now returns `nil` if there aren't enough points
406
- per group/class to return the requested number of breaks.
453
+ - `GDAL::RasterBandClassifier#equal_count_ranges` now returns `nil` if there
454
+ aren't enough points per group/class to return the requested number of breaks.
407
455
  - Simplified NDVI (and related) methods in `GDAL::DatasetMixins::Extensions`.
408
- - NDVI and related methods in `GDAL::DatasetMixins::Extensions` now close the newly created dataset
409
- instead of leaving it open. It's been far too easy to forget to close the dataset after creation,
410
- leaving seemingly incorrect resulting datasets (since GDAL doesn't flush writes until the dataset
411
- is closed).
412
- - NDVI methods in `GDAL::DatasetMixins::Extensions` no longer check for NaNs after doing the NDVI
413
- calculations, thus speeding up the algorithm.
414
- - `GDAL::DatasetMixins::Extensions#remove_negatives_from` now uses an NArray mask to remove the
415
- negative values instead of looping through each value.
416
- - `GDAL::DatasetMixins::Extensions` NDVI methods now default to NODATA of `-9999.0`.
456
+ - NDVI and related methods in `GDAL::DatasetMixins::Extensions` now close the
457
+ newly created dataset instead of leaving it open. It's been far too easy to
458
+ forget to close the dataset after creation, leaving seemingly incorrect
459
+ resulting datasets (since GDAL doesn't flush writes until the dataset is
460
+ closed).
461
+ - NDVI methods in `GDAL::DatasetMixins::Extensions` no longer check for NaNs
462
+ after doing the NDVI calculations, thus speeding up the algorithm.
463
+ - `GDAL::DatasetMixins::Extensions#remove_negatives_from` now uses an NArray
464
+ mask to remove the negative values instead of looping through each value.
465
+ - `GDAL::DatasetMixins::Extensions` NDVI methods now default to NODATA of
466
+ `-9999.0`.
417
467
 
418
468
  ## [1.0.0.beta4] - 2015-04-22
419
469
 
420
- Whoa there's lots of changes here... Many are outlined below, but there's really a ton more.
470
+ Whoa there's lots of changes here... Many are outlined below, but there's really
471
+ a ton more.
421
472
 
422
473
  ### Added
423
474
 
@@ -430,35 +481,36 @@ Whoa there's lots of changes here... Many are outlined below, but there's really
430
481
 
431
482
  ### Changed
432
483
 
433
- - Full refactor of FFI/C function wrapper. Closer mapping of Ruby functions within modules to the
434
- C-header files where the functions actually reside.
435
- - Full redesign of the error handling mechanism; ffi-gdal now hooks in to GDAL's error handling,
436
- thus errors raised from GDAL automagically get handed over as Ruby exceptions. (GDAL only; OGR
437
- doesn't provide this.) This also entailed adding a bunch of new exceptions and renaming some old
438
- ones.
484
+ - Full refactor of FFI/C function wrapper. Closer mapping of Ruby functions
485
+ within modules to the C-header files where the functions actually reside.
486
+ - Full redesign of the error handling mechanism; ffi-gdal now hooks in to GDAL's
487
+ error handling, thus errors raised from GDAL automagically get handed over as
488
+ Ruby exceptions. (GDAL only; OGR doesn't provide this.) This also entailed
489
+ adding a bunch of new exceptions and renaming some old ones.
439
490
  - Lots more `OGR` love. Much of this API has now been vetted.
440
491
 
441
492
  ### Fixed
442
493
 
443
- - Fixed some `GDAL::Dataset` extension methods (`extract_ndvi` and friends) that weren't properly
444
- handling various data types.
494
+ - Fixed some `GDAL::Dataset` extension methods (`extract_ndvi` and friends) that
495
+ weren't properly handling various data types.
445
496
  - Better handling of large files.
446
- - Fixed regular crashes when dealing with `OGR` Geometries and `SpatialReferences`.
497
+ - Fixed regular crashes when dealing with `OGR` Geometries and
498
+ `SpatialReferences`.
447
499
 
448
500
  ## [1.0.0.beta3] - 2014-11-11
449
501
 
450
502
  ### Fixed
451
503
 
452
- - `ogr/exceptions` wasn't being required for `ext/error_symbols.rb`, thus any use of an OGR
453
- exception was causing a `NameError`.
504
+ - `ogr/exceptions` wasn't being required for `ext/error_symbols.rb`, thus any
505
+ use of an OGR exception was causing a `NameError`.
454
506
 
455
507
  ## [1.0.0.beta2] - 2014-10-23
456
508
 
457
509
  ### Added
458
510
 
459
511
  - Added more documentation
460
- - Uncommented `attach_function` calls that had been commented out due to lack of support in versions
461
- I'd tested on. These get handled now on load.
512
+ - Uncommented `attach_function` calls that had been commented out due to lack of
513
+ support in versions I'd tested on. These get handled now on load.
462
514
 
463
515
  ## [1.0.0.beta1] - 2014-10-23
464
516
 
@@ -467,19 +519,21 @@ Lots of changes, so just the highlights here...
467
519
  ### Added
468
520
 
469
521
  - Added C and Ruby wrapper for most of `OGR`.
470
- - Allow loading, even when C functions aren't defined in the version of `GDAL` that you're using.
522
+ - Allow loading, even when C functions aren't defined in the version of `GDAL`
523
+ that you're using.
471
524
  - Added `#as_json`, `#to_json` to many classes.
472
525
 
473
526
  ### Changed
474
527
 
475
528
  - Better handling of `CPLErr` return values.
476
- - Split out additions to `GDAL/OGR` in `*_extensions.rb` modules. Methods contained in `Extensions`
477
- modules don't directly wrap `GDAL`/`OGR` functions, but either provide new functionality or
478
- attempt to make library usage more Rubyesque.
529
+ - Split out additions to `GDAL/OGR` in `*_extensions.rb` modules. Methods
530
+ contained in `Extensions` modules don't directly wrap `GDAL`/`OGR` functions,
531
+ but either provide new functionality or attempt to make library usage more
532
+ Rubyesque.
479
533
  - Lots of cleanup of class internals.
480
534
  - `autoload` child `GDAL` and `OGR` Ruby classes.
481
- - Renamed files under `ffi/` that were derived from `GDAL`/`OGR` header files to include `_h` in the
482
- name.
535
+ - Renamed files under `ffi/` that were derived from `GDAL`/`OGR` header files to
536
+ include `_h` in the name.
483
537
 
484
538
  ## [0.0.4] - 2014-09-27
485
539
 
@@ -491,13 +545,14 @@ Lots of changes, so just the highlights here...
491
545
 
492
546
  ### Changed
493
547
 
494
- - The `approx_ok` param for `RasterBand#histogram` should default to `false` (preferring data
495
- exactness over performance).
548
+ - The `approx_ok` param for `RasterBand#histogram` should default to `false`
549
+ (preferring data exactness over performance).
496
550
 
497
551
  ### Fixed
498
552
 
499
553
  - Fixed URL silliness introduced in 0.0.2.
500
- - `Dataset#*_band` methods should return `nil` if the band with that color isn't found.
554
+ - `Dataset#*_band` methods should return `nil` if the band with that color isn't
555
+ found.
501
556
  - `RasterBand#default_histogram` died if the band didn't have any values.
502
557
  - `RasterBand#histogram` wasn't returning totals.
503
558