0

我正在尝试使用 netcdf 绘制数据,Basemap但我猜由于纬度指数是倒置的,所以我得到了一张倒置的地图。我应该如何解决这个问题?谢谢!

fnc = Dataset(ncfile, 'r')
lat = fnc.variables['latitude'][:]
lon = fnc.variables['longitude'][:]
level = fnc.variables['level']
mydata = fnc.variables['Data'][:]
imgplot = plt.imshow(mydata[0, 0, :, :])
imgplot.set_cmap('RdYlGn')
plt.colorbar()
plt.show

在此处输入图像描述

m = Basemap(llcrnrlon = -180, llcrnrlat = -90, urcrnrlon = 180, urcrnrlat= +90, resolution = 'l', epsg=4326)
x, y = m(lon, lat)
im = m.imshow(mydata[0, 0, :, :])
m.drawcoastlines()
plt.show()

在此处输入图像描述

4

2 回答 2

1

首先,请注意,您当前正在阅读的一维Data

mydata = fnc.variables['Data'][:]

但后来你试图提取它的切片,就好像它是 4D 一样:

imgplot = plt.imshow(mydata[0, 0, :, :])

因此,您需要读取所有 4 个维度Data(可能是时间、级别、纬度、经度?):

mydata = fnc.variables['Data'][:,:,:,:]

然后使用以下::-1语法反转纬度:

imgplot.plotimshow(mydata[0, 0, ::-1, :])
于 2016-07-12T17:52:17.507 回答
0

我相信绘图命令需要知道地图坐标 x,y。尝试更换

im = m.imshow(mydata[0, 0, :, :])

m.pcolormesh(x,y,mydata[0,0,:,:])

它应该可以工作。

于 2016-07-12T17:54:15.177 回答