如何使用python将netcdf数据集相对于网格单元格数移位?

时间:2017-12-13 06:33:41

标签: python netcdf4

我有一张全球地图(经度,纬度,深度)作为netcdf文件(大小:236,1440),并且想要转移'从-180/180到-270/90的经度,使得单元号0 = -270等(意味着澳大利亚大陆位于网格单元号0到~300附近)。我怎么能用python做到这一点?到目前为止,我有

Bathy=Dataset('/path/to/file', 'r+', format="NETCDF4")

lon=Bathy.variables[u'x'][:]

lat=Bathy.variables[u'y'][:]

depth=Bathy.variables[u'z'][:]

lon=lon[:]-90

Bathy.variables[u'x'][:]=lon

Bathy.close()

但是这只会移动参考框架而不是实际网格(这意味着0度经度转移到西澳大利亚等)。提前感谢!

1 个答案:

答案 0 :(得分:0)

好的,我找到了一种如何使用np.roll:

执行此操作的方法
Bathy=Dataset('/path/to/file', 'r+', format="NETCDF4")
lon=Bathy.variables[u'x'][:]
lat=Bathy.variables[u'y'][:]
depth=Bathy.variables[u'z'][:]

depth_new=np.roll(depth,360,axis=1)
lon_new=lon[:]-90

Bathy.variables[u'x'][:]=lon_new
Bathy.variables[u'z'][:]=depth_new
Bathy.close()

它将深度值360个网格单元沿着轴1向右移动(在我的情况下为-90度经度)。