Source code for cw_geodata.raster_image.image
from osgeo import gdal
import rasterio
from affine import Affine
[docs]def get_geo_transform(raster_src):
"""Get the geotransform for a raster image source.
Arguments
---------
raster_src : str, :class:`rasterio.DatasetReader`, or `osgeo.gdal.Dataset`
Path to a raster image with georeferencing data to apply to `geom`.
Alternatively, an opened :class:`rasterio.Band` object or
:class:`osgeo.gdal.Dataset` object can be provided. Required if not
using `affine_obj`.
Returns
-------
transform : :class:`affine.Affine`
An affine transformation object to the image's location in its CRS.
"""
if isinstance(raster_src, str):
affine_obj = rasterio.open(raster_src).transform
elif isinstance(raster_src, rasterio.DatasetReader):
affine_obj = raster_src.transform
elif isinstance(raster_src, gdal.Dataset):
affine_obj = Affine.from_gdal(*raster_src.GetGeoTransform())
return affine_obj