Skip to content

Instantly share code, notes, and snippets.

@mdsumner
Created November 8, 2025 08:02
Show Gist options
  • Save mdsumner/04afae46616b20216062882c5b7c448b to your computer and use it in GitHub Desktop.
Save mdsumner/04afae46616b20216062882c5b7c448b to your computer and use it in GitHub Desktop.
@mdsumner
Copy link
Author

mdsumner commented Nov 8, 2025

Take two input netcdfs.

## convert straight to netcdf
gdal mdim mosaic --array sst /vsicurl/https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/198109/oisst-avhrr-v02r01.19810901.nc /vsicurl/https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/198109/oisst-avhrr-v02r01.19810902.nc   sst.nc

## convert to VRT 
gdal mdim mosaic --array sst /vsicurl/https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/198109/oisst-avhrr-v02r01.19810901.nc /vsicurl/https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/198109/oisst-avhrr-v02r01.19810902.nc   sst.vrt

## convert to Zarr V3, with rechunking
gdal mdim mosaic --array sst /vsicurl/https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/198109/oisst-avhrr-v02r01.19810901.nc /vsicurl/https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/198109/oisst-avhrr-v02r01.19810902.nc   sst.zarr --co "ARRAY:IF(DIM=4):BLOCKSIZE=2,1,360,720" --co ARRAY:COMPRESS=ZSTD --co ARRAY:FORMAT=ZARR_V3

Use wildcard on the same https sources to get an entire month

gdal mdim mosaic --array sst /vsicurl/https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/198109/oisst-avhrr-v02r01.198109*.nc   sst-sept.vrt

open that whole month as xarray

from gdx import GDALBackendEntrypoint
backend = GDALBackendEntrypoint()
backend.open_dataset("sst-sept.vrt", multidim = True, chunks = None)
<xarray.Dataset> Size: 62MB
Dimensions:  (lat: 720, lon: 1440, time: 30, zlev: 1)
Coordinates:
  * lat      (lat) float64 6kB -89.88 -89.62 -89.38 -89.12 ... 89.38 89.62 89.88
  * lon      (lon) float64 12kB 0.125 0.375 0.625 0.875 ... 359.4 359.6 359.9
  * time     (time) float64 240B 1.339e+03 1.34e+03 ... 1.367e+03 1.368e+03
  * zlev     (zlev) float64 8B 0.0
Data variables:
    sst      (time, zlev, lat, lon) int16 62MB ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment