Python读取grib数据获取变量推荐姿势

前情提要

最近使用的EC和GFS预报数据给的都是grib2格式的,之前用惯nc格式的,python读取grib2数据的时候还走了些弯路,看到很多博客上给的教程其实不能满足我的需求,现在搞明白了分享一下

pygrib安装

第一个问题就是我电脑上pygrib安装都折腾了一阵子
我电脑上直接pip是装不上去的

pip3 install pygrib

使用conda的时候最好使用的是conda-forge源的,用这个装成功了

conda install -c conda-forge pygrib

pygrib使用

遍历一下查看数据

以一个GFS的预报数据为例,我们使用pygrib读取之后,得到的是一个可迭代对象,可以拿来循环

import pygrib
grbs = pygrib.open('gfs.t00z.pgrb2.0p25.f024')
for grb in grbs:print(grb)

我们来看一下遍历出的grbmessage对象打印出来是什么

1:Pressure reduced to MSL:Pa (instant):regular_ll:meanSea:level 0:fcst time 24 hrs:from 202407210000
2:Cloud mixing ratio:kg kg**-1 (instant):regular_ll:hybrid:level 1:fcst time 24 hrs:from 202407210000
3:Ice water mixing ratio:kg kg**-1 (instant):regular_ll:hybrid:level 1:fcst time 24 hrs:from 202407210000

可以发现,每一个grbMessage对象可以是二维格点数据,同时单位,气压层等维度信息也是有的
以“510:Temperature:K (instant):regular_ll:isobaricInhPa:level 95000 Pa:fcst time 24 hrs:from 202407210000”为例,表示的意思如下

  1. 510: 这是记录的索引或序号。它标识这是文件中的第 510 个记录。

  2. Temperature: 这是变量的名称。在这里,它表示“温度”。

  3. K (instant): 这是变量的单位和时间类型。

    • K 表示开尔文,是温度的单位。
    • instant 表示这是瞬时值。
  4. regular_ll: 这是网格类型,regular_ll 表示规则的纬度/经度网格。

  5. isobaricInhPa: 这是变量所属的层。在这里,它表示等压面。

  6. level 95000 Pa: 这是变量的层次信息。这里表示95000帕斯卡 (Pa) 等压面(950 hPa 等压面)。

  7. fcst time 24 hrs: 这是预报时间。这里表示从初始时间起 24 小时后的预报。

  8. from 202407210000: 这是初始时间,表示 2024 年 7 月 21 日 00:00。

获取变量

我下载的明明有41个高度层的信息,但是这样便利出来每一条数据都只是一个二维变量,我最终想获得的温度数据应该是三维数据,这意味着我需要将遍历的数据中为Temperature的调出来将他们拼成三维数组,这样才获取了一个变量完整的数据

在这里插入图片描述
可以看到,遍历出的数据以Temperature开头的就有56个,这是将非等压面的一些奇怪的Temperature也算上的总数

因此我们需要从中获取grbs中真正是气压层的Temperature

import pygrib
import numpy as npdef select_variable(filepath, variable, typeOfLevel):# 打开GRIB2文件grbs = pygrib.open(filepath)for grb in grbs:print(grb)temperature_records = grbs.select(name='Temperature', typeOfLevel='isobaricInhPa')# 获取记录数量num_records = len(temperature_records)# 假设所有记录的维度相同,获取第一个记录的维度# 这里使用第一个记录来确定数据的维度first_record = temperature_records[0].valuesdata_shape = first_record.shape# 创建一个三维数组来存储温度数据select_data = np.zeros((num_records, *data_shape))# 提取每个记录的数据并存储到三维数组中for i, record in enumerate(temperature_records):select_data[i, :, :] = record.valuesreturn select_datafilepath = '../download_res/ncep/20240721/gfs.t00z.pgrb2.0p25.f024'
variable = 'Temperature'
typeOfLevel='isobaricInhPa'
T = select_variable(filepath, variable, typeOfLevel)
print(np.shape(T))

这个函数和案例就展示了如何从grib数据中获取需要的变量
这里需要解释的是typeOfLevel=‘isobaricInhPa’,这是因为这个数据中只要是有不同高度层的数据,他的typeOfLevel就是isobaricInhPa,因为除了高度层的Temperature可以看到这种不是描述等压面温度的Temperature,如果不加上typeOfLevel='isobaricInhPa就会把他们也筛选出来
在这里插入图片描述

推荐使用Panoply查看grib数据先大概了解数据

Panoply直接搜索Panoply去官网下载之后直接打开即可,现在需要Java11装好,也很简单,去orical官网下载Java11的非安装版本,之后配置一下环境变量,在cmd输入java -version看到是11就可以了,无脑使用

可以看到,与pygrib不一样,Panoply直接会读出一个叫Temperature isobaric的变量,表示的就是有不同气压层的温度变量,这样可以很直观地看到数据的维度,但需要注意的是panoply和pygrib读出的变量可能长得不一样,需要留意
在这里插入图片描述
在Panoply中也可以一目了然总共有什么变量,再回去python中遍历一下找到pygrib读出来的变量名,获取变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/383005.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTPS 的加密过程 详解

HTTP 由于是明文传输,所以安全上存在以下三个风险: 窃听风险,比如通信链路上可以获取通信内容。篡改风险,比如通信内容被篡改。冒充风险,比如冒充网站。 HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议&#xff0c…

1 go语言环境的搭建

本专栏将从基础开始,循序渐进,由浅入深讲解Go语言,希望大家都能够从中有所收获,也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方,请指正!大家一起学习,…

腾讯云k8s相关

1.某个服务腾讯云内网地址? 比如:spiderflow-web正式环境:http://spiderflow-web.sd-backend:30001 试一试:

Linux shell实现执行任务进度条动态显示(回旋镖)-3

process_bar.sh #!/bin/bash #display boomerangwhile : doclearfor i in {1..20}doecho -e "\033[2;${i}H*"sleep 0.1doneclearfor i in {20..1}doecho -e "\033[2;${i}H*"sleep 0.1doneclear done验证:

机器学习笔记-01-初识基础(问题-解答自查版)

前言 以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。 本文对读者可以用作自查,答案在后面&#xff0…

(35)远程识别(又称无人机识别)(二)

文章目录 前言 4 ArduRemoteID 5 终端用户数据的设置和使用 6 测试 7 为OEMs添加远程ID到ArduPilot系统的视频教程 前言 在一些国家,远程 ID 正在成为一项法律要求。以下是与 ArduPilot 兼容的设备列表。这里(here)有一个关于远程 ID 的很好解释和常见问题列表…

ubuntu那些ppa源在哪

Ubuntu中的 PPA 终极指南 - UBUNTU粉丝之家 什么是PPA PPA 代表个人包存档。 PPA 允许应用程序开发人员和 Linux 用户创建自己的存储库来分发软件。 使用 PPA,您可以轻松获取较新的软件版本或官方 Ubuntu 存储库无法提供的软件。 为什么使用PPA? 正如…

VLC输出NDI媒体流

目录 1. 下载安装VLC Play 2. 首先在电脑上安装NDI Tools 3. 运行VLC进行输出配置 4. 播放视频 5. 验证 (1)用Studio Monitor验证 (2)用OBS验证 NDI(Network Device Interface)即网络设备接口,是由美国 NewTek 公司开发的免费标准,它可使兼容的视频产品以高质量…

视图、存储过程、触发器

一、视图 视图是从一个或者几个基本表(或视图)导出的表。它与基 本表不同,是一个虚表,视图只能用来从查询,不能做增删改(虚拟的表) 1.创建视图 创建视图的语法: create view 视图名【view_xxx / v_xxx】 a…

基于CALMET诊断模型的高时空分辨率精细化风场模拟

原文链接:基于CALMET诊断模型的高时空分辨率精细化风场模拟https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247610033&idx7&sn999fb0fa3a0e57acebdfe209587ce7f3&chksmfa826f56cdf5e640f7dba429a9213a38d1222415eccd8660f4cf9fb46fa1a5ab3c5…

Netty:基于NIO的 Java 网络应用编程框架

Netty 是一个被广泛使用的,基于NIO的 Java 网络应用编程框架,Netty框架可以帮助开发者快速、简单的实现客户端和服务端的网络应用程序。“快速”和“简单”并不用产生维护性或性能上的问题。Netty 利用 Java 语言的NIO网络编程的能力,并隐藏其…

JavaWeb笔记_JSPEL

一.JSP相关技术 1.1 JSP由来 当我们需要向页面输出大量的HTML代码的时候,我们需要通过response对象写多次来输出HTML代码 response.getWriter().write("<font>文本</font>"); 页面的展示和servlet密不可分,不利于后期代码维护,因此推出一种可以…

记录一仿真错误,波形缩放有脉冲高信号,放大看不到信号了

是因为信号拉高的时间太短&#xff0c;拉高之后又把它拉低了&#xff0c;需要仔细看一下信号生成的代码。 错误代码与正确代码##正确代码always (posedge clk or negedge rst_n)begin if(!rst_n)beginwr_en < 1d0;wr_data < 8h0;endelse if(state_c DATASEND …

前端JS特效第52波:鼠标经过文字标题百叶窗动画特效风格切换图片轮播js效果

鼠标经过文字标题百叶窗动画特效风格切换图片轮播js效果&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <html><head><meta charset"utf-8"><title>鼠标经过文字标题百叶窗动画特效风格切换图片轮播js效果</titl…

electron 网页TodoList应用打包win桌面软件数据持久化

参考&#xff1a; electron 网页TodoList工具打包成win桌面应用exe https://blog.csdn.net/weixin_42357472/article/details/140648621 electron直接打包exe应用&#xff0c;打开网页上面添加的task在重启后为空&#xff0c;历史没有被保存&#xff0c;需要持久化工具保存之前…

【Unity国产化信创平台】麒麟银河V10系统虚拟机创建

目录 一、麒麟V10系统镜像下载 二、虚拟机创建流程 三、麒麟银河系统安装流程 一、麒麟V10系统镜像下载 https://www.kylinos.cn/# 官方访问还是会有问题&#xff0c;如果有需要麒麟银河Kylin系统V10的镜像文件&#xff0c;可以留下邮箱或者私信博主获取。 二、虚拟机创…

【Gin】架构的精妙编织:Gin框架中组合模式的革新实践与技术深度解析(上)

【Gin】架构的精妙编织&#xff1a;Gin框架中组合模式的革新实践与技术深度解析(上) 大家好 我是寸铁&#x1f44a; 【Gin】架构的精妙编织&#xff1a;Gin框架中组合模式的革新实践与技术深度解析(上)✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 本次文章分为上下两部分…

MySQL练手 --- 1251. 平均售价

题目链接&#xff1a;1251. 平均售价 思路&#xff1a; 由题意可知&#xff0c;Prices表和UnitsSold表&#xff0c;表的连接关系为一对一&#xff0c;连接字段&#xff08;匹配字段&#xff09;为product_id 要求&#xff1a;查找每种产品的平均售价。而Prices表含有价格还有…

【区块链+绿色低碳】双碳数字化管控平台 | FISCO BCOS应用案例

地方政府、园区及企业实现“双碳”目标过程中存在一些挑战与难点&#xff1a; 1. 管理者难以掌握完整、准确、全面的碳排放数据进行科学决策&#xff1a;由于碳排放核算需要对数据的来源、核算方法 的规范性和采集方法的科学性有严格要求&#xff0c;当前面临碳排放数据数据采…

视频翻译保留原音色pyvideotrans+clone-voice

剪映的视频翻译时长限制5分钟以内&#xff0c;需要积分2700首次有减免大概21.6元&#xff08;1秒9积分/1元100积分&#xff09; • 视频翻译配音工具pyvideotrans 将视频从一种语言翻译为另一种语言&#xff0c;并添加配音 打包链接&#xff1a;夸克网盘分享 升级补丁&#…