Basic needs: plot a map, and update accoding to variable. Challenges:
- have to use rasterize, aggregation by datashade (big data)
- holoviews .DynamicMap seems like not support rasterize.
import holoviews as hv, datashader as ds, geoviews as gv, geoviews.tile_sources as gvts
from holoviews.operation.datashader import datashade, rasterize, dynspread
import panel as pn
hv.extension('bokeh')
opts = dict(width=700, height=500, tools=['hover'],
colorbar=True,symmetric=True,clim=(-5,5),
cmap='Spectral')
tiles = gvts.OSM.options(alpha=0.6)
def load_dh(var=None):
points = gv.Points(df, kdims=['longitude','latitude'])
return rasterize(points, x_sampling=0.01, y_sampling=0.01, aggregator=ds.mean(var)).options(**opts)* tiles
def on_var_select(event):
var = event.obj.value
col[-1] = load_dh(var=var)
var_select = pn.widgets.Select(name='var:', options=['dh_after_dtm10', '2', '3'])
var_select.param.watch(on_var_select, parameter_names=['value'])
col = pn.Column(var_select, load_dh(var_select.value))
col
The plot did show, but not update with changing variables:
I also try DynamicMap, which is not compataible with rasterize](Panel/Hvplot interaction when variable is changing):
Exception: Nesting a DynamicMap inside a DynamicMap is not supported.