Skip to content

Commit

Permalink
Fixes and improvements for geotiff encoder
Browse files Browse the repository at this point in the history
  • Loading branch information
chpolste committed Feb 5, 2025
1 parent a7a2337 commit aea23ad
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions src/earthkit/data/encoders/geotiff.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,20 @@ class GeoTIFFEncodedData(EncodedData):
def __init__(self, ds):
self.ds = ds

def to_bytes(self):
def to_bytes(self, **kwargs):
import rasterio.io

m = rasterio.io.MemoryFile
self.ds.rio.to_raster(m, driver=self._GDAL_DRIVER)
m = rasterio.io.MemoryFile()
self._to_raster(m, **kwargs)
return m.getbuffer()

def to_file(self, f):
self.ds.rio.to_raster(f, driver=self._GDAL_DRIVER)
def to_file(self, f, **kwargs):
self._to_raster(f, **kwargs)

def _to_raster(self, dst, **kwargs):
options = {"driver": self._GDAL_DRIVER}
options.update(kwargs)
self.ds.rio.to_raster(dst, **options)

def metadata(self, key):
raise NotImplementedError
Expand All @@ -51,7 +56,11 @@ def encode(self, data, **kwargs):
return data._encode(self, **kwargs)

def _encode(self, data, **kwargs):
return GeoTIFFEncodedData(data.to_xarray())
ds = data.to_xarray()
if ds.rio.crs is None:
crs = data.projection().to_cartopy_crs()
ds.rio.write_crs(crs, inplace=True)
return GeoTIFFEncodedData(ds)

def _encode_field(self, field, **kwargs):
return self._encode(field, **kwargs)
Expand Down

0 comments on commit aea23ad

Please sign in to comment.