使用箭袋图重叠绘制python中的geotiff

时间:2017-06-09 16:52:25

标签: python matplotlib plot gdal netcdf

我要求深入了解在地理图像上叠加速度的箭袋图。我一直在使用gdal来处理geotiff,并使用netcdf4库来处理速度数据。

到目前为止,我已经使用imshow()来绘制geotiff,放大我的学习区域。在范围参数中,x和y是域的东边和北边的numpy数组。下面是我的代码,以及我得到的数字的图片。

# plot study area
fig, ax = plt.subplots(figsize=(8, 8))
fig = plt.imshow(data[:3,:,:].transpose((1, 2, 0)), extent =
        [x[1000],x[2000],y[750],y[2000]])

imshow() figure of study area, zoomed in

在模型域中,我将电流的速度大小作为箭袋图,其中eenn是东向和北向速度的坐标。从netCDF文件中提取速度和坐标数据。下面是箭头代码和箭头图的链接。

plt.figure(figsize=(12, 12))
plt.quiver(ee,nn,test_u,test_v, scale=75)
plt.show()

quiver plot to overlay

我想在我的geotiff中叠加速度幅度。下面是我尝试执行此操作的代码。我相信我的单位的imshow人物和我的箭袋的单位都没有正确排列。

plt.figure(figsize=(12, 12))
plt.imshow(data[:3,750:2000,1000:2000].transpose((1, 2, 0)),
       extent = [x[1000],x[2000],y[750],y[2000]])
plt.quiver(ee,nn,test_u,test_v, scale=75)
plt.show()

有关如何通过此打嗝的任何提示,我们表示赞赏。如何设置我的imshow单位,使像素与地理坐标匹配,如何使其与箭头图的单位相匹配。我在python和numpy,gdal以及相关库中工作有点新鲜。谢谢。

1 个答案:

答案 0 :(得分:2)

您需要使用extent并将其设置为您拥有的实际单位。在这里,您似乎只需要将x中的数据乘以1000。

extent = [x[1000]*1000,x[2000]*1000,y[750]*1000,y[2000]*1000]

但是,只有您可以确定坐标eenn与图像像素的关系。