ffi-gdal 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (191) hide show
  1. checksums.yaml +4 -4
  2. data/.prettierrc.yml +4 -0
  3. data/.rubocop.yml +9 -5
  4. data/.rubocop_todo.yml +5 -11
  5. data/.solargraph.yml +13 -0
  6. data/Changelog-0.x.md +229 -174
  7. data/Changelog.md +15 -5
  8. data/Dockerfile.gdal2 +1 -1
  9. data/Gemfile +12 -2
  10. data/README.md +13 -10
  11. data/Rakefile +6 -6
  12. data/bin/bundle +12 -12
  13. data/bin/rake +6 -6
  14. data/bin/rspec +6 -6
  15. data/bin/rubocop +6 -6
  16. data/examples/extract_and_colorize.rb +15 -15
  17. data/examples/geometries.rb +12 -12
  18. data/examples/gridding.rb +17 -17
  19. data/examples/ogr_layer_to_layer.rb +3 -3
  20. data/examples/raster_erasing.rb +9 -9
  21. data/examples/remove_small_polygons.rb +11 -11
  22. data/examples/testing_gdal.rb +20 -20
  23. data/examples/warping.rb +13 -13
  24. data/ffi-gdal.gemspec +15 -26
  25. data/lib/ext/ffi_library_function_checks.rb +3 -3
  26. data/lib/ext/narray_ext.rb +1 -1
  27. data/lib/ext/to_bool.rb +2 -2
  28. data/lib/ffi/cpl/conv.rb +2 -2
  29. data/lib/ffi/cpl/error.rb +1 -1
  30. data/lib/ffi/cpl/hash_set.rb +2 -2
  31. data/lib/ffi/cpl/http.rb +3 -3
  32. data/lib/ffi/cpl/http_result.rb +2 -2
  33. data/lib/ffi/cpl/list.rb +1 -1
  34. data/lib/ffi/cpl/mime_part.rb +1 -1
  35. data/lib/ffi/cpl/minixml.rb +2 -2
  36. data/lib/ffi/cpl/port.rb +1 -1
  37. data/lib/ffi/cpl/progress.rb +2 -2
  38. data/lib/ffi/cpl/quad_tree.rb +3 -3
  39. data/lib/ffi/cpl/rect_obj.rb +1 -1
  40. data/lib/ffi/cpl/string.rb +1 -1
  41. data/lib/ffi/cpl/vsi.rb +2 -2
  42. data/lib/ffi/cpl/xml_node.rb +1 -1
  43. data/lib/ffi/cpl.rb +11 -11
  44. data/lib/ffi/extensions/gdal/extensions/all.rb +2 -2
  45. data/lib/ffi/extensions/gdal/extensions.rb +2 -2
  46. data/lib/ffi/extensions/rttopo/gbox.rb +1 -1
  47. data/lib/ffi/extensions/rttopo/geom.rb +2 -2
  48. data/lib/ffi/extensions/rttopo.rb +3 -3
  49. data/lib/ffi/gdal/alg.rb +2 -2
  50. data/lib/ffi/gdal/color_entry.rb +1 -1
  51. data/lib/ffi/gdal/gcp.rb +1 -1
  52. data/lib/ffi/gdal/gdal.rb +3 -3
  53. data/lib/ffi/gdal/grid.rb +2 -2
  54. data/lib/ffi/gdal/grid_data_metrics_options.rb +1 -1
  55. data/lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb +1 -1
  56. data/lib/ffi/gdal/grid_moving_average_options.rb +1 -1
  57. data/lib/ffi/gdal/grid_nearest_neighbor_options.rb +1 -1
  58. data/lib/ffi/gdal/matching.rb +2 -2
  59. data/lib/ffi/gdal/rpc_info.rb +1 -1
  60. data/lib/ffi/gdal/transformer_info.rb +1 -1
  61. data/lib/ffi/gdal/version.rb +1 -1
  62. data/lib/ffi/gdal/vrt.rb +2 -2
  63. data/lib/ffi/gdal/warp_options.rb +1 -1
  64. data/lib/ffi/gdal/warper.rb +2 -2
  65. data/lib/ffi/gdal.rb +22 -22
  66. data/lib/ffi/ogr/api.rb +3 -3
  67. data/lib/ffi/ogr/contour_writer_info.rb +1 -1
  68. data/lib/ffi/ogr/core.rb +9 -9
  69. data/lib/ffi/ogr/envelope.rb +1 -1
  70. data/lib/ffi/ogr/envelope_3d.rb +1 -1
  71. data/lib/ffi/ogr/featurestyle.rb +1 -1
  72. data/lib/ffi/ogr/field.rb +1 -1
  73. data/lib/ffi/ogr/geocoding.rb +2 -2
  74. data/lib/ffi/ogr/srs_api.rb +63 -63
  75. data/lib/ffi/ogr/style_param.rb +2 -2
  76. data/lib/ffi/ogr/style_value.rb +1 -1
  77. data/lib/ffi/ogr.rb +11 -11
  78. data/lib/ffi-gdal.rb +8 -8
  79. data/lib/gdal/color_table.rb +6 -6
  80. data/lib/gdal/dataset/accessors.rb +101 -0
  81. data/lib/gdal/{dataset_mixins → dataset}/algorithm_methods.rb +1 -1
  82. data/lib/gdal/dataset/class_methods.rb +69 -0
  83. data/lib/gdal/dataset/internal_functions.rb +22 -0
  84. data/lib/gdal/{dataset_mixins → dataset}/matching.rb +1 -1
  85. data/lib/gdal/dataset/raster_band_methods.rb +181 -0
  86. data/lib/gdal/{dataset_mixins → dataset}/warp_methods.rb +1 -1
  87. data/lib/gdal/dataset.rb +21 -359
  88. data/lib/gdal/driver.rb +10 -10
  89. data/lib/gdal/environment_methods.rb +1 -1
  90. data/lib/gdal/extensions/all.rb +1 -1
  91. data/lib/gdal/extensions/color_entry/extensions.rb +2 -2
  92. data/lib/gdal/extensions/color_table/extensions.rb +2 -2
  93. data/lib/gdal/extensions/dataset/extensions.rb +11 -11
  94. data/lib/gdal/extensions/driver/extensions.rb +7 -7
  95. data/lib/gdal/extensions/geo_transform/extensions.rb +2 -2
  96. data/lib/gdal/extensions/gridder.rb +8 -8
  97. data/lib/gdal/extensions/gridder_options.rb +6 -6
  98. data/lib/gdal/extensions/raster_attribute_table/extensions.rb +1 -1
  99. data/lib/gdal/extensions/raster_band/algorithm_extensions.rb +4 -4
  100. data/lib/gdal/extensions/raster_band/coloring_extensions.rb +1 -1
  101. data/lib/gdal/extensions/raster_band/extensions.rb +3 -3
  102. data/lib/gdal/extensions/raster_band/io_extensions.rb +4 -4
  103. data/lib/gdal/extensions/raster_band_classifier.rb +3 -3
  104. data/lib/gdal/geo_transform.rb +1 -1
  105. data/lib/gdal/grid.rb +6 -6
  106. data/lib/gdal/grid_algorithms/metric_average_distance.rb +1 -1
  107. data/lib/gdal/grid_algorithms/metric_average_distance_pts.rb +1 -1
  108. data/lib/gdal/grid_algorithms/metric_count.rb +1 -1
  109. data/lib/gdal/grid_algorithms/metric_maximum.rb +1 -1
  110. data/lib/gdal/grid_algorithms/metric_minimum.rb +1 -1
  111. data/lib/gdal/grid_algorithms/metric_range.rb +1 -1
  112. data/lib/gdal/grid_algorithms.rb +9 -9
  113. data/lib/gdal/internal_helpers.rb +3 -3
  114. data/lib/gdal/logger.rb +1 -1
  115. data/lib/gdal/major_object.rb +6 -6
  116. data/lib/gdal/options.rb +2 -2
  117. data/lib/gdal/raster_attribute_table.rb +5 -5
  118. data/lib/gdal/raster_band.rb +24 -24
  119. data/lib/gdal/rpc_info.rb +2 -2
  120. data/lib/gdal/transformer.rb +1 -1
  121. data/lib/gdal/transformers/general_image_projection_transformer.rb +1 -1
  122. data/lib/gdal/transformers/general_image_projection_transformer2.rb +1 -1
  123. data/lib/gdal/transformers/general_image_projection_transformer3.rb +1 -1
  124. data/lib/gdal/version_info.rb +9 -9
  125. data/lib/gdal/virtual_dataset.rb +4 -4
  126. data/lib/gdal/warp_operation.rb +2 -2
  127. data/lib/gdal/warp_options.rb +2 -2
  128. data/lib/gdal.rb +17 -17
  129. data/lib/ogr/coordinate_transformation.rb +5 -5
  130. data/lib/ogr/data_source.rb +9 -9
  131. data/lib/ogr/driver.rb +9 -9
  132. data/lib/ogr/envelope.rb +1 -1
  133. data/lib/ogr/error_handling.rb +1 -1
  134. data/lib/ogr/extensions/all.rb +1 -1
  135. data/lib/ogr/extensions/data_source/capability_methods.rb +4 -4
  136. data/lib/ogr/extensions/data_source/data_source_extensions.rb +1 -1
  137. data/lib/ogr/extensions/driver/capability_methods.rb +3 -3
  138. data/lib/ogr/extensions/envelope/extensions.rb +1 -1
  139. data/lib/ogr/extensions/feature/extensions.rb +1 -1
  140. data/lib/ogr/extensions/feature_definition/extensions.rb +1 -1
  141. data/lib/ogr/extensions/geometries/point/extensions.rb +1 -1
  142. data/lib/ogr/extensions/geometry/container_mixins.rb +10 -10
  143. data/lib/ogr/extensions/geometry/ewkb_io_extensions.rb +3 -3
  144. data/lib/ogr/extensions/geometry/ewkb_record.rb +4 -4
  145. data/lib/ogr/extensions/geometry/extensions.rb +4 -7
  146. data/lib/ogr/extensions/geometry/rttopo_extensions.rb +2 -2
  147. data/lib/ogr/extensions/geometry/wkb_record.rb +3 -3
  148. data/lib/ogr/extensions/geometry_types/curve/extensions.rb +2 -2
  149. data/lib/ogr/extensions/layer/capability_methods.rb +17 -17
  150. data/lib/ogr/extensions/layer/extensions.rb +1 -1
  151. data/lib/ogr/extensions/spatial_reference/extensions.rb +1 -1
  152. data/lib/ogr/extensions/spatial_reference/initializers.rb +2 -2
  153. data/lib/ogr/extensions/style_table/extensions.rb +1 -1
  154. data/lib/ogr/feature.rb +15 -15
  155. data/lib/ogr/feature_definition.rb +2 -2
  156. data/lib/ogr/field.rb +5 -5
  157. data/lib/ogr/field_definition.rb +1 -1
  158. data/lib/ogr/geocoder.rb +1 -1
  159. data/lib/ogr/geometries/geometry_collection.rb +2 -2
  160. data/lib/ogr/geometries/geometry_collection_25d.rb +1 -1
  161. data/lib/ogr/geometries/line_string.rb +1 -1
  162. data/lib/ogr/geometries/line_string_25d.rb +1 -1
  163. data/lib/ogr/geometries/linear_ring.rb +2 -2
  164. data/lib/ogr/geometries/multi_line_string.rb +2 -2
  165. data/lib/ogr/geometries/multi_line_string_25d.rb +1 -1
  166. data/lib/ogr/geometries/multi_point.rb +1 -1
  167. data/lib/ogr/geometries/multi_point_25d.rb +1 -1
  168. data/lib/ogr/geometries/multi_polygon.rb +2 -2
  169. data/lib/ogr/geometries/multi_polygon_25d.rb +1 -1
  170. data/lib/ogr/geometries/point_25d.rb +1 -1
  171. data/lib/ogr/geometries/polygon.rb +2 -2
  172. data/lib/ogr/geometries/polygon_25d.rb +1 -1
  173. data/lib/ogr/geometry.rb +11 -11
  174. data/lib/ogr/geometry_types/container.rb +1 -1
  175. data/lib/ogr/geometry_types/curve.rb +1 -1
  176. data/lib/ogr/internal_helpers.rb +4 -4
  177. data/lib/ogr/layer.rb +8 -8
  178. data/lib/ogr/layer_mixins/ogr_feature_methods.rb +9 -9
  179. data/lib/ogr/layer_mixins/ogr_field_methods.rb +15 -15
  180. data/lib/ogr/layer_mixins/ogr_sql_methods.rb +2 -2
  181. data/lib/ogr/spatial_reference.rb +19 -19
  182. data/lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb +4 -4
  183. data/lib/ogr/spatial_reference_mixins/exporters.rb +9 -9
  184. data/lib/ogr/spatial_reference_mixins/importers.rb +2 -2
  185. data/lib/ogr/spatial_reference_mixins/morphers.rb +2 -2
  186. data/lib/ogr/spatial_reference_mixins/parameter_getter_setters.rb +1 -1
  187. data/lib/ogr/style_table.rb +3 -3
  188. data/lib/ogr/style_tool.rb +1 -1
  189. data/lib/ogr.rb +33 -33
  190. data/rakelib/docker.rake +2 -2
  191. metadata +11 -145
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