我正在尝试在地图上绘制一个大型数据集,据我了解,我需要使用此功能:
m.transform_scalar(temp,lons,lats,nx,ny)
temp是我希望在地图上绘制的温度,其中lons和lats为长度和纬度。
这是代码:
m = Basemap(llcrnrlon=-145.5,llcrnrlat=1.,urcrnrlon=-2.566,urcrnrlat=46.352,\
rsphere=(6378137.00,6356752.3142),\
resolution='l',area_thresh=1000.,projection='lcc',\
lat_1=50.,lon_0=-107.,ax=ax)
nx = int((m.xmax-m.xmin)/5000.)+1
ny = int((m.ymax-m.ymin)/5000.)+1
temp3 = m.transform_scalar(temp, lons, lats,nx,ny)
这是错误: 如果min(delon)< 0.或min(delat)< 0: ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()
我尝试用不同的方法对lons和lats进行排序来弥补这个错误,但是它仍然存在于各种错误中,我很困惑!!我不知道如何对这些大型数据集进行排序! ?有没有其他方法在python中绘制地图上的数据?我怎么能挑战这个错误?
答案 0 :(得分:0)
同样的错误发生在我身上,因为我没有把正确的lons和lats放在一起。它们应该是文档指示的rank-1数组,而不是2D数组(meshgrid-array)。如果你坚持使用imshow,你可以在使用transform_scalar()之前定义lons和lats。例如,数据是lat / lon网格变量:
ny, nx = (data.shape[0], data.shape[1])
lons = np.linspace(lon_0, lon_1, nx)
lats = np.linspace(lat_0, lat_1, ny)
plotdata = m.transform_scalar(data, lons, lats, nx, ny)
im = m.imshow(plotdata, vmin = x0, vmax = x1, cmap = plt.cm.jet)
cb = m.colorbar(im)
plt.show()