【问题标题】:How can i return interactive map?如何返回交互式地图?
【发布时间】:2021-01-31 12:32:25
【问题描述】:

我有这个使用 欧洲中期天气预报中心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">

【问题讨论】:

    标签: python numpy web2py matplotlib-basemap netcdf4


    【解决方案1】:

    我的包 ncplot (https://ncplot.readthedocs.io/en/latest/) 将自动为 NetCDF 文件创建交互式绘图。您只需要执行以下操作:

    from ncplot import ncplot
    ncplot(fn)
    

    【讨论】:

    • 谢谢,但我看不到国家和州行:i.imgur.com/Tekja2G.png
    • 海岸线将被添加到即将发布的版本中。在引擎盖下它使用 hvplot。此处的代码示例应该适用于您的数据:hvplot.holoviz.org/user_guide/Geographic_Data.html
    • 不错的工具@RobertWilson,从来不知道有这样的东西存在!我使用“ncview”已经有一段时间了,但在某些方面后者更难使用(例如放大和缩小地图可能很糟糕)......但是,看不到任何方法如何更改颜色限制例子。有这种功能的可能性或意愿吗?
    • 谢谢@msi_gerva。该软件包相当新,并且在 pypi 上使用了一周。有很多东西可以添加。 Colorlimits 和 scales 在我的待办事项清单上。从长远来看,我希望它能完全取代 ncview,后者在现代 4K 屏幕上开始表现不佳。全屏浏览器查看效果要好得多。
    • 感谢@RobertWilson 的快速回复,希望您有时间和机会快速添加所需的功能!顺便说一句,你有没有机会加快应用程序的初始化,还是我这边?在我的情况下(Linux Mint,Python2),从冷开始大约需要 1 分钟......“ncview”要快得多,但可能是它初始化速度很快,因为它在开始时不会产生任何情节。只是建议,而不是批评。
    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2012-07-16
    相关资源
    最近更新 更多