微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 netcdf 的特定维度中裁剪/选择许多不连续的像素

如何解决在 netcdf 的特定维度中裁剪/选择许多不连续的像素

我有一个 netcdf 文件,我想将其分成 4 个地理部分。

文件具有以下尺寸:

time = UNLIMITED; // (385452 currently)
nlayers = 19;
npressures = 20;
nchartime = 16;

时间维度实际上是一个“空间.时间”维度。 纬度和经度作为变量。 我用 matlab 打开 lat 和 lon 变量,然后选择要保留的区域中包含的像素。 如何对 NCO/CDO 说:仅在“时间”维度中提取这些像素? (所选像素不连续)

ncks -d time indexPixel1,indexPixel2,...,indexPixel10600 inputFile -O outpuFile

不起作用,因为它只需要一个范围(最小、最大、步幅)

我也试过

cdo sellonlatBox lon1,lon2,lat1,lat2 inputFile outpuFile

但它说“不支持的网格类型”(纬度和经度是变量而不是维度)

cdo select,levidx=indexPixel1,... inputFile outpuFile

似乎也不合适。

谢谢

解决方法

如果你可以用 Python 做事,那么在最近几个版本的 nctoolkit 包中有一个未公开的功能应该能够解决这个问题 (https://nctoolkit.readthedocs.io/en/latest/)。只需调整以下内容:

import nctoolkit as nc
ds = nc.open_data("infile.nc")
ds.assign_coords(lon_name = "lon",lat_name = "lat")
ds.crop(lon = [lon1,lon2],lat = [lat1,lat2])
ds.to_nc("outfile.nc")

您当然需要更改 assign_coords 中的“lon”等名称。 assign_coords 方法使用 NCO 将变量设置为坐标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。