我正在尝试使用mpl_toolkits.basemap在俄克拉荷马州的地图上绘制天气变量,但是我在解决如何插入数据以在地图上绘制时遇到了问题。
以下是我当前代码的一般概念:
lons = [-97.9547, -97.9747, -97.4256]
lats = [35.5322, 35.864, 35.4111]
data = [2,2,2]
map = Basemap(llcrnrlon = -103.068237, llcrnrlat = 33.610045, urcrnrlon = -94.359076, urcrnrlat = 37.040928, resolution = 'i')
CS = map.contour(X, Y, data)
map.drawstates()
plt.show()
我想要完成的是根据lons / lats列表中的相关参考索引在地图上绘制数据值,然后轮廓化数据变量的值。
现在这显然不起作用,因为我需要插入数据。有没有办法可以使用griddata函数完成此操作?鉴于纬度和经度值不是线性间隔,我对如何建立网格边界感到很困惑。
是否有一种更容易的方法可以解决这个问题?
任何帮助和/或提示都会非常感激,这让我无法继续前进到研究项目的下一个主要部分!
答案 0 :(得分:0)
我没有在这台机器上安装python,所以无法测试这个。但是这样的事情应该可以为你提供所需的输入...
import numpy as np
lons = [-97.9547, -97.9747, -97.4256]
lats = [35.5322, 35.864, 35.4111]
data = [2,2,2]
xs, ys = np.meshgrid(lons, lats)
dataMesh = np.empty_like(xs)
for i, j, d in zip(lons, lats, data):
dataMesh[lons.index(i), lats.index(j)] = d
map = Basemap(llcrnrlon = -103.068237, llcrnrlat = 33.610045, urcrnrlon = -94.359076, urcrnrlat = 37.040928, resolution = 'i')
CS = map.contour(xs, ys, dataMesh)
map.drawstates()
plt.show()
就像我说的那样,我没有测试过这个。我不知道如果你试图绘制unititialised值会发生什么。您可能需要使用不同的numpy数组初始化。