问题标签 [grib]

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 投票
1 回答
243 浏览

c++ - eccodes 在使用不同的工具时会产生不同的结果

我正在使用Eccodes API来转换 GRIB2 文件。当我使用C++ API提取所有paramIdandshortName时,查询结果中不存在wind的V分量(paramId为132,shortName为v),如下:

ids=73 0 31 43 54 59 130 131 133 134 135 156 157 165 167 168 172 173 3020 3024 3041 3045 3046 3054 3063 3066 3086 228001 228002 228139 228164 228228 260002 260003 260029 260030 260031 260032 260038 260056 260065 260072 260073 260074 260083 260087 260088 260097 260098 260125 260127 260128 260155 260180 260185 260187 260189 260190 260205 260206 260207 260208 260209 260238 260242 260256 260317 260389 260390 260391 260439 260442 260509 7001353 names=73 10u 2d 2r 2t 4lftx VRATE absv acpcp al bmixl cape cd cfrzr ci cicep cin cnwat crain csnow dlwrf dswrf fricv gh gust hindex hlcy hpbl lftx lhtfl lsm ltng mslet mstav orog pli poros pres prmsl pwat q r refc refd rlyrs sde sdwe shtfl slt smdry smref snowc soill soilw sp sr ssw st t tcc tke tp u ulwrf unknown uswrf veg vgtyp vis vucsh vvcsh w wilt wz

程序代码如下:

但是,如果我使用 查询参数grib_ls,它会显示:

wuh20@sapphire:~/github/test$ grib_ls -w paramId=132 -p paramId,level,shortName,name ~/Desktop/test/nam_218_20180701_0000_000.grb2 /home/graduate/wuh20/Desktop/test/nam_218_20180701_0000_000.grb2 paramId level shortName name 132 0 v V component of wind 132 50 v V component of wind 132 75 v V component of wind 132 100 v V component of wind 132 125 v V component of wind 132 150 v V component of wind 132 175 v V component of wind 132 200 v V component of wind 132 225 v V component of wind 132 250 v V component of wind 132 275 v V component of wind 132 300 v V component of wind 132 325 v V component of wind 132 350 v V component of wind 132 375 v V component of wind 132 400 v V component of wind 132 425 v V component of wind 132 450 v V component of wind 132 475 v V component of wind 132 500 v V component of wind 132 525 v V component of wind 132 550 v V component of wind 132 575 v V component of wind 132 600 v V component of wind 132 625 v V component of wind 132 650 v V component of wind 132 675 v V component of wind 132 700 v V component of wind 132 725 v V component of wind 132 750 v V component of wind 132 775 v V component of wind 132 800 v V component of wind 132 825 v V component of wind 132 850 v V component of wind 132 875 v V component of wind 132 900 v V component of wind 132 925 v V component of wind 132 950 v V component of wind 132 975 v V component of wind 132 1000 v V component of wind 132 0 v V component of wind 132 0 v V component of wind 132 80 v V component of wind 132 3000 v V component of wind 132 6000 v V component of wind 132 9000 v V component of wind 132 12000 v V component of wind 132 15000 v V component of wind 132 18000 v V component of wind 49 of 446 messages in /home/graduate/wuh20/Desktop/test/nam_218_20180701_0000_000.grb2

有人可以帮我解决这个问题吗?

如果需要或有帮助,我可以提供我的数据。谢谢你。

0 投票
1 回答
1664 浏览

python - 提取 grib 文件的 Lon 和 Lat 范围

我对 GRIB 格式很陌生,但我目前需要处理它。使用 wgrib,我设法提取了我想要的字段、相应的时间等。

但是我错过了网格点的坐标,或者网格的经纬度范围。

我怎么能得到那个?我宁愿只使用 python 和 wgrib,但如果有任何其他简单的方法,请告诉我!我在网上找到的似乎主要涉及 wgrib2 格式。

0 投票
2 回答
512 浏览

python - 如何在 Python 中从极地立体 grib2 文件中绘制轮廓

我正在尝试使用 matplotlib 绘制 CMC grib2 压力预测文件来绘制压力等值线。grib2 网格的描述可以在这里找到:https ://weather.gc.ca/grib/grib2_reg_10km_e.html 。grib2 文件位于以下目录中:http : //dd.weather.gc.ca/model_gem_regional/10km/grib2/00/000/,以 CMC_reg_PRMSL_MSL_0_ps10km 开头,后跟日期。它是一个包含平均海平面压力的 grib 文件。

我的问题是我最终得到了一些直线等高线,这些直线等高线沿着实际压力等高线之上的纬度线。我认为这可能是因为我在 PlateCarree 而不是 Geodetic 中绘图,但等高线图不允许使用 Geodetic。我的情节的结果是: 在此处输入图像描述

代码如下:

任何建议,将不胜感激。

更新

对于没有 PyNIO 的任何人,可以使用评论部分中的转储文件来重现以下内容。

只需删除对 NIO 的所有引用并将 lats、lons、obs 分配替换为以下内容。

0 投票
0 回答
958 浏览

dataset - 使用 xarray 和 dask 处理大型 grib 文件

我正在使用 xarray 读取一些(显然)大型 grib 文件。我说“显然”是因为它们每个大约 100MB,这对我来说似乎并不太大。然而,运行

需要5-10分钟。更糟糕的是,读取其中一个占用了近 4GB 的 RAM——考虑到 xarray 应该做的延迟加载,这让我感到惊讶。尤其是这是原始文件大小的 40 倍!

这种阅读时间和 RAM 使用似乎过多,并且无法扩展到我必须阅读的 24 个文件。

我试过使用 dask 和xr.open_mfdataset,但是当单个文件很大时,这似乎没有帮助。有什么建议么?

附录:数据集打开后看起来像这样:

我通过一个接一个地读取 grib 文件并将它们作为 netcdf 写入磁盘暂时解决了这个问题。xarray 然后按预期处理 netcdf 文件。显然,不必这样做会很好,因为它需要很长时间 - 到目前为止我只做了 4 次。

0 投票
1 回答
383 浏览

weather - NOAA GFS Grib 文件不涵盖一整天

NOAA 从此链接提供 有关 GFS 预报的 grib 文件,其中包含预报天气属性的值。每个文件都有一个 3 小时的输出时间步长。每天由 4 个 grib 文件组成,每个文件有以下时间参考之一;00:00、06:00、12:00、18:00。时间参考是预测开始的时间。

这意味着 grib 文件仅涵盖一天中的以下时段;00:00-03:00、06:00-09:00、12:00-03:00、18:00-21:00。

是否有任何其他公开可用的文件,涵盖一整天?

0 投票
2 回答
2313 浏览

python - 如何使用 Python、GDAL、ArcPy 将 .grib 文件转换为具有正确投影的 GeoTIFF

我正在尝试将 .grib 文件转换为 GeoTIFF 以在 GIS 中使用(尤其是 ArcGIS),但无法正确投影图像。我已经能够在 Python 中使用 GDAL 创建一个 GeoTIFF,它可以显示数据,但在带入 ArcGIS 时未显示在正确的位置。生成的图像如下。

将数据放入 ArcGIS 时的样子

我正在使用的数据可以从以下位置下载:https ://gimms.gsfc.nasa.gov/SMOS/SMAP/L05/

我正在尝试将数据投影到 WGS84 Web Mercator (Auxiliary Sphere), EPSG: 3857

注意:我尝试通过创建一个可以处理 .grib 数据的栅格马赛克来通过 ArcMap 引入数据,但我没有任何运气。

更新:我也尝试过使用 Project Raster 工具,但 ArcGIS 不喜欢来自 .grib 文件的默认投影并给出错误。

我正在使用的代码:

我不太精通在 Python 中使用 GDAL 或 GDAL,因此将不胜感激任何帮助或提示。

0 投票
1 回答
467 浏览

python-3.x - 将 grib2 消息读入 Iris 立方体

我目前正在探索在项目中使用 iris 来使用 python 读取预测 grib2 文件的概念。

我的目标是基于具有特定值的 grib 消息键将 grib 消息加载/转换为 iris 立方体。

我已经尝试过使用 gribapi 的 iris-grib。使用 iris-grib 我还没有在 grib2 文件中找到密钥,尽管通过 cli 使用“grib_ls -w ...”可以看到密钥。gribapi 完成了这项工作,但我不确定如何将它与 iris 接口(我认为 iris-grib 就是为了这个)。

我想知道是否有人知道基于具有特定值的 grib 消息键将消息放入虹膜立方体的方法。谢谢

0 投票
1 回答
45 浏览

download - 接受检索的字段少于 MARS Web API 中请求的字段吗?

我正在尝试从 ECMWF MARS Web API 下载 2018 年全年的 25 天前预报。这些预报(WAEF 控制预报)仅在星期一和星期四发布,在这里我在使用火星网络 API。

我尝试请求直观的2018-01-01/to/2018-12-31,但由于每周有 5 天没有要检索的字段,因此请求失败。

我的 MARS 请求文件如下:

这导致以下响应:

除了只请求星期一和星期四的正确日期之外,有没有办法允许接收比请求更少的字段或任何其他优雅的解决这个问题的方法?

0 投票
0 回答
780 浏览

cmd - 用 4 个维度和多个变量抓取到 netcdf

我正在尝试使用 wgrib2 将 grib 文件转换为 netcdf。我正在使用 Windows 10。我的 grib 文件有 4 个维度和 2 个变量:

grib 文件

我的两个变量是温度和总降水率,具有以下维度:时间(长度 20)、ens(长度 50)、lat(长度 27)和 lon(长度 21)。

我尝试将 wgrib 与以下行命令一起使用:

编写了一个 netcdf 文件,但两个变量(时间、纬度、经度)只有三个维度,因此删除了“ens”变量。我在文档中看到 wgrib2 主要管理 3D。

所以我想从我的 grib 文件中提取 50 个文件,每个 ensemble 成员 1 个,然后将这 50 个文件转换为 netcdf 文件。然后,感谢 R,我将创建一个合并的 netcdf 文件。为此,我尝试了以下命令行:

然后我想做:

但是 ens=1 的提取不起作用,写入了一个文件但其权重为 0Ko。唯一有效的命令是:

它创建了一个 24Ko 文件,但我尝试打开它或将其转换为 netcdf,但它不起作用。我用记事本打开它,它给出了一个带有数字的两列文件......

有人可以帮我提取每个合奏成员(ens)的变量吗?我无法使用 cdo,因为我无法安装 cygwin,我在安装程序(公司环境)方面非常有限。

谢谢

0 投票
0 回答
71 浏览

netcdf - 有没有办法使用 Web 界面在 shapefile 上显示 grib2 或 netcdf 数据?

我想在给定的 shapefile 上显示一些天气数据。我正在检查是否可以使用 mapshaper 或 web mercator,但没有找到合适的程序。非常感谢任何帮助。