xrspatial.geotiff.write_geotiff_gpu#

xrspatial.geotiff.write_geotiff_gpu(data, path: str, *, crs: int | str | None = None, nodata=None, compression: str = 'zstd', compression_level: int | None = None, tile_size: int = 256, predictor: bool = False, cog: bool = False, overview_levels: list[int] | None = None, overview_resampling: str = 'mean') None[source]#

Write a CuPy-backed DataArray as a GeoTIFF with GPU compression.

Tiles are extracted and compressed on the GPU via nvCOMP, then assembled into a TIFF file on CPU. The CuPy array stays on device throughout compression – only the compressed bytes transfer to CPU for file writing.

When cog=True, generates overview pyramids on GPU and writes a Cloud Optimized GeoTIFF with all IFDs at the file start for efficient range-request access.

Falls back to CPU compression if nvCOMP is not available.

Parameters:
  • data (xr.DataArray (CuPy-backed) or cupy.ndarray) – 2D raster on GPU.

  • path (str) – Output file path.

  • crs (int, str, or None) – EPSG code or WKT string.

  • nodata (float, int, or None) – NoData value.

  • compression (str) – ‘zstd’ (default, fastest on GPU), ‘deflate’, ‘jpeg’, or ‘none’. JPEG uses nvJPEG when available, falling back to Pillow.

  • compression_level (int or None) – Compression effort level. Accepted for API compatibility but currently ignored – nvCOMP does not expose level control.

  • tile_size (int) – Tile size in pixels (default 256).

  • predictor (bool) – Apply horizontal differencing predictor.

  • cog (bool) – Write as Cloud Optimized GeoTIFF with overviews.

  • overview_levels (list[int] or None) – Overview decimation factors (e.g. [2, 4, 8]). Only used when cog=True. If None and cog=True, auto-generates levels by halving until the smallest overview fits in a single tile.

  • overview_resampling (str) – Resampling method for overviews: ‘mean’ (default), ‘nearest’, ‘min’, ‘max’, ‘median’, or ‘mode’.