我的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文件包含严格意义上的正值[0360],这与gdal/QGis处理经度值的方式不兼容-它们不环绕日期线。这也会导致gdalwarp的错误,当与其他数据集(具有[-180180]值)组合时,由于180度的经度偏移,它们没有正确对齐。
简单的修复方法是测试经度变量,并通过在IReadBlock和SRS检测中减去180将[180360]区间中的任何值转换为[-180180]。"
我也读过"gdal翻译",但我不知道如何使用它
编辑:我的纬度也有问题,它是N->S(我想要它是S->N),由于"cdo invertelat"
这就是我发现的:
ncap2 -O -s 'where(lon>180) lon=lon-360' ifile ofile
我还不确定它不会改变其他任何事情,但它似乎起作用了。
我意识到这是一个旧线程,但由于我最近遇到了一个非常类似的问题,我想我应该添加我的解决方案,因为我在其他地方找不到它。。。
我使用了cdo包(https://code.zmaw.de/projects/cdo)命令sellonlatbox将我的输入数据从[0360)经度范围转换为[-180180),并将纬度重新排序为[-90,90](即S->N):
cdo sellonlatbox,-180,180,-90,90 infile.nc outfile.nc