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

简单的解决方法是测试经度变量,并通过在 IReadBlock 和 SRS 检测中减去 180 将 [180,360] 区间中的任何值转换为 [-180,180]。”

我还阅读了有关“gdal-translate”的信息,但我不知道如何使用它。

编辑:我的纬度也有问题,它是 N -> S(我想要它 S -> N),多亏了“cdo invertlat”,我把它反转了

4

2 回答 2

5

这是我发现的:

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

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

于 2013-11-25T15:52:33.053 回答
5

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

我使用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
于 2016-04-05T05:41:05.240 回答