如何更改NetCDF中的经度范围

时间:2013-11-21 10:02:07

标签: r replace projection netcdf

我的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度经度偏移,它们没有正确对齐。

简单修复是测试经度变量,并通过在IReadBlock和SRS检测中减去180来将[180,360]间隔中的任何值转换为[-180,180]。“

我也读过“gdal-translate”,但我不知道如何使用它。

编辑:我的纬度问题也是N - > S(我想要它S - > N)并且由于“cdo invertlat”

我改变了它

2 个答案:

答案 0 :(得分:4)

这是我发现的:

ncap2 -O -s 'where(lon>180) lon=lon-360' ifile ofile

我不确定它是否会改变其他任何东西,但似乎有效。

答案 1 :(得分:3)

我意识到这是一个老线程,但是最近我遇到了一个非常类似的问题,我想我会添加我的解决方案,因为我没有在其他地方找到它...

我使用 cdo 包(https://code.zmaw.de/projects/cdo)命令 sellonlatbox 将我的输入数据从[0,360]经度范围转换为[-180, 180),并且还将纬度重新排序为[-90,90](即S - > N):

cdo sellonlatbox,-180,180,-90,90 infile.nc outfile.nc