问题描述
我使用的是欧洲中距离天气预报中心的netcdf
文件的地图代码。
def interactive_map():
import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
#original name -> _grib2netcdf-webmars-public-svc-green-007-6fe5cac1a363ec1525f54343b6cc9fd8-b5oXS9.nc
fn = '7.nc'
ds = nc.Dataset(fn)
#variables
#longitude,latitude,time,pm1
lons = ds.variables['longitude'][:]
lats = ds.variables['latitude'][:]
time = ds.variables['time'][:]
pm = ds.variables['pm1'][:]
mp = Basemap(projection = 'merc',llcrnrlon = 97.085310,llcrnrlat = 2.044212,urcrnrlon = 106.896219,urcrnrlat = 7.403567,resolution = 'i')
lon,lat = np.meshgrid(lons,lats)
x,y = mp(lon,lat)
cscheme = mp.pcolor(x,y,np.squeeze(pm[0,:,:]),cmap = 'turbo')
mp.drawcoastlines()
mp.drawstates()
mp.drawcountries()
cbar = mp.colorbar(cscheme,location = 'right')
#plt.show()
plt.savefig('map.png')
https://i.imgur.com/4lndRuY.png
我想要的是将地图添加到web2py的视图中,我知道它可以保存图像并且可以渲染图像,但是可以在交互式地图中显示吗?
这是我必须在视图中显示地图的地方:
<!--index.html-->
{{extend 'layout.html'}}
<img src="{{=URL('static','images/map.png')}}" width="500" height="600">
解决方法
我的软件包ncplot(https://ncplot.readthedocs.io/en/latest/)将为NetCDF文件自动创建交互式图。您只需要执行以下操作:
from ncplot import ncplot
ncplot(fn)