Source code for hydromt.data_catalog.drivers.geodataset.geodataset_driver

"""Driver for handling IO of GeoDatasets."""

from abc import ABC, abstractmethod
from logging import getLogger
from typing import List, Optional

import xarray as xr

from hydromt._typing import Geom, SourceMetadata, StrPath, TimeRange
from hydromt._typing.error import NoDataStrategy
from hydromt._typing.type_def import Predicate
from hydromt.data_catalog.drivers import BaseDriver

logger = getLogger(__name__)


[docs] class GeoDatasetDriver(BaseDriver, ABC): """Abstract Driver to read GeoDatasets."""
[docs] @abstractmethod def read( self, uris: List[str], *, mask: Optional[Geom] = None, predicate: Predicate = "intersects", variables: Optional[List[str]] = None, time_range: Optional[TimeRange] = None, metadata: Optional[SourceMetadata] = None, handle_nodata: NoDataStrategy = NoDataStrategy.RAISE, **kwargs, ) -> Optional[xr.Dataset]: """ Read in any compatible data source to an xarray Dataset. args: """ ...
[docs] def write( self, path: StrPath, ds: xr.Dataset, **kwargs, ) -> str: """ Write out a GeoDataset to file. Not all drivers should have a write function, so this method is not abstract. args: """ raise NotImplementedError( f"Writing using driver '{self.name}' is not supported." )