使用python中的底图旋转地图

时间:2016-07-12 04:22:14

标签: python gis netcdf matplotlib-basemap netcdf4

我正在尝试使用Basemap来绘制来自netcdf的数据,但我想由于纬度指数被反转,我会得到一张倒置的地图。我该怎么解决这个问题?谢谢!

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

enter image description here

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()

enter image description here

2 个答案:

答案 0 :(得分:1)

首先,请注意您目前正在阅读Data的一个维度:

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

但是后来你试图将它的切片提取出来,好像它是4D:

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

所以,你会想要读入Data的所有4个维度(也许那些是时间,级别,纬度,经度?):

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

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

imgplot.plotimshow(mydata[0, 0, ::-1, :])

答案 1 :(得分:0)

我认为绘图命令需要知道地图坐标x,y。尝试替换

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

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

它应该有用。