如何返回互动地图?

问题描述

我使用的是欧洲中距离天气预报中心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)