GRIB數據處理相關指令

GRIB

數據格式簡介

GRIB(General Regularly distributed Information in Binary form),是由世界氣象組織(WMO)設計和維護的一種用于存儲和傳輸網格數據的標準數據格式,它是一種自描述的二進制壓縮格式,通常具有擴展名.grib,.grb或.gb。

世界氣象組織一共發布了3各版本的GRIB標準:

  • GRIB 版本 0: 已淘汰,無技術支持,目前幾乎不再使用。
  • GRIB 版本 1: 版本1是GRIB的歷史遺留版本,已停止開發。由于它已在國際民航組織(ICAO)的世界范圍預報系統中使用,因此仍得到WMO的認可。
  • GRIB 版本 2: 版本2格式是GRIB標準的擴展和強化,它與版本1相比在壓縮比等性能上有更優異的表現。一些國家的數值天氣預報機構(尤其是美國和歐洲)正在逐步采用此版本,版本2不能與版本1兼容。

想了解更多GRIB1和GRIB2的信息,請參考:Introduction to GRIB Edition1 and GRIB Edition 2

GRIB數據格式是以一個被稱為“報文”(Message)的數據結構為基本單元的集合體。每個“報文”中會存儲一套經緯度、變量數組以及所有描述性的屬性信息,而每個GRIB文件里會按順序排列存儲多個“報文”。

處理工具及方法

ecCodes

ecCodes是一個由ECMWF開發的程序包,它可以提供用于解碼和編碼GRIB格式的API和工具。我們可以使用conda來安裝:$?conda?install?-c?conda-forge?eccodes

ecCodes提供了一套處理grib數據的命令行工具,你可以使用?grib_dump?,?grib_ls?和?grib_get?來查看文件內容,也可以使用?grib_set?和?grib_filter?去修改內容,還可以用?grib_copy?去把部分內容復制出來,或者使用?grib_get_data?從文件中把經緯度和變量值提取出來。?grib_compare?還可以按照鍵去對不同GRIB文件進行對比。

grib_ls

grib_ls?命令行主要用于查看GIRB文件的內容信息

  1. 查看GRIB文件所有報文的所有參數
$ grib_ls ERA5_20191231.grib
ERA5_20191231.grib
edition      centre       typeOfLevel  level        dataDate     stepRange    dataType       shortName    packingType  gridType
1            ecmf         surface      0            20191231     0            an             10u          grid_simple  regular_ll
1            ecmf         surface      0            20191231     0            an             10v          grid_simple  regular_ll
1            ecmf         surface      0            20191231     0            an             2d           grid_simple  regular_ll
...
384 of 384 messages in ERA5_20191231.grib384 of 384 total messages in 1 files

🔹 每列字段含義

字段名含義
editionGRIB 的版本,這里是 1,即 GRIB1 格式
centre數據提供中心,ecmf 表示 ECMWF(歐洲中期天氣預報中心)
typeOfLevel層類型,這里是 surface,表示地表或接近地表
level層高度/層次值,對 surface0
dataDate數據日期,這里是 20100601(即 2010 年 6 月 1 日)或 20100602
stepRange預報步長,0 表示分析場(analysis,即即時狀態,不是預報)
dataType數據類型,an 表示 analysis(分析場)
shortName變量短名稱

?

2.僅查看報文信息中的shortName和dataType參數

$ grib_ls -p shortName,dataType ERA5_20191231.grib
ERA5_20191231.grib
shortName   dataType
10u         an
10v         an
2d          an
...
384 of 384 messages in ERA5_20191231.grib384 of 384 total messages in 1 files

3.篩選參數shortName為tp的報文信息

$ grib_ls -w shortName=tp ERA5_20191231.grib
ERA5_20191231.grib
edition      centre       typeOfLevel  level        dataDate     stepRange    dataType     shortName    packingType  gridType
1            ecmf         surface      0            20191230     5-6          fc           tp           grid_simple  regular_ll
1            ecmf         surface      0            20191230     6-7          fc           tp           grid_simple  regular_ll
1            ecmf         surface      0            20191230     7-8          fc           tp           grid_simple  regular_ll
...
384 of 384 messages in ERA5_20191231.grib384 of 384 total messages in 1 files

4.查看距離(25°N,100°E)最近點的paramId,name和值

$ grib_ls -l 25,100,1 -p paramId,name ERA5_20191231.grib
ERA5_20191231.grib
paramId     name         value
165         10 metre U wind component  -0.229126
166         10 metre V wind component  -0.69986
168         2 metre dewpoint temperature  272.847
...
384 of 384 total messages in 1 files
Input Point: latitude=25.00  longitude=100.00
Grid Point chosen #2 index=39460 latitude=25.00 longitude=100.00 distance=0.00 (Km)
Other grid Points
- 1 - index=39461 latitude=25.00 longitude=100.25 distance=25.18 (Km)
- 2 - index=39460 latitude=25.00 longitude=100.00 distance=0.00 (Km)
- 3 - index=39180 latitude=25.25 longitude=100.25 distance=37.48 (Km)
- 4 - index=39179 latitude=25.25 longitude=100.00 distance=27.78 (Km)

更多詳細的參數說明及使用方法可以執行?grib_ls?-h?查看幫助文檔或閱讀ECMWF官方文檔:?GRIB tools

CDO

conda?install?-c?conda-forge?cdo

Python

cfgrib & xarray

conda?install?-c?conda-forge?eccodes?cfgrib?xarray

pygrib

安裝:?conda?install?-c?conda-forge?pygrib

使用方法

In [1]: import pygribIn [2]: msgs = pygrib.open('./20180930-fc-sfc.grib')In [3]: msg1 = msgs[1]In [4]: msg1
Out[4]: 1:Surface pressure:Pa (instant):regular_ll:surface:level 0:fcst time 0 hrs:from 201809301200In [5]: msg1.keys()    # 查看所有關鍵字,此處列出的關鍵字都可以作為select的過濾條件
Out[5]:
['globalDomain','GRIBEditionNumber','eps',...'section5Length','analDate','validDate']In [6]: msg1.shortName   # 查看shortName
Out[6]: 'sp'In [10]: msg1.name    # 查看name
Out[10]: 'Surface pressure'In [17]: lats, lons = msg1.latlons()   # 提取經緯坐標In [21]: array = msg1.values    # 提取變量值In [23]: tps = msgs.select(shortName='tp')   # 選出所有shortName為tp的報文

警告

在pygrib中,打開的grib文件無法自動回收內存,因此在使用完畢grib數據以后,一定要執行?.close()?操作,否則如果打開的grib文件太多,會造成內存溢出。

iris

conda?install?-c?conda-forge?iris

pynio

conda?install?-c?conda-forge?pynio

NCL

conda?install?-c?conda-forge?ncl

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89575.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微服務學習(六)之分布式事務

微服務學習(六)之分布式事務一、認識Seata二、部署TC服務1、準備數據庫表2、準備配置文件3、docker部署三、微服務集成seata1、引入依賴2、改造配置3、添加數據庫表4、測試四、XA模式1、兩階段提交2、seata的XA模型3、優缺點4、實現步驟五、AT模式1、Sea…

Go實現用戶登錄小程序

寫一個用戶登錄注冊的小程序 運行程序,給出提示1. 注冊輸入用戶名、密碼、年齡、性別 {"用戶名": "root", "passwd": "123456", "age": 18, "sex": "男"}注冊前要判斷是否存在此用戶2. 登錄…

鴻蒙藍牙通信

https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-bluetooth-low-energy 藍牙權限 module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.ACCESS_BLUETOOTH","reason": "…

Java:Map

文章目錄Map常用方法Map遍歷的三種方法先獲取Map集合的全部鍵,再通過遍歷來找值Entry對象forEach結合lambda表達式Map 案例分析需求我的代碼(不好)老師的代碼(好)好在哪里另外集合分為Collection和MapMap常用方法 代碼…

fastjson2 下劃線字段轉駝峰對象

在對接第三方或查詢數據庫時,返回的字段是下劃線分隔的,而在業務中需要轉成java對象,java對象的字段是駝峰的,使用fastjson2時,有兩種方法可以實現: 比如數據格式是: {"item_id": &q…

【硬件】藍牙音頻協議

1. 無線音頻傳輸的工作原理 在無線傳輸的過程中,音源設備首先將MP3、FLAC等音頻文件還原為PCM格式。通過藍牙音頻編碼轉為藍牙無線傳輸的文件,發送到音頻設備段。將藍牙無線傳輸的文件再次還原為PCM格式,之后轉為模擬信號并放大,通…

【宇樹科技:未來1-3年,機器人可流水線打螺絲】

在第三屆中國國際供應鏈促進博覽會上,宇樹科技工作人員表示,未來1到3年內,機器人產品有望從單一工業化產品,發展至復合化工業場景,如機器人搬完箱子后,換個 “手” 就能在流水線上打螺絲。在3到10年內&…

Spring AI 1.0版本 + 千問大模型之 文本記憶對話

上篇文章,主要是簡單講解了一下文本對話的功能。由于模型不具備上下文記憶功能,只能一問一答。因此我們需要實現記憶對話功能,這樣大模型回答信息才能夠更加準確。 1、pom依賴 項目構建就不詳細說了,大家可以參考上篇 文本對話 文…

測試學習之——Pytest Day2

一、Pytest配置框架Pytest的配置旨在改變其默認行為,以適應不同的測試需求和項目結構。理解其配置層級和常用參數,是高效使用Pytest的基礎。1. 配置的意義與層級配置的本質在于提供一種機制,允許用戶根據項目特點、團隊規范或特定測試場景&am…

Go-Redis × RediSearch 全流程實踐

1. 連接 Redis ctx : context.Background()rdb : redis.NewClient(&redis.Options{Addr: "localhost:6379",Password: "",DB: 0,Protocol: 2, // 推薦 RESP2// UnstableResp3: true, // 若要體驗 RESP3 Raw* })2. 準備示例數據 u…

深入理解指針(指針篇2)

在指針篇1我們已經了解了整型指針,當然還有很多其他類型的指針,像字符指針、數組指針、函數指針等,他們都有他們的特別之處,讓我們接著學習。1. 指針類型介紹和應用1.1 字符指針變量字符指針變量類型為char*,一般這樣使…

Python+Selenium自動化爬取攜程動態加載游記

1. 引言 在旅游行業數據分析、輿情監測或競品研究中&#xff0c;獲取攜程等平臺的游記數據具有重要價值。然而&#xff0c;攜程的游記頁面通常采用動態加載&#xff08;Ajax、JavaScript渲染&#xff09;&#xff0c;傳統的**<font style"color:rgb(64, 64, 64);backg…

ESP8266服務器建立TCP連接失敗AT+CIPSTART=“TCP“,“192.168.124.1“,8080 ERROR CLOSED

1.檢查服務器端口8081是否開啟監聽2.檢查路由項是否被防火墻攔截方法 1&#xff1a;使用 netsh查看防火墻規則?netsh advfirewall firewall show rule nameall dirout | findstr "8081"如果無輸出&#xff0c;說明防火墻未針對該端口設置規則&#xff08;可能默認攔…

Linux 內存管理(2):了解內存回收機制

目錄一、透明大頁1.1 原理1.2 透明大頁的三大優勢1.3 透明大頁控制接口詳解1.4 使用場景與最佳實踐1.5 問題排查與監控1.6 與傳統大頁的對比二、Linux伙伴系統水位機制詳解2.1 三種核心水位詳解2.2 水位在伙伴系統中的實現2.3 水位觸發機制的實際行為2.4 水位關鍵操作接口2.5 水…

前端學習7:CSS過渡與動畫--補間動畫 (Transition) vs 關鍵幀動畫 (Animation)

一、補間動畫&#xff08;Tween Animation&#xff09;vs 關鍵幀動畫&#xff08;Keyframe Animation&#xff09;概念對比表&#xff1a;補間動畫 (Transition)關鍵幀動畫 (Animation)定義元素從初始狀態到結束狀態的過渡效果通過定義多個關鍵幀控制動畫的中間狀態觸發方式需要…

PyTorch 損失函數詳解:從理論到實踐

目錄 一、損失函數的基本概念 二、常用損失函數及實現 1. 均方誤差損失&#xff08;MSELoss&#xff09; 2. 平均絕對誤差損失&#xff08;L1Loss/MAELoss&#xff09; 3. 交叉熵損失&#xff08;CrossEntropyLoss&#xff09; 4. 二元交叉熵損失&#xff08;BCELoss&…

MinIO深度解析:從核心特性到Spring Boot實戰集成

在當今數據爆炸的時代&#xff0c;海量非結構化數據的存儲與管理成為企業級應用的關鍵挑戰。傳統文件系統在TB級數據面前捉襟見肘&#xff0c;而昂貴的云存儲服務又讓中小企業望而卻步。MinIO作為一款開源高性能對象存儲解決方案&#xff0c;正以其獨特的技術優勢成為開發者的首…

騰訊云服務上下載docker以及使用Rabbitmq的流程

執行以下命令&#xff0c;添加 Docker 軟件源并配置為騰訊云源。sudo yum-config-manager --add-repohttps://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i "s/download.docker.com/mirrors.tencentyun.com\/docker-ce/g" /etc/yu…

UE5 一些關于過場動畫sequencer,軌道track的一些Python操作

刪除多余的軌道 import unreal def execute():movie_scene_actors []sequence_assets []data 0.0# 獲取編輯器實用工具庫lib unreal.EditorUtilityLibrary()selected_assets lib.get_selected_assets()for asset in selected_assets:if asset.get_class() unreal.LevelS…

前端性能優化“核武器”:新一代圖片格式(AVIF/WebP)與自動化優化流程實戰

前端性能優化“核武器”&#xff1a;新一代圖片格式(AVIF/WebP)與自動化優化流程實戰 當你的頁面加載時間超過3秒時&#xff0c;用戶的跳出率會飆升到40%以上。而在所有的前端性能優化手段中&#xff0c;圖片優化無疑是投入產出比最高的一環。一張未經優化的巨大圖片&#xff0…