Skip to content

Latest commit

 

History

History
490 lines (329 loc) · 15.8 KB

CHANGES.md

File metadata and controls

490 lines (329 loc) · 15.8 KB

Changes

Unreleased

  • Added new content to README.md and the root docs.

  • Fixed a crash in Group::dimensions and MDArray::dimensions when no dimensions exist

  • Added a more ergonomic means of accessing GDAL version properties

  • Provided access to gdal-sys discriminant values in ResampleAlg enum.

  • Breaking RasterBand::set_no_data_value takes Option<f64> instead of f64 so that no no-data can be set. Also makes it symmetric with RasterBand::no_data_value which returns Option<f64>.

  • Added quality-of-life features to CslStringList: len, is_empty, Debug and Iterator implementations.

  • Added ability to set color table for bands with palette color interpretation. Added ability to create a color ramp (interpolated) color table.

  • Added a wrapper for the DriverManager

  • Added GdalTypeDescriptor to provide access to metadata and supporting routines around GDALDataType ordinals.

  • Breaking: GDALDataType is no longer pub use in gdal::raster, as GdalType and GdalTypeDescriptor sufficiently cover use cases in safe code. Still accessible via gdal_sys::GDALDataType.

0.13

  • Add prebuilt bindings for GDAL 3.5

  • Breaking: Add gdal::vector::OwnedLayer, gdal::vector::LayerAccess and gdal::vector::layer::OwnedFeatureIterator. This requires importing gdal::vector::LayerAccess for using most vector layer methods.

  • Breaking: SpatialRef::from_c_obj is now unsafe.

  • Breaking: Rename Driver::get to Driver::get_by_name, add Driver::get(usize) and Driver::count

  • Implemented wrapper for OGR_L_SetFeature

  • Add programs::raster::build_vrt

  • Add GeoTransformEx extension trait with apply and invert

  • Add gdal::vector::geometry_type_to_name and gdal::vector::field_type_to_name

  • Add gdal::raster::rasterband::RasterBand::unit as wrapper for GDALGetRasterUnitType

  • Add gdal::vsi::read_dir function.

  • Add a ColorTable struct and RasterBand::color_table method

  • Add GeometryRef<'a> to reference owned nested geometry in a lifetime-safe way.

  • Add support for MDArray API

  • Add gdal::srs::CoordTransform::transform_bounds as wrapper for OCTTransformBounds for GDAL 3.4

  • Add Feature::set_field_*_list functions for list field types

  • Deprecate Transaction::dataset and Transaction::dataset_mut. Add Deref and DerefMut implementations instead.

  • Add methods to access raster masks and get raster mask flags. (open_mask_band, create_mask_band, and mask_flags).

  • Remove PartialEq from GdalError

  • Prevent SIGGEGV when reading a string array on an MD Array that is not of type string.

  • Added Geometry::to_geo method for GDAL to geo-types Geometry conversions.

  • Add Rasterband::set_scale and Rasterband::set_offset methods

  • Added program wrapper for GDALMultiDimTranslate

  • Test that GdalError is Send

  • Allow reading Dimensions from Groups in multimensional Datasets.

  • Added wrapper methods for GDALGetRasterStatistics, GDALComputeRasterMinMax and GDALMDArrayGetStatistics.

  • Added a workaround in multi-dim tests to not access files multiple times

0.12

  • Bump Rust edition to 2021

  • Add prebuild bindings for GDAL 3.4

0.11

  • Remove the datetime feature

  • Add cpl::CslStringList

  • Make gdal::rasters::OptimizeMode public

  • Added rename and delete to gdal::Driver

  • Breaking: File paths must now implement AsRef<Path>

0.8 - 0.10

  • Update types to fix build on ppc64le.

  • Upgrade semver to 1.0 and trim gdal version output in build.rs.

  • Breaking: Make set_attribute_filter and clear_attribute_filter take &mut self

  • Breaking: Drop pre-build bindings for GDAL versions < 2.4. The bindgen feature can be used to generate bindings for older versions.

  • Fix memory leaks reported by Valgrind. This required re-generation of the pre-build bindings.

  • Breaking: Implement TryFrom instead of From to convert from gdal geometries to geo-types. This avoids a possible panic on unsupported geometries and returns an error instead.

  • Add Feature::c_feature that returns the OGR feature handle.

  • Add wrapper for OGR_G_Buffer.

  • Add support for raster dataset creation options. A new struct (RasterCreationOption) and function (driver.create_with_band_type_with_options()) are now available for this.

let driver = Driver::get_by_name("GTiff").unwrap();
let options = &[
    RasterCreationOption {
        key: "COMPRESS",
        value: "LZW",
    },
    RasterCreationOption {
        key: "TILED",
        value: "YES",
    },
];
let mut dataset = driver
    .create_with_band_type_with_options::<u8>("testing.tif", 2048, 2048, 1, options)
    .unwrap();
  • Breaking: Add support to select a resampling algorithm when reading a raster

    Now, it is necessary to provide a Option<ResampleAlg> when reading a raster. If None, it uses ResampleAlg::NearestNeighbour which was the default behavior.

  • Breaking: Make Layer::features iterator reset to beginning, and borrow mutably.

  • Breaking: Enforce borrow semantics on methods of Dataset, RasterBand, and Layer.

    1. Methods that do not modify the underlying structure take &self.
    2. Methods that modify the underlying structure take &mut self.
    let ds = Dataset::open(...);
    
    // ds need not be mutable to open layer
    let mut band = ds.rasterband(1)?;
    
    // band needs to be mutable to set no-data value
    band.set_no_data_value(0.0)?;
  • Breaking: Upgrade to ndarray 0.15

  • Implement wrapper for OGR_L_TestCapability

  • Breaking: Use DatasetOptions to pass as Dataset::open_ex parameters and add support for extended open flags.

        use gdal::{ Dataset, DatasetOptions }
    
        let dataset = Dataset::open_ex(
            "roads.geojson",
            DatasetOptions {
                open_flags: GdalOpenFlags::GDAL_OF_UPDATE|GdalOpenFlags::GDAL_OF_VECTOR,
                ..DatasetOptions::default()
            }
        )
        .unwrap();

    GDALAccess values are supported using [From] implementation

        Dataset::open_ex(
            "roads.geojson",
            DatasetOptions {
                open_flags: GDALAccess::GA_Update.into(),
                ..DatasetOptions::default()
            },
        )
        .unwrap();
  • Add more functions to SpatialRef implementation

  • Breaking: Change Feature::field return type from Result<FieldValue> to Result<Option<FieldValue>>. Fields can be null. Before this change, if a field was null, the value returned was the default value for the underlying type. However, this made it impossible to distinguish between null fields and legitimate values which happen to be default value, for example, an Integer field that is absent (null) from a 0, which can be a valid value. After this change, if a field is null, None is returned, rather than the default value.

    If you happened to rely on this behavior, you can fix your code by explicitly choosing a default value when the field is null. For example, if you had this before:

    let str_var = feature.field("string_field")?
        .into_string()
        .unwrap();

    You could maintain the old behavior with:

    use gdal::vector::FieldValue;
    
    let str_var = feature.field("string_field")?
        .unwrap_or(FieldValue::StringValue("".into()))
        .into_string()
        .unwrap();
  • Fixed potential race condition wrt. GDAL driver initialization

  • Add basic support to read overviews

  • Added a Dataset::build_overviews method

  • BREAKING: update geo-types to 0.7.0. geo-types Coordinate now implement Debug

  • Deprecated SpatialRef::get_axis_mapping_strategy - migrate to SpatialRef::axis_mapping_strategy instead.

  • Add support for reading and setting rasterband colour interpretations

  • Add Geometry::from_wkb and Geometry::wkb functions to convert from/to Well-Known Binary

  • Fixed memory leak in Geometry::from_wkt

  • Breaking: Changed Dataset::create_layer to take a new LayerOptions struct instead of separate arguments.

    Before:

    ds.create_layer("roads", None, wkbLineString)

    After (all fields have usable default values):

    use gdal::LayerOptions;
    ds.create_layer(LayerOptions {
      name: "roads",
      ty: wkbLineString,
      ..Default::default()
    });

    This change also removed Dataset::create_layer_blank(). Use Dataset::create_layer(Default::default()) instead.

  • Wrapper functions for OGR_F_GetFieldAs… methods

  • Wrapper functions for OGR_L_SetAttributeFilter and OGR_L_SetSpatialFilterRect

  • Wrappers for CPLSetThreadLocalConfigOption and CPLGetThreadLocalConfigOption

  • Wrappers for VSIFileFromMemBuffer, VSIUnlink and VSIGetMemFileBuffer

  • Add set_description to the Metadata trait

  • Wrappers for GDALRasterizeGeometries provided in a new rasters::rasterize function

  • Added set_error_handler and remove_error_handler to the config module that wraps CPLSetErrorHandlerEx

  • Breaking: Changed Dataset::create_copy to take a slice of RasterCreationOptions which was previously not included.

    Before:

    dataset.create_copy(&driver, "output_file");

    After:

    dataset.create_copy(&driver, "output_file", &[]);

0.7.1

  • fix docs.rs build for gdal-sys

0.6.0 - 0.7.0

  • Dataset layer iteration and FieldValue types
  • Fix i8 ptr instead of c_char ptr passed to OSRImportFromESRI()
  • Rename spatial_reference to spatial_ref
  • Replace get_extent force flag by get_extent and try_get_extent
  • Add support for transactions on datasets
  • Add feature_count{,_force} and implement Iterator::size_hint
  • Replace failure with thiserror
  • Ability to read into preallocated slice for rasterband
  • Datasets are Send (requires GDAL >= 2.3)
  • User GDALOpenEx
  • GDAL 2.0 conform structure / drop GDAL 1.x
  • Inplace functions use mutable refs
  • Detect GDAL version at build time / remove version features
  • Add support for delaunay_triangulation and simplify functions
  • Add support for 3d points
  • Additional metadata retrieval options
  • Support for GDAL 3 in CI
  • Support for Integer64
  • Geometry Intersection trait
  • Rust 2018
  • support for date and time fields
  • Prebuild bindings
  • Support for ndarray

0.5.0

0.4.0

0.3.0

0.2.1