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.load
have changed in a significant way (#837, #899). - We no longer use GDAL native Python bindings (
osgeo.{ogr,osr}
) and instead rely onpyproj
andshapely
as a backend forGeometry
andCRS
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
andosgeo.osr
toshapely
andpyproj
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 ofversioneer
- Deprecated
datacube.helpers.write_geotiff
, usedatacube.utils.cog.write_cog
for 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.