问题标签 [cdo-climate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
777 浏览

python - 在交错网格上使用数据时计算以网格为中心的值

我正在与 MITgcm 合作进行一些模拟,特别是使用内波模型;我得到了带有结果的 .nc 文件,但有些变量的坐标并不完全相同。我自己解释一下:我想计算出速度的分量,但是由于一些我不完全理解的数字原因,水平速度坐标位于单元格的左侧,而垂直坐标位于单元格的 bot 侧. 要使用速度数据进行操作,我需要统一所有坐标的参考。

我想过做这样的事情

所以我将把我的坐标全部放在单元格的中心和同一个参考中。

我不知道该怎么做,使用 python,编辑 NetCDF 文件。我可以很高兴只提取所有uv数据,像我说的那样进行编辑并使用这两个变量创建一个新的 NetCDF 文件。

那可能吗?我怎样才能做到这一点?

编辑:添加了 ncdump 信息

0 投票
2 回答
1861 浏览

r - 是否可以在 R 脚本中运行 CDO?

我正在使用 netcdf 文件,并且我一直在使用 CDO 进行一些分析,然后使用 R。我想知道是否可以在同一个脚本中直接从 R“调用”CDO . 我不确定如何(我一直在尝试使用 System() 来调用命令..但我不明白)。有人对此有想法吗?这有没有可能??

提前谢谢了

0 投票
2 回答
956 浏览

bash - 如何使用 nco 或 cdo 在 netcdf 文件中查找第一个肯定条目的时间/日期?

我有一个时间序列值,我想在数据序列变为正数时找到第一个时间步的时间或日期。我知道我可以将它读入 python、R 或 Fortran 脚本来执行它,但我想知道我是否可以从 BASH 的命令行中执行它,也许使用 nco 或 cdo?

我想用

做一个面具,但这对我没有多大帮助。我需要以某种方式根据数据的符号拆分文件,然后我可以简单地使用

通过管道传输到 awk。

这里有一个小示例文件的链接:

http://clima-dods.ictp.it/Users/tompkins/se/trmm_per10_pc0_year2000_nc2.nc

有小费吗?

0 投票
2 回答
2732 浏览

netcdf - 无法使用 nco 附加两个 netcdf 文件

我正在使用 netcdf 运算符将两个 NCEP netCDF 文件附加在一起。这些文件大小不同,但它们代表相同的大气变量,即位势高度。一个是 1000 hPa,另一个文件是 925 hPa。它们具有相同的尺寸和相同的纬度和经度范围。两者都代表同一时刻

这是我正在使用的命令 - ncks -A hgt_1000.nc hgt_925.nc

该命令运行没有任何问题,但是当我查看 hgt_925.nc 的输出时,它看起来文件尚未合并。查看 NCO 文档,它们看起来必须具有相同的大小才能附加。还有其他方法吗,还是我应该编写自己的代码来追加?这些是使用 nccopy 下载的 netCDF4 文件经典文件。

0 投票
3 回答
1437 浏览

r - 连接两个不同时间跨度的nc4文件

假设有两个 netCDF 文件(在我的例子中是 nc4),每个变量都有 3 个维度:纬度、经度和时间(年)。它们具有不同的时间跨度(例如 1700-2005 和 2005-2100 - 它们在 2005 年重叠)。如何连接它们以获得一个跨越 1700-2100 的 nc4 文件?

简单地尝试 NCO 运算符 ncrcat file1.cn4 file2.nc4 result.nc4会给出一个跨越 [1700-2005, 1700-1795] 的文件。运行该行时会发出警告:nco_cln_clc_dff<><> failed to initialize UDUnits2 library. 根据这篇文章,我不应该担心。

我还使用了NCO 手册 中描述的附加功能ncrcat --rec_apn file2.nc4 file1.cn4。我得到一个结果时间跨度 [2005-2310,2005-2100] 和一个警告:(ncrcat: WARNING Intra-file non-monotonicity. Record coordinate “time” does not monotonically decrease between input file file2.nc4 record indices: 94,95 output file1.nc4 record indices 400,401 ...索引在这里不太重要,因为我收到了每个索引的警告)

请注意,我可以在没有时间跨度问题的情况下与Linux上的CDOcdo mergetime file1.cn4 file2.nc4 result.nc4连接:(或cdo -z zip_3 mergetime file1.cn4 file2.nc4 result.nc4获得 3 级压缩)。另请注意,为了处理重叠的 2005 年,我必须export SKIP_SAME_TIME=1在调用之前使用(仅第一次出现)。cdo mergetime

使用 RI 尝试了以下方法:

我让它运行了将近 2 个小时,然后我停止了运行。由于我必须为数百个 nc4 文件执行此操作,所以我不能等那么久。运行时没有大喊任何错误,但我不确定代码是否正确。

我使用 Windows 7、64 位、8Gb RAM。对于 R -“R 版本 3.3.0 (2016-05-03)”

更新:用 R 打印这两个文件的一些元数据

1)文件1.nc4

2)文件2.nc4

希望能帮助到你

0 投票
2 回答
2698 浏览

python - 使用python替换netCDF文件中的值

我想替换所有的 -999.0 值。netCDF 文件由 0.0. 文件在这里: https ://www.dropbox.com/s/ohh7tntzm2pj1uw/all_SSP3_BaU_NoCC.nc?dl=0

这是我的功能:

但是,该功能似乎不起作用。没有 -999.0 值被替换。如何解决这个问题?

0 投票
3 回答
1781 浏览

r - 循环遍历 netCDF 文件名的年、月、日

我在 R 中使用 for 循环从文件夹中读取 netCDF 文件并提取给定经度、纬度列表的值。它看起来像工作,除了一个问题。当循环根据日期返回值时,它会在 2 月 28 日之后创建 1 月 29 日到 31 日。像往常一样,我希望在 2 月 28 日或 29 日(闰年)之后的 3 月 1 日。这是我的 R 代码:

您可以通过此链接找到三个月的每日 netCDF 数据: https ://drive.google.com/open?id=0B8rqKaYt0VEaMWVGc1gzdXI1U28

0 投票
1 回答
394 浏览

netcdf - cdo showname 显示与 ncdump 不同的变量

我很困惑为什么 cdo 和 ncdump 显示不同的变量。我发现 WRF 数据没有时间坐标变量,如典型的 ncfile ( http://www.ncl.ucar.edu/Applications/wrfnetcdf.shtml )。所以我在我的所有 nc 文件中添加了一个时间变量,也许我添加这个时间变量的方式是它没有出现在 cdo showname 中的原因?(这和以前的问题一样,只是希望措辞更清楚)

使用 ncdump 在这里显示时间变量:

此处没有使用 cdo 显示时间变量:

0 投票
2 回答
3718 浏览

mask - 创建一个带有掩码数据的 NetCDF 文件以仅保留陆点

我已经使用 grads 中的basemap.gs脚本屏蔽了 NetCDF 文件。这是我使用面具得到的结果:

例子

所以,我想获得一个只包含大陆数据的 NetCDF 文件,有人可以帮我吗?

0 投票
3 回答
1515 浏览

python - 使用 CDO 将累积变量转换为 netcdf 文件中的时间步长值

我在一个网格上有一个大约 100 个时间步长的 netcdf 文件,其中一个变量是在时间步长上累积的。我现在有兴趣计算每个时间步对变量值的贡献(即连续时间步的差异)。

目前我使用以下顺序:

  1. 要将每个时间步提取到我使用的新文件cdo seltimestep,$i ...中,
  2. 计算每个差异到一个新文件中cdo sub $i ${i-1} ...
  3. 最后将这些新文件合并cdo mergetime ...到一个结果文件中。

在我看来,这对于性能来说非常繁琐且不理想。由于时间步长,我不能使用 cdo 管道,因此需要同时创建许多文件。

有没有一种更好的解决方案可以使用 cdo(或其他类似 nco/ncl 的东西)将累积变量转换为时间步长值?