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.
- checksums.yaml +4 -4
- data/.prettierrc.yml +4 -0
- data/.rubocop.yml +9 -5
- data/.rubocop_todo.yml +5 -11
- data/.solargraph.yml +13 -0
- data/Changelog-0.x.md +229 -174
- data/Changelog.md +15 -5
- data/Dockerfile.gdal2 +1 -1
- data/Gemfile +12 -2
- data/README.md +13 -10
- data/Rakefile +6 -6
- data/bin/bundle +12 -12
- data/bin/rake +6 -6
- data/bin/rspec +6 -6
- data/bin/rubocop +6 -6
- data/examples/extract_and_colorize.rb +15 -15
- data/examples/geometries.rb +12 -12
- data/examples/gridding.rb +17 -17
- data/examples/ogr_layer_to_layer.rb +3 -3
- data/examples/raster_erasing.rb +9 -9
- data/examples/remove_small_polygons.rb +11 -11
- data/examples/testing_gdal.rb +20 -20
- data/examples/warping.rb +13 -13
- data/ffi-gdal.gemspec +15 -26
- data/lib/ext/ffi_library_function_checks.rb +3 -3
- data/lib/ext/narray_ext.rb +1 -1
- data/lib/ext/to_bool.rb +2 -2
- data/lib/ffi/cpl/conv.rb +2 -2
- data/lib/ffi/cpl/error.rb +1 -1
- data/lib/ffi/cpl/hash_set.rb +2 -2
- data/lib/ffi/cpl/http.rb +3 -3
- data/lib/ffi/cpl/http_result.rb +2 -2
- data/lib/ffi/cpl/list.rb +1 -1
- data/lib/ffi/cpl/mime_part.rb +1 -1
- data/lib/ffi/cpl/minixml.rb +2 -2
- data/lib/ffi/cpl/port.rb +1 -1
- data/lib/ffi/cpl/progress.rb +2 -2
- data/lib/ffi/cpl/quad_tree.rb +3 -3
- data/lib/ffi/cpl/rect_obj.rb +1 -1
- data/lib/ffi/cpl/string.rb +1 -1
- data/lib/ffi/cpl/vsi.rb +2 -2
- data/lib/ffi/cpl/xml_node.rb +1 -1
- data/lib/ffi/cpl.rb +11 -11
- data/lib/ffi/extensions/gdal/extensions/all.rb +2 -2
- data/lib/ffi/extensions/gdal/extensions.rb +2 -2
- data/lib/ffi/extensions/rttopo/gbox.rb +1 -1
- data/lib/ffi/extensions/rttopo/geom.rb +2 -2
- data/lib/ffi/extensions/rttopo.rb +3 -3
- data/lib/ffi/gdal/alg.rb +2 -2
- data/lib/ffi/gdal/color_entry.rb +1 -1
- data/lib/ffi/gdal/gcp.rb +1 -1
- data/lib/ffi/gdal/gdal.rb +3 -3
- data/lib/ffi/gdal/grid.rb +2 -2
- data/lib/ffi/gdal/grid_data_metrics_options.rb +1 -1
- data/lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb +1 -1
- data/lib/ffi/gdal/grid_moving_average_options.rb +1 -1
- data/lib/ffi/gdal/grid_nearest_neighbor_options.rb +1 -1
- data/lib/ffi/gdal/matching.rb +2 -2
- data/lib/ffi/gdal/rpc_info.rb +1 -1
- data/lib/ffi/gdal/transformer_info.rb +1 -1
- data/lib/ffi/gdal/version.rb +1 -1
- data/lib/ffi/gdal/vrt.rb +2 -2
- data/lib/ffi/gdal/warp_options.rb +1 -1
- data/lib/ffi/gdal/warper.rb +2 -2
- data/lib/ffi/gdal.rb +22 -22
- data/lib/ffi/ogr/api.rb +3 -3
- data/lib/ffi/ogr/contour_writer_info.rb +1 -1
- data/lib/ffi/ogr/core.rb +9 -9
- data/lib/ffi/ogr/envelope.rb +1 -1
- data/lib/ffi/ogr/envelope_3d.rb +1 -1
- data/lib/ffi/ogr/featurestyle.rb +1 -1
- data/lib/ffi/ogr/field.rb +1 -1
- data/lib/ffi/ogr/geocoding.rb +2 -2
- data/lib/ffi/ogr/srs_api.rb +63 -63
- data/lib/ffi/ogr/style_param.rb +2 -2
- data/lib/ffi/ogr/style_value.rb +1 -1
- data/lib/ffi/ogr.rb +11 -11
- data/lib/ffi-gdal.rb +8 -8
- data/lib/gdal/color_table.rb +6 -6
- data/lib/gdal/dataset/accessors.rb +101 -0
- data/lib/gdal/{dataset_mixins → dataset}/algorithm_methods.rb +1 -1
- data/lib/gdal/dataset/class_methods.rb +69 -0
- data/lib/gdal/dataset/internal_functions.rb +22 -0
- data/lib/gdal/{dataset_mixins → dataset}/matching.rb +1 -1
- data/lib/gdal/dataset/raster_band_methods.rb +181 -0
- data/lib/gdal/{dataset_mixins → dataset}/warp_methods.rb +1 -1
- data/lib/gdal/dataset.rb +21 -359
- data/lib/gdal/driver.rb +10 -10
- data/lib/gdal/environment_methods.rb +1 -1
- data/lib/gdal/extensions/all.rb +1 -1
- data/lib/gdal/extensions/color_entry/extensions.rb +2 -2
- data/lib/gdal/extensions/color_table/extensions.rb +2 -2
- data/lib/gdal/extensions/dataset/extensions.rb +11 -11
- data/lib/gdal/extensions/driver/extensions.rb +7 -7
- data/lib/gdal/extensions/geo_transform/extensions.rb +2 -2
- data/lib/gdal/extensions/gridder.rb +8 -8
- data/lib/gdal/extensions/gridder_options.rb +6 -6
- data/lib/gdal/extensions/raster_attribute_table/extensions.rb +1 -1
- data/lib/gdal/extensions/raster_band/algorithm_extensions.rb +4 -4
- data/lib/gdal/extensions/raster_band/coloring_extensions.rb +1 -1
- data/lib/gdal/extensions/raster_band/extensions.rb +3 -3
- data/lib/gdal/extensions/raster_band/io_extensions.rb +4 -4
- data/lib/gdal/extensions/raster_band_classifier.rb +3 -3
- data/lib/gdal/geo_transform.rb +1 -1
- data/lib/gdal/grid.rb +6 -6
- data/lib/gdal/grid_algorithms/metric_average_distance.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_average_distance_pts.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_count.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_maximum.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_minimum.rb +1 -1
- data/lib/gdal/grid_algorithms/metric_range.rb +1 -1
- data/lib/gdal/grid_algorithms.rb +9 -9
- data/lib/gdal/internal_helpers.rb +3 -3
- data/lib/gdal/logger.rb +1 -1
- data/lib/gdal/major_object.rb +6 -6
- data/lib/gdal/options.rb +2 -2
- data/lib/gdal/raster_attribute_table.rb +5 -5
- data/lib/gdal/raster_band.rb +24 -24
- data/lib/gdal/rpc_info.rb +2 -2
- data/lib/gdal/transformer.rb +1 -1
- data/lib/gdal/transformers/general_image_projection_transformer.rb +1 -1
- data/lib/gdal/transformers/general_image_projection_transformer2.rb +1 -1
- data/lib/gdal/transformers/general_image_projection_transformer3.rb +1 -1
- data/lib/gdal/version_info.rb +9 -9
- data/lib/gdal/virtual_dataset.rb +4 -4
- data/lib/gdal/warp_operation.rb +2 -2
- data/lib/gdal/warp_options.rb +2 -2
- data/lib/gdal.rb +17 -17
- data/lib/ogr/coordinate_transformation.rb +5 -5
- data/lib/ogr/data_source.rb +9 -9
- data/lib/ogr/driver.rb +9 -9
- data/lib/ogr/envelope.rb +1 -1
- data/lib/ogr/error_handling.rb +1 -1
- data/lib/ogr/extensions/all.rb +1 -1
- data/lib/ogr/extensions/data_source/capability_methods.rb +4 -4
- data/lib/ogr/extensions/data_source/data_source_extensions.rb +1 -1
- data/lib/ogr/extensions/driver/capability_methods.rb +3 -3
- data/lib/ogr/extensions/envelope/extensions.rb +1 -1
- data/lib/ogr/extensions/feature/extensions.rb +1 -1
- data/lib/ogr/extensions/feature_definition/extensions.rb +1 -1
- data/lib/ogr/extensions/geometries/point/extensions.rb +1 -1
- data/lib/ogr/extensions/geometry/container_mixins.rb +10 -10
- data/lib/ogr/extensions/geometry/ewkb_io_extensions.rb +3 -3
- data/lib/ogr/extensions/geometry/ewkb_record.rb +4 -4
- data/lib/ogr/extensions/geometry/extensions.rb +4 -7
- data/lib/ogr/extensions/geometry/rttopo_extensions.rb +2 -2
- data/lib/ogr/extensions/geometry/wkb_record.rb +3 -3
- data/lib/ogr/extensions/geometry_types/curve/extensions.rb +2 -2
- data/lib/ogr/extensions/layer/capability_methods.rb +17 -17
- data/lib/ogr/extensions/layer/extensions.rb +1 -1
- data/lib/ogr/extensions/spatial_reference/extensions.rb +1 -1
- data/lib/ogr/extensions/spatial_reference/initializers.rb +2 -2
- data/lib/ogr/extensions/style_table/extensions.rb +1 -1
- data/lib/ogr/feature.rb +15 -15
- data/lib/ogr/feature_definition.rb +2 -2
- data/lib/ogr/field.rb +5 -5
- data/lib/ogr/field_definition.rb +1 -1
- data/lib/ogr/geocoder.rb +1 -1
- data/lib/ogr/geometries/geometry_collection.rb +2 -2
- data/lib/ogr/geometries/geometry_collection_25d.rb +1 -1
- data/lib/ogr/geometries/line_string.rb +1 -1
- data/lib/ogr/geometries/line_string_25d.rb +1 -1
- data/lib/ogr/geometries/linear_ring.rb +2 -2
- data/lib/ogr/geometries/multi_line_string.rb +2 -2
- data/lib/ogr/geometries/multi_line_string_25d.rb +1 -1
- data/lib/ogr/geometries/multi_point.rb +1 -1
- data/lib/ogr/geometries/multi_point_25d.rb +1 -1
- data/lib/ogr/geometries/multi_polygon.rb +2 -2
- data/lib/ogr/geometries/multi_polygon_25d.rb +1 -1
- data/lib/ogr/geometries/point_25d.rb +1 -1
- data/lib/ogr/geometries/polygon.rb +2 -2
- data/lib/ogr/geometries/polygon_25d.rb +1 -1
- data/lib/ogr/geometry.rb +11 -11
- data/lib/ogr/geometry_types/container.rb +1 -1
- data/lib/ogr/geometry_types/curve.rb +1 -1
- data/lib/ogr/internal_helpers.rb +4 -4
- data/lib/ogr/layer.rb +8 -8
- data/lib/ogr/layer_mixins/ogr_feature_methods.rb +9 -9
- data/lib/ogr/layer_mixins/ogr_field_methods.rb +15 -15
- data/lib/ogr/layer_mixins/ogr_sql_methods.rb +2 -2
- data/lib/ogr/spatial_reference.rb +19 -19
- data/lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb +4 -4
- data/lib/ogr/spatial_reference_mixins/exporters.rb +9 -9
- data/lib/ogr/spatial_reference_mixins/importers.rb +2 -2
- data/lib/ogr/spatial_reference_mixins/morphers.rb +2 -2
- data/lib/ogr/spatial_reference_mixins/parameter_getter_setters.rb +1 -1
- data/lib/ogr/style_table.rb +3 -3
- data/lib/ogr/style_tool.rb +1 -1
- data/lib/ogr.rb +33 -33
- data/rakelib/docker.rake +2 -2
- 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
|
4
|
-
1.0.0-beta\* releases ended up with many unexpected changes, often
|
5
|
-
get documented. Instead of keeping a
|
6
|
-
|
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
|
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
|
29
|
-
value.
|
30
|
-
- _BREAKING_: Many methods were not communicating errors `CPLErr` back to the
|
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
|
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
|
69
|
-
to copy.
|
70
|
-
- _BREAKING_:
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
`
|
79
|
-
|
80
|
-
- _BREAKING_: `OGR::
|
81
|
-
|
82
|
-
`
|
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
|
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
|
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
|
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
|
146
|
-
`import_from_epsg` instead of `import_from_epsga`.
|
147
|
-
- `OGR::SpatialReference.release` fixed to use `OSRRelease()` in order to avoid
|
148
|
-
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
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
|
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
|
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
|
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
|
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`
|
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
|
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
|
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
|
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
|
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
|
243
|
-
`
|
244
|
-
|
245
|
-
|
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
|
256
|
-
a remainder.
|
257
|
-
- `GDAL::WarpOptions` should properly act as a wrapper for
|
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
|
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
|
271
|
-
confusing (ex `OGR::Geometries#to_json` vs
|
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
|
280
|
-
the `gdal_grid` command-line utility,
|
281
|
-
|
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
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
- Added `GDAL::
|
290
|
-
|
291
|
-
- Added `GDAL::InternalHelpers`
|
292
|
-
|
293
|
-
|
294
|
-
- `GDAL::
|
295
|
-
|
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
|
298
|
-
use shared mode.
|
299
|
-
- Added enumerator `RasterAttributeTableMixins::Extensions#each_column` to allow
|
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
|
306
|
-
`OGR::FieldDefinition#type`. Makes so you don't always have to
|
307
|
-
(`field_as_double`).
|
308
|
-
- Added `OGR::LayerMixins::Extensions#point_values()` which gets values for all
|
309
|
-
layer. It also allows you to specify getting field values
|
310
|
-
for the Grid API. You can also pass it
|
311
|
-
defined in the
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
-
|
316
|
-
|
317
|
-
- Added `OGR::
|
318
|
-
|
319
|
-
|
320
|
-
- Added `OGR::
|
321
|
-
|
322
|
-
|
323
|
-
|
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
|
330
|
-
only relative to the newly added Grid API wrapper.
|
331
|
-
had been laying around for some
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
-
|
340
|
-
|
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,
|
343
|
-
then closing it afterwards.
|
344
|
-
- `GDAL::RasterBandClassifier` now uses NArray to classify. Can result in quite
|
345
|
-
gain.
|
346
|
-
- `GDAL::RasterAttributeTable` methods that returned -1 when a value can't be
|
347
|
-
nil instead.
|
348
|
-
- Renamed `GDAL::RasterAttributeTable#value_to_*` methods to be named after
|
349
|
-
renamed `#add_value` to `#set_value` and refactored
|
350
|
-
|
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
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
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`.
|
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
|
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
|
376
|
-
the time zone. If a user passes in an object that doesn't
|
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
|
385
|
-
weren't completely accurate.
|
386
|
-
- `OGR::LayerMixins::Extensions#geometry_from_extent` now builds an
|
387
|
-
|
388
|
-
|
389
|
-
|
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
|
394
|
-
objects that had not yet been closed/destroyed. This was
|
395
|
-
collected (?) and effectively causing
|
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
|
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
|
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
|
409
|
-
instead of leaving it open. It's been far too easy to
|
410
|
-
|
411
|
-
is
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
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
|
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
|
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
|
436
|
-
thus errors raised from GDAL automagically get handed over as
|
437
|
-
doesn't provide this.) This also entailed
|
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
|
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
|
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
|
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
|
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`
|
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
|
477
|
-
modules don't directly wrap `GDAL`/`OGR` functions,
|
478
|
-
attempt to make library usage more
|
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
|
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`
|
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
|
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
|
|