netcdf - 从多个 Netcdf 文件中提取给定变量并连接到单个文件
问题描述
我正在尝试从多个 NC 文件中提取单个变量 (DUEXTTAU),然后将所有单个文件合并到一个 NC 文件中。我正在使用 nco,但 ncks 有问题。
NC 文件名如下:
MERRA2_100.tavgM_2d_aer_Nx.YYYYMM.nc4
每个文件有 1 个(每月)时间步长,时间坐标没有实际值,而是以单位或 begin_date 变化。例如,在文件MERRA2_100.tavgM_2d_aer_Nx.198001.nc4
中,它有:
int time(time=1);
:long_name = "time";
:units = "minutes since 1980-01-01 00:30:00";
:time_increment = 60000; // int
:begin_date = 19800101; // int
:begin_time = 3000; // int
:vmax = 9.9999999E14f; // float
:vmin = -9.9999999E14f; // float
:valid_range = -9.9999999E14f, 9.9999999E14f; // float
:_ChunkSizes = 1U; // uint
我对每个文件重复此步骤
ncks -v DUEXTTAU MERRA2_100.tavgM_2d_aer_Nx.YYYYMM.nc4 YYYYMM.nc4
接着
ncrcat YYYYMM.nc4 final.nc4
在final.nc4
中,time
坐标具有相同的值(第一个 YYYYMM.nc4)。例如,将 198001、198002 和 198003 3 个文件合并后,time
所有时间步长的坐标都等于 198001。我应该如何处理?
解决方案
首先,这个命令应该可以工作:
ncrcat -v DUEXTTAU MERRA2_100.tavgM_2d_aer_Nx.??????.nc4 final.nc4
但是,最新版本的 NCO 无法正确重建或重新确定时间坐标何时time
是整数,在您的情况下就是这样。该修复程序位于 GitHub 上的最新 NCO 快照中,并将在 4.9.3 中,有望在本周发布。如果不能从源安装,则需要手动干预(例如,time
在每个输入文件中使用 更改为浮点ncap2 -s 'time=float(time)' in.nc out.nc
)。在任何情况下,time_increment
、begin_date
和begin_time
属性都是非标准的,只会从第一个文件中复制。但time
如果您使用ncrcat
.
推荐阅读
- c# - 从 Xamarin 应用程序中的身份服务器获取 OAuth 访问令牌
- c# - IConfiguration 在 Blazor 应用程序/Razor 中始终为 NULL .NET CORE
- azure - Azure 仪表板仅显示服务运行状况
- reactjs - 如何让 django post 接受 str 而不是 pk
- playwright - 在 Playwright 中禁用 Javascript
- c++ - 对 C++ 显式转换的更改
- javascript - 从多个跨度中具有相同 ID 的多个文本字段单独更改 innerHTML
- hibernate - JPA - 从给定条件的 OneToMany 关系中获取数据
- python - 如何检查 Python 模块是否正在 Jupyter Notebook 中导入
- c# - 如何在 MSTest 项目的 TestMethod 中测试 Program.Main