繁体   English   中英

如何更改 NetCDF 中的经度范围

[英]How to change longitude range in a NetCDF

我的 NetCDF 文件有 4 个维度(经度、纬度、时间、水平压力)和几个变量。

我想用 [-20 -18 -16 ... -2 0 2 4 ... 18 20] 替换 [340 342 344 ... 360 0 2 4 ... 18 20] 的经度数据。 事实上,经度是从 0° 到 360° 计算的,但我需要从 -180° 到 180°。

我在互联网上找到了一些想法,但我不知道如何应用它们。

这里有一个解释:

“一些 netcdf 文件包含严格的正值 [0,360],这与 gdal/QGis 处理经度值的方式不兼容 - 它们不会环绕日期变更线。这也会导致 gdalwarp 以及与其他数据集(与 [-180,180 ] 值),由于 180 度经度偏移,它们没有正确对齐。

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

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

编辑:我的纬度也有问题,即 N -> S(我想要它 S -> N),由于“cdo invertlat”,我将其反转

这是我发现的:

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

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

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

我使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM