1.8.0
Summary
Lot's of changes since the 1.7 release.
The two primary changes that are most likely to have backward compatibility issues are:
- The internal details of how we store geo-registration information on xarray Datasets returned by
dc.loadhave changed in a significant way (#837, #899). - We no longer use GDAL native Python bindings (
osgeo.{ogr,osr}) and instead rely onpyprojandshapelyas a backend forGeometryandCRSclasses (#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
CRSconstruction - 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.ograndosgeo.osrtoshapelyandpyprojrespectively - Fixes for geometries crossing anti meridian
- EO3 dataset metadata format is now understood by
datacube dataset add - New virtual product combinator
reprojectfor on-the-fly reprojection of rasters - Enhancements to the
expressionstransformation 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_scminstead ofversioneer - Deprecated
datacube.helpers.write_geotiff, usedatacube.utils.cog.write_cogfor similar functionality - Deprecated
datacube.storage.masking, moved todatacube.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.