如何在NetCDF中更改经度范围

3
我的NetCDF文件有4个维度(经度、纬度、时间、压力水平)和几个变量。
我想将经度数据从[340 342 344 ... 360 0 2 4 ... 18 20]替换为[-20 -18 -16 ... -2 0 2 4 ... 18 20]。实际上,经度从0°到360°计算,但我需要它从-180°到180°。
我在互联网上找到了一些想法,但不知道如何应用它们。
这里有一个解释:
“某些netcdf文件包含严格的正值[0,360],这与gdal/QGis处理经度值的方式不兼容——它们不围绕日期线。这也导致了与gdalwarp以及当与其他数据集(具有[-180,180]值)组合时出现错误,由于经度偏移180度,它们没有正确对齐。
简单的修复方法是测试经度变量,并通过减去180将[180,360]间隔中的任何值转换为[-180,180],在IReadBlock和SRS检测中都要这样做。”
我还阅读了关于“gdal-translate”的内容,但不知道如何使用它。
编辑:我还遇到了一个问题,即纬度从N-> S(我希望将其反转为S-> N),并通过"cdo invertlat"将其翻转。

1
请展示您的操作:为什么ncclamp没有安装成功?您在cdo中尝试了哪些命令?did not work是什么意思?您遇到了哪些错误?目前,您的问题过于模糊。 - Paul Hiemstra
请提供一个最小可重现示例,并附上您尝试过的代码。谢谢! - Henrik
抱歉,我没有看到你的回答!我编辑了我的主帖。我只有一个问题,但我真的不知道该怎么解决它。 - Douie
2个回答

6
我知道这是一个旧帖子,但最近我遇到了非常类似的问题,所以我想添加我的解决方案,因为我在其他地方没有找到它...... 我使用包(https://code.zmaw.de/projects/cdo)命令将我的输入数据从[0,360)经度范围转换为[-180,180),并重新排序纬度为[-90,90](即S-> N)。
cdo sellonlatbox,-180,180,-90,90 infile.nc outfile.nc

6
这是我找到的信息:
ncap2 -O -s 'where(lon>180) lon=lon-360' ifile ofile

我还不确定它是否会影响其他事情,但似乎有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接