问题标签 [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 回答
2311 浏览

r - 操作netcdf文件中的变量并再次写入

我有几个 netcdf 文件。每个 nc 文件都有几个变量。我只对两个变量“Soil_Moisture”和“Soil_Moisture_Dqx”感兴趣。

我想根据“Soil_Moisture_Dqx”过滤“Soil_Moisture”。每当相应的“Soil_Moisture_Dqx”像素的值大于 0.04 时,我想用 NA 替换“Soil_Moisture”中的值。

:这里是要下载的文件:

1- 我尝试了这个循环,但是当我输入 f[1] 或 f[2] 时,我得到了一些奇怪的东西,这意味着我的循环不正确。我很感激任何帮助我纠正我的循环。

2- 谁能告诉我再写一遍?

0 投票
4 回答
17300 浏览

python - 将 NetCDF 转换为 GRIB2

我知道有像wgrib2这样的软件可以将文件gribgrib2格式转换为NetCDF文件,但我需要另辟蹊径: from NetCDFto grib2,因为这里的当地气象局只能使用grib2格式的网格数据。

似乎一种解决方案可能是在 Python 中,使用NetCDF4-Python 库(或其他)来读取NetCDF文件并使用pygrib来编写grib2.

有没有更好的办法?

0 投票
3 回答
7591 浏览

netcdf - 将 grib 转换为 netcdf 文件

有没有办法在 Windows 上将 grib 文件转换为 NetCDF 格式?
我使用了一个名为的软件tkdegrib,但它一个一个地捕获一个参数,而我希望我的 grib 的所有参数都在同一个文件中。不幸的是,我不能使用 Linux。

0 投票
2 回答
1446 浏览

r - 从 netCDF 中提取某些值

我有一个 3 维的 netCDF 文件。第一个维度是经度,范围为 1-464。第二个维度是纬度,范围从 1 到 201。第三个维度是时间,从 1 到 5479。

现在我想从文件中提取某些值。我认为可以使用 start 参数来处理它。我试过这个命令。

但不知何故它不起作用。有人有解决办法吗?

提前致谢...

0 投票
3 回答
2128 浏览

r - 如何使用 R 将 Grib1 转换为 Netcdf?

我刚刚下载了一些 grib 格式的气候数据。我想使用“R”将其转换为 NetCDF 格式。

此外,由于文件由不同的变量组成,我想一次将一个变量提取到单个文件中。

0 投票
2 回答
2696 浏览

r - R中一组netcdf文件的平均字段,每个文件都具有相同的尺寸

假设我们有 10 个这样的文件。这个 netcdf 数据集有一个名为 tmp 的变量,它是一个 3 维数组:[lon][lat][time]. 现在我如何组合这 10 个文件以获得一个带有变量 tmp 的文件,其值是组合值的平均值。

我以为我可以做到 ncra ( http://nco.sourceforge.net/nco.html#xmp_ncra ) 但没有成功。

0 投票
2 回答
4160 浏览

r - 如何更改 NetCDF 中的经度范围

我的 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”,我把它反转了

0 投票
3 回答
4894 浏览

r - 如何更改 R 中的分辨率(或重新网格化)数据

我有一个由 lon、lat 和覆盖 1961 年至 1970 年的月平均变量(例如温度或降水)组成的数据集。该数据集的分辨率为 0.5 x 0.5 度 lon/lat,覆盖全球,并以 . NC 文件,我使用以下方法提取了 R 中的数据:

扩展网格 (E) 是包含 31,104,000 行变量的数据表,扩展网格 (D) 是包含 259,200 行 lon/lat 的数据表。如果你乘以 259,200 * 10 年 * 12 个月,你会得到 31,104,000。因此,可以使用以下方法将表 E 拆分为月值:

因此,我现在是第一个月(即 1961 年 1 月)的数据表,由 lon、lat 和变量组成。数据示例如下:

现在我的问题。网格的当前分辨率为 0.5 * 0.5 度,我想“重新网格化”数据,因此分辨率为 0.25 * 0.25 度。我不想对数据做任何特别聪明的事情,所以我只想让 0.25 网格取其所在的 0.5 网格的值,即每个 0.5*0.5 网格包含 4 个 0.25*0.25 网格,我只想要4 个 0.25*0.25 网格与 0.5*0.5 网格具有相同的值。

我看过 raster 但似乎无能为力。

0 投票
3 回答
16156 浏览

r - 如何使用 R 中的纬度/经度边界从 netCDF 文件中获取子集

我有一个 netCDF 文件,我希望使用 R 中的 'ncdf' 包从由纬度/经度边界定义的子集(即纬度/经度定义的框)中提取一个子集。

下面是我的 netCDF 文件的摘要。它有两个维度(纬度和经度)和 1 个变量(10U_GDS4_SFC)。它本质上是一个包含风值的纬度/经度网格:

纬度变量从 +90 到 -90,经度变量从 0 到 360。

我希望使用以下地理角边界提取整个网格的子集:

左下角:纬度:34.5˚,经度:355˚,左上角:纬度:44.5˚,经度:355˚,右上角:纬度:44.5˚,经度:12˚,右下角:纬度:34.5˚ , 长: 12˚

我知道可以使用以下get.var.ncdf()命令提取变量的一部分(示例如下):

但是,我无法计算出如何合并纬度/经度,以便最终得到一个包含变量值的子集空间网格。我是在 R 中使用 netCDF 值的新手,任何建议都将不胜感激。非常感谢!

0 投票
4 回答
6040 浏览

python - 在网格化的 netCDF 文件中计算选定区域中的变量均值

假设我们有 TRMM 降水数据,每个文件代表每个月的数据。例如,文件夹中的文件是:

这些文件的尺寸如下:Xsize=1440, Ysize=400, Zsize=1,Tsize=1。经度设置为 0 到 360,纬度设置为 -50 到 50。我想计算某个区域的降水量,比如说介于两者之间lon=98.5, lon=100 and lat=4, lat=6.5。这意味着,仅读取该区域中的变量-:

-------------------- |lon:98.5 lat:6.5| | | |lat:4 lon:100 | ---------------------

我曾经在 GrADS(网格分析和显示系统)中这样做。在 GrADS 中,可以这样做:(简化版)

我试图在 Python 中做同样的事情,但是出了点问题。经过一些建议,我现在在这里:

此脚本在 CSV 文件中生成(在我的情况下)15 个值的列表。但是,当我尝试获取另一个区域的值并调整我认为必要的值时,可以说:

我得到与第一个相同的值。

firstarea=[0.511935,1.0771,0.613548,1.48839,0.445161,1.39161,1.03548,0.452903, 3.07725,2.84613 0.701613,2.10581,2.47839,3.84097,2.41065,1.38387]

secondarea=[0.511935,1.0771,0.613548,1.48839,0.445161,1.39161,1.03548,0.452903, 3.07725,2.84613,0.701613,2.10581,2.47839,3.84097,2.41065,1.38387]

我确实对单独的脚本进行了测试,它仍然给了我相同的值。我确实检查了地图(之前构建的),这两个区域的值不同(12 月的平均值)。

知道为什么吗?有没有其他优雅的方式来写这个?谢谢。