Skip to content

1.8.0

Compare
Choose a tag to compare
@Kirill888 Kirill888 released this 21 May 07:44
· 1193 commits to develop since this release

Summary

Lot's of changes since the 1.7 release.

The two primary changes that are most likely to have backward compatibility issues are:

  1. The internal details of how we store geo-registration information on xarray Datasets returned by dc.load have changed in a significant way (#837, #899).
  2. We no longer use GDAL native Python bindings (osgeo.{ogr,osr}) and instead rely on pyproj and shapely as a backend for Geometry and CRS classes (#880).

We no longer store CRS as an object (datacube.utils.geometry.CRS) in an attribute dictionary of the DataArray, instead it is stored in a string format (WKT) in an attribute of a special spatial_ref coordinate. This change allows us to better interface with xarray IO libraries. One can now write data loaded by dc.load with xr.to_netcdf(..) directly and load back with xr.open_dataset(..), all while maintaining geo-registration information (i.e. .geobox property).

Also, since CRS information is now stored on the Coordinate, and not on the DataArray itself, it survives a greater variety of mathematical operations. Attributes on the DataArray would often go missing when doing the most basic of operations, like changing dtype of the loaded data, now CRS metadata is preserved in the majority of the cases.

Moving away from the native GDAL Python bindings is primarily motivated by the complexity of the installation of gdal python library. Both shapely and pyproj that replaced it, offer binary wheels, and are therefore much simpler to install.

Changes since 1.8.0rc1

  • Expanded EO3 support
  • Bug fixes in EO3 handling
  • Cleanup in docs
  • Better compatibility with other libraries for CRS construction
  • Removed ancient db migration code

Full List of Changes

  • Changed geo-registration mechanics for arrays returned by dc.load
  • Migrate geometry and CRS backends from osgeo.ogr and osgeo.osr to shapely and pyproj respectively
  • Fixes for geometries crossing anti meridian
  • EO3 dataset metadata format is now understood by datacube dataset add
  • New virtual product combinator reproject for on-the-fly reprojection of rasters
  • Enhancements to the expressions transformation in virtual products
  • Support /vsi** style paths for dataset locations
  • Remove old Search Expressions and replace with a simpler implementation based on Lark Parser
  • Remove no longer required PyPEG2 dependency
  • Change development version numbers generation. Use setuptools_scm instead of versioneer
  • Deprecated datacube.helpers.write_geotiff, use datacube.utils.cog.write_cog for similar functionality
  • Deprecated datacube.storage.masking, moved to datacube.utils.masking
  • Remove S3AIO driver
  • Removed migration support from datacube releases before 1.1.5.
    If you still run a datacube before 1.1.5 (from 2016 or older), you will need to update it
    using ODC 1.7 first, before coming to 1.8.