@@ -145,6 +145,7 @@ Native GeoTIFF and Cloud Optimized GeoTIFF reader/writer. No GDAL required.
145145| :-----| :------------| :-----:| :----:| :--------:| :-------------:| :-----:|
146146| [ open_geotiff] ( xrspatial/geotiff/__init__.py ) | Read GeoTIFF / COG / VRT | ✅️ | ✅️ | ✅️ | ✅️ | ✅️ |
147147| [ to_geotiff] ( xrspatial/geotiff/__init__.py ) | Write DataArray as GeoTIFF / COG | ✅️ | ✅️ | ✅️ | ✅️ | ✅️ |
148+ | [ write_geotiff_gpu] ( xrspatial/geotiff/__init__.py ) | GPU-accelerated GeoTIFF / COG write | | | ✅️ | | |
148149| [ write_vrt] ( xrspatial/geotiff/__init__.py ) | Generate VRT mosaic from GeoTIFFs | ✅️ | | | | |
149150
150151` open_geotiff ` and ` to_geotiff ` auto-dispatch to the correct backend:
@@ -163,6 +164,10 @@ open_geotiff('mosaic.vrt') # VRT mosaic (auto-detected
163164to_geotiff(cupy_array, ' out.tif' ) # auto-detects GPU
164165to_geotiff(data, ' out.tif' , gpu = True ) # force GPU compress
165166to_geotiff(data, ' ortho.tif' , compression = ' jpeg' ) # JPEG for orthophotos
167+ to_geotiff(data, ' cog.tif' , cog = True ) # COG with auto overviews
168+ to_geotiff(data, ' cog.tif' , cog = True , # COG with explicit levels
169+ overview_levels = [2 , 4 , 8 ],
170+ overview_resampling = ' nearest' )
166171write_vrt(' mosaic.vrt' , [' tile1.tif' , ' tile2.tif' ]) # generate VRT
167172
168173open_geotiff(' dem.tif' , dtype = ' float32' ) # half memory
@@ -189,7 +194,7 @@ ds.xrs.open_geotiff('large_dem.tif') # read windowed to Dataset
189194- Cloud storage: S3 (` s3:// ` ), GCS (` gs:// ` ), Azure (` az:// ` ) via fsspec
190195- GPUDirect Storage: SSD→GPU direct DMA via KvikIO (optional)
191196- Thread-safe mmap reads, atomic writes, HTTP connection reuse (urllib3)
192- - Overview generation: mean, nearest, min, max, median, mode, cubic
197+ - Overview generation (CPU and GPU) : mean, nearest, min, max, median, mode, cubic
193198- Planar config, big-endian byte swap, PixelIsArea/PixelIsPoint
194199
195200** Read performance** (real-world files, A6000 GPU):
0 commit comments