RasterioSource#

class RasterioSource[source]#

Bases: RasterSource

A rasterio-based RasterSource.

This RasterSource can read any file that can be opened by Rasterio/GDAL.

If there are multiple image files that cover a single scene, you can pass the corresponding list of URIs, and read them as if it were a single stitched-together image.

It can also read non-georeferenced images such as .tif, .png, and .jpg files. This is useful for oblique drone imagery, biomedical imagery, and any other (potentially massive!) non-georeferenced images.

If channel_order is None, then use non-alpha channels. This also sets any masked or NODATA pixel values to be zeros.

Attributes

bbox

Bounding box applied to the source imagery.

crs_transformer

Associated CRSTransformer.

dtype

numpy.dtype of the chips read from this source.

extent

Extent of the RasterSource.

num_channels

Number of channels in the chips read from this source.

shape

Shape of the raster as a (height, width, num_channels) tuple.

__init__(uris: Union[str, List[str]], raster_transformers: List[RasterTransformer] = [], allow_streaming: bool = False, channel_order: Optional[Sequence[int]] = None, bbox: Optional[Box] = None, tmp_dir: Optional[str] = None)[source]#

Constructor.

Parameters
  • uris (Union[str, List[str]]) – One or more URIs of images. If more than one, the images will be mosaiced together using GDAL.

  • raster_transformers (List['RasterTransformer']) – RasterTransformers to use to transform chips after they are read.

  • allow_streaming (bool) – If True, read data without downloading the entire file first. Defaults to False.

  • channel_order (Optional[Sequence[int]]) – List of indices of channels to extract from raw imagery. Can be a subset of the available channels. If None, all channels available in the image will be read. Defaults to None.

  • bbox (Optional[Box], optional) – User-specified crop of the extent. If None, the full extent available in the source file is used.

  • tmp_dir (Optional[str]) – Directory to use for storing the VRT (needed if multiple uris or allow_streaming=True). If None, will be auto-generated. Defaults to None.

Methods

__init__(uris[, raster_transformers, ...])

Constructor.

download_data([vrt_dir, stream])

Download any data needed for this raster source.

get_chip(window[, bands, out_shape])

Read a chip specified by a window from the file.

get_chip_by_map_window(window_map_coords[, ...])

Same as get_chip(), but input is a window in map coords.

get_raw_chip(window[, out_shape])

Return raw chip without applying channel_order or transforms.

resize(chip[, out_shape])

set_bbox(bbox)

Set self.bbox to the given value.

__getitem__(key: Any) ndarray[source]#
Parameters

key (Any) –

Return type

ndarray

__init__(uris: Union[str, List[str]], raster_transformers: List[RasterTransformer] = [], allow_streaming: bool = False, channel_order: Optional[Sequence[int]] = None, bbox: Optional[Box] = None, tmp_dir: Optional[str] = None)[source]#

Constructor.

Parameters
  • uris (Union[str, List[str]]) – One or more URIs of images. If more than one, the images will be mosaiced together using GDAL.

  • raster_transformers (List['RasterTransformer']) – RasterTransformers to use to transform chips after they are read.

  • allow_streaming (bool) – If True, read data without downloading the entire file first. Defaults to False.

  • channel_order (Optional[Sequence[int]]) – List of indices of channels to extract from raw imagery. Can be a subset of the available channels. If None, all channels available in the image will be read. Defaults to None.

  • bbox (Optional[Box], optional) – User-specified crop of the extent. If None, the full extent available in the source file is used.

  • tmp_dir (Optional[str]) – Directory to use for storing the VRT (needed if multiple uris or allow_streaming=True). If None, will be auto-generated. Defaults to None.

download_data(vrt_dir: Optional[str] = None, stream: bool = False) str[source]#

Download any data needed for this raster source.

Return a single local path representing the image or a VRT of the data.

Parameters
Return type

str

get_chip(window: Box, bands: Optional[Union[Sequence[int], slice]] = None, out_shape: Optional[Tuple[int, ...]] = None) ndarray[source]#

Read a chip specified by a window from the file.

Parameters
  • window (Box) – Bounding box of chip in pixel coordinates.

  • bands (Optional[Union[Sequence[int], slice]], optional) – Subset of bands to read. Note that this will be applied on top of the channel_order (if specified). So if this is an RGB image and channel_order=[2, 1, 0], then using bands=[0] will return the B-channel. Defaults to None.

  • out_shape (Optional[Tuple[int, ...]], optional) – (height, width) of the output chip. If None, no resizing is done. Defaults to None.

Returns

A chip of shape (height, width, channels).

Return type

np.ndarray

get_chip_by_map_window(window_map_coords: Box, out_shape: Optional[Tuple[int, int]] = None) ndarray#

Same as get_chip(), but input is a window in map coords.

Parameters
Return type

ndarray

get_raw_chip(window: Box, out_shape: Optional[Tuple[int, int]] = None) ndarray#

Return raw chip without applying channel_order or transforms.

Parameters
Returns

Array of shape (…, height, width, channels).

Return type

np.ndarray

resize(chip: ndarray, out_shape: Optional[Tuple[int, int]] = None) ndarray#
Parameters
Return type

ndarray

set_bbox(bbox: Box) None#

Set self.bbox to the given value.

Note

This method is idempotent.

Parameters

bbox (Box) – User-specified bbox in pixel coordinates.

Return type

None

property bbox: Box#

Bounding box applied to the source imagery.

property crs_transformer: RasterioCRSTransformer#

Associated CRSTransformer.

property dtype: dtype#

numpy.dtype of the chips read from this source.

property extent: Box#

Extent of the RasterSource.

property num_channels: int#

Number of channels in the chips read from this source.

Note

Unlike the parent class, RasterioSource applies channel_order (via bands_to_read) before raster_transformers. So the number of output channels is not guaranteed to be equal to len(channel_order).

property shape: Tuple[int, int, int]#

Shape of the raster as a (height, width, num_channels) tuple.