底图和影像显示图像未对齐

时间:2018-07-24 13:43:49

标签: python numpy matplotlib-basemap pygrib

我是python和basemap的新手,所以如果我缺少明显的东西或犯了菜鸟错误,请原谅我。

我有一个网格数据集(纬度/经度网格上的天气数据),试图在底图上进行绘制。我可以使用colormesh很好地绘制数据,但是在应用于数据数组本身时,插值/平滑过程似乎会花费太长时间。 las,我希望通过imshow在底图顶部绘制数据,并通过imshow应用插值,因为这样看起来更快。

但是,当我通过imshow绘制数据时,它无法正确对齐。图像似乎“缩小”并且在底图背景上放错了位置。也许它甚至被颠倒了。我尝试使用范围kwarg,但没有任何运气...可能是因为我做得不好。

#Basemap, 6 panel plot
map_image = Basemap(projection='mill', lat_ts=10, llcrnrlon=-86, urcrnrlon=-72, llcrnrlat=36, urcrnrlat=44, resolution='i', ax=ax[location1r, location1c])
x1, y1 = map_image(lons, lats)     

# pull radar data, latitudes and longitudes from grib2 file via pygrib function
raindbz = pull_grib_data_bylevels.pullvalueslevels(totalgribfile,'rain','Derived radar reflectivity',1000,1)
lats, lons = pull_grib_data_bylevels.pulllatlonslevels(totalgribfile,'DBZ','Derived radar reflectivity',1000,1)
raindbz = np.ma.masked_less(raindbz, 105)

#plot via imshow, using custom radar colormap
map_image.imshow(raindbz, cmap=rain_colormap, extent=[x1.min(), x1.max(), y1.min(), y1.max()])

plt.draw()

使用colormesh,图像可以正确绘制:

cs1 = map_image.pcolormesh(x1, y1, raindbz, norm=rainnorm, cmap=rain_colormap)

我觉得我必须做一些事情以匹配imshow图像的“范围”以匹配底图,但是我不确定如何做。我是否需要将数据划分到纬度/经度坐标?我一直感到困惑。

我在下面的图像上附加了链接,以帮助显示问题。

无论如何,我假设修复imshow方法很简单-有人对如何解决此问题有任何指导吗?谢谢!

Colormesh_correct imshow_incorrect

0 个答案:

没有答案