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: str | list[str], raster_transformers: list['RasterTransformer'] = [], allow_streaming: bool = False, channel_order: Optional[Sequence[int]] = None, bbox: rastervision.core.box.Box | None = None, tmp_dir: str | None = None)[source]#

Constructor.

Parameters:
  • uris (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 (rastervision.core.box.Box | None) – User-specified crop of the extent. If None, the full extent available in the source file is used.

  • tmp_dir (str | None) – 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: str | list[str], raster_transformers: list['RasterTransformer'] = [], allow_streaming: bool = False, channel_order: Optional[Sequence[int]] = None, bbox: rastervision.core.box.Box | None = None, tmp_dir: str | None = None)[source]#

Constructor.

Parameters:
  • uris (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 (rastervision.core.box.Box | None) – User-specified crop of the extent. If None, the full extent available in the source file is used.

  • tmp_dir (str | None) – 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: str | None = 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:
  • vrt_dir (str | None) –

  • stream (bool) –

Return type:

str

get_chip(window: Box, bands: Optional[Union[Sequence[int], slice]] = None, out_shape: tuple[int, ...] | None = 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]]) – Subset of bands to read. Note that this will be applied on top of the channel_order (if specified). E.g. if this is an RGB image and channel_order=[2, 1, 0], then bands=[0] will return the B-channel. Defaults to None.

  • out_shape (tuple[int, ...] | None) – (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, *args, **kwargs) ndarray#

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

Parameters:

window_map_coords (Box) –

Return type:

ndarray

get_raw_chip(window: Box, out_shape: tuple[int, int] | None = None) ndarray#

Return raw chip without applying channel_order or transforms.

Parameters:
  • window (Box) – The window for which to get the chip.

  • out_shape (tuple[int, int] | None) –

Returns:

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

Return type:

np.ndarray

resize(chip: ndarray, out_shape: tuple[int, int] | None = 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.

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

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