Пользователь всегда будет смотреть на локальный географический регион, например, на один город/один штат (это будет заранее определено).
/>Мои данные представлены в формате netcd4 с размерами по широте, долготе, времени и переменному количеству осадков.
Я использую плитки OSM для географического региона и Geovie/Holoview для создания изображения и его рендеринга в HTML. файл.
Я вставлю этот HTML-файл как iframe на другой веб-сайт.
Моя проблема в том, что я не могу ограничить количество плиток, когда я начинаю уменьшать масштаб, я все равно могу уменьшить масштаб до всего world и что размер моего файла указан в МБ, для одного набора данных он составлял 68 МБ, а для другого - 600 МБ.
Мой код приведен ниже:
Код: Выделить всё
import xarray as xr
import holoviews as hv
import geoviews as gv
from geoviews import tile_sources
# Set up Holoviews and GeoViews with the Bokeh backend
hv.extension('bokeh')
# Load the NetCDF file
file_path = "RF25_ind2023_rfp25.nc" # Path to the NetCDF file
# Replace with the path to your NetCDF file
data = xr.open_dataset(file_path)
# Extract variables
time = data['TIME']
lat = data['LATITUDE']
lon = data['LONGITUDE']
rainfall = data['RAINFALL']
# Ensure latitude and longitude are dimensions, not coordinates
rainfall = rainfall.transpose('TIME', 'LATITUDE', 'LONGITUDE')
# Create a HoloMap of GeoViews Images
images = {}
tiles = tile_sources.OSM
#.opts(frame_width=800, frame_height=600,global_extent=False, width=800, height=600,xlim=(60, 110), ylim=(0, 40))
for t in time.values:
rainfall_slice = rainfall.sel(TIME=t)
gv_image = gv.Image(
(lon, lat, rainfall_slice),
kdims=['LONGITUDE', 'LATITUDE'],
vdims=['RAINFALL']
).opts(alpha=0.5, cmap='Blues', colorbar=True, title="Rainfall",tools=['hover'])
images[float(t)] = gv_image # Ensure time is numeric for the slider
# Create a HoloMap indexed by time
#holomap = hv.HoloMap(images, kdims=['TIME'])
dim_values = time.values
# Convert to a set
dim_values_set = set(dim_values)
# Print the set
#print(dim_values_set)
holomap= gv.HoloMap({t:(tiles*images[float(t)])
for t in dim_values_set},kdims=['TIME'])
holomap.opts(width=800,height=500)
# Save the visualization as an HTML file
output_file = 'rainfall_visualization_with_slider.html'
hv.save(holomap, output_file, backend='bokeh')
print(f"Visualization saved as {output_file}")
Я попробовал настроить параметры источников фрагментов, но это не сработало.
Подробнее здесь: https://stackoverflow.com/questions/792 ... th-osm-til
Мобильная версия