Python: 使用 shiftgrid 改变经度
Python: using shiftgrid to change longitude
我正在使用 python 3.6 绘制原始经度为 (0,360)
的气候模型数据。我使用了一个名为 shiftgrid
的 basemap
函数,以便将我的数据集中的所有经度值移动到 (-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',
)
希望对您有所帮助。
我正在使用 python 3.6 绘制原始经度为 (0,360)
的气候模型数据。我使用了一个名为 shiftgrid
的 basemap
函数,以便将我的数据集中的所有经度值移动到 (-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',
)
希望对您有所帮助。