Interactive exploration of triangular mesh ocean model data

Here’s an example of how to interactively explore data from an unstructured grid (triangular mesh) ocean model from AWS Open Data using Holoviz.

It’s a bit clunky – is this still the best approach?

import xarray as xr
import intake
import numpy as np
import geoviews as gv
import holoviews.operation.datashader as dshade
import pandas as pd
import holoviews as hv
hv.extension('bokeh')

cat = intake.open_catalog('https://noaa-nos-cora-pds.s3.amazonaws.com/CORA_V1.1_intake.yml')
ds = cat['CORA-V1.1-swan_HS.63'].read()
v = np.vstack((ds['x'], ds['y'], ds['depth'])).T
verts = pd.DataFrame(v, columns=['x','y','depth'])
points = gv.operation.project_points(gv.Points(verts, vdims=['depth']))
tris = pd.DataFrame(ds['element'].values.astype('int')-1, columns=['v0','v1','v2'])
basemap = gv.tile_sources.OSM
trimesh = gv.TriMesh((tris, points), label='Triangular mesh water depth (m)')
mesh = dshade.rasterize(trimesh).opts(data_aspect=1, frame_width=400, colorbar=True)
display(basemap * mesh)

producing:

2 Likes

Nice! We’ve applied for NSF funding to integrate with uxarray, but won’t know about that until the summer, so for the meantime, I think this is the best we’ve got.

1 Like