dask.config.set(scheduler="threads", num_workers=8)<dask.config.set at 0x7fc410434050>
BRAN2023, the Bluelink ocean reanalysis (CSIRO and the Bureau of Meteorology), is daily, 0.1 degree, 51 levels, from 1993: hundreds of terabytes of netCDF on NCI’s THREDDS server. kerchunk references in Parquet describe every chunk of every file, and GDAL’s Zarr driver reads them as one store. See Byte-reference stores for what such a reference table holds.
THREDDS limits aggressive parallel reads. Eight threads is a safe cap:
ZARR:"/vsicurl/https://raw.githubusercontent.com/mdsumner/virtualized/d0b9c23317d2de07c3851eb9dfc968be1761d5b8/zarr/ocean_temp.zarr"<xarray.Dataset> Size: 13TB
Dimensions: (Time: 5844, st_ocean: 51, yt_ocean: 1500, xt_ocean: 3600, nv: 2)
Coordinates:
* Time (Time) float64 47kB 1.132e+04 1.132e+04 ... 1.717e+04 1.717e+04
* st_ocean (st_ocean) float64 408B 2.5 7.5 12.5 ... 3.603e+03 4.509e+03
* yt_ocean (yt_ocean) float64 12kB -74.95 -74.85 -74.75 ... 74.75 74.85 74.95
* xt_ocean (xt_ocean) float64 29kB 0.05 0.15 0.25 0.35 ... 359.8 359.9 360.0
* nv (nv) float64 16B 1.0 2.0
Data variables:
temp (Time, st_ocean, yt_ocean, xt_ocean) float64 13TB ...
Time comes through as numbers here: the references carry the values and units of the source, and decoding them is a one-liner if they are not decoded already. One day’s surface temperature over the Tasman Sea, chunked so dask reads the few chunks in parallel:
if live("bran-virtualized-pinned"):
surf = (bran["temp"].isel(Time=0, st_ocean=0)
.sel(yt_ocean=slice(-48, -25), xt_ocean=slice(145, 170))
.chunk({"yt_ocean": 300, "xt_ocean": 300}).load())
fig, ax = plt.subplots(figsize=(7, 6))
surf.plot(ax=ax, cmap="RdYlBu_r")
ax.set_aspect(1 / np.cos(np.radians(-36)))
plt.show()
The same references, one store per variable per year, hosted on Pawsey’s object store and opened through a vrt:// wrapper:
vrt:///vsicurl/https://projects.pawsey.org.au/aad-index/vzarr/ocean_temp_2023.parqRendered with GDAL 3.13.3, xarray 2026.4.1.dev32+g71cfb13ac, numpy 2.5.4, gdalxarray 0.5.1, rasterix 0.2.4.