Python: 使用 shiftgrid 改变经度

Python: using shiftgrid to change longitude

我正在使用 python 3.6 绘制原始经度为 (0,360) 的气候模型数据。我使用了一个名为 shiftgridbasemap 函数,以便将我的数据集中的所有经度值移动到 (-180,180)。但是我仍然得到一张空地图。任何的意见都将会有帮助。谢谢!

到目前为止,这是我的代码:

#Longitude values:
a=0
b=360

prcp = np.load('data.npy')

data=np.average(prcp,axis=0)

plt.figure()
# create Basemap
x1 = np.linspace(a,b, data.shape[1])
y1 = np.linspace(-90, 90, data.shape[0])
xx1, yy1 = np.meshgrid(x1, y1)

data, x1 = shiftgrid(180., data, x1,start= False)

我自己 运行 遇到过这类问题。我的解决方案是使用 cdo 转换输入文件的坐标(有一个 python 前端可用于 cdo)。可以通过以下方式完成转变:

cdo sellonlatbox,-180,180,-90,90 input.nc output.nc

或者,如果您有可用的 python 前端,您可以直接获取数据,如 netCDF4.Dataset

from cdo import Cdo
cdo = Cdo()

data = cdo.sellonlatbox(
    '-180,180,-90,90',
    input = 'input.nc',
)

希望对您有所帮助。