问题标签 [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.
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- 谁能告诉我再写一遍?
python - 将 NetCDF 转换为 GRIB2
我知道有像wgrib2这样的软件可以将文件grib
和grib2
格式转换为NetCDF
文件,但我需要另辟蹊径: from NetCDF
to grib2
,因为这里的当地气象局只能使用grib2
格式的网格数据。
似乎一种解决方案可能是在 Python 中,使用NetCDF4-Python 库(或其他)来读取NetCDF
文件并使用pygrib来编写grib2
.
有没有更好的办法?
netcdf - 将 grib 转换为 netcdf 文件
有没有办法在 Windows 上将 grib 文件转换为 NetCDF 格式?
我使用了一个名为的软件tkdegrib
,但它一个一个地捕获一个参数,而我希望我的 grib 的所有参数都在同一个文件中。不幸的是,我不能使用 Linux。
r - 从 netCDF 中提取某些值
我有一个 3 维的 netCDF 文件。第一个维度是经度,范围为 1-464。第二个维度是纬度,范围从 1 到 201。第三个维度是时间,从 1 到 5479。
现在我想从文件中提取某些值。我认为可以使用 start 参数来处理它。我试过这个命令。
但不知何故它不起作用。有人有解决办法吗?
提前致谢...
r - 如何使用 R 将 Grib1 转换为 Netcdf?
我刚刚下载了一些 grib 格式的气候数据。我想使用“R”将其转换为 NetCDF 格式。
此外,由于文件由不同的变量组成,我想一次将一个变量提取到单个文件中。
r - R中一组netcdf文件的平均字段,每个文件都具有相同的尺寸
假设我们有 10 个这样的文件。这个 netcdf 数据集有一个名为 tmp 的变量,它是一个 3 维数组:[lon][lat][time]
. 现在我如何组合这 10 个文件以获得一个带有变量 tmp 的文件,其值是组合值的平均值。
我以为我可以做到 ncra ( http://nco.sourceforge.net/nco.html#xmp_ncra ) 但没有成功。
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”,我把它反转了
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 但似乎无能为力。
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 值的新手,任何建议都将不胜感激。非常感谢!
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 月的平均值)。
知道为什么吗?有没有其他优雅的方式来写这个?谢谢。