近些年,大資料和人工智慧的長足發展,促使資料科學得到了繁榮發展,形成了豐富的技術棧和工具鏈,各類機構和科學家基於這樣繁榮的生態構建了廣泛的協作,形成了顯著的生產力提公升。氣象資料來自長期的地面、高空、雷達和衛星的觀測,隱含著豐富的地球環境和大氣環流資訊,為了儲存、傳輸及研究應用這些資料,氣象行業形成了一整套氣象資料的協議和工具。這個生態本身的發展歷史彌久,在業務實踐中廣泛應用,但在社會各行業資料廣泛聯絡的當下,與主流的資料科學生態的藩籬限制了氣象資料科學家參與更廣泛層面上的協作。本文介紹了一些氣象資料在資料科學領域應用的技術和工程實踐,來嘗試連線氣象資料與主流資料科學的生態。
本文從資料格式與協議、資料分析方法與工具、資料應用的工程化等角度,將當前氣象資料研究與主流資料科學領域的情況進行對比,並介紹實現兩者連通做的一些工程實踐。
1. 資料格式與協議
中國氣象局發布了bufr、crex、grib、netcdf、hdf、xml等6種氣象資料標準格式應用指南,這些格式適應氣象資料的儲存、傳輸和共享等場景的需求。grib、netcdf 這類表驅碼格式編碼方式具有自描述、靈活可擴充套件、壓縮儲存、可直接存檔等特點,是表示數值天氣分析和預報的格點場產品的主要格式。格點場產品可以理解為氣象要素值以格點方式分布的地理資訊資料,而地理資訊資料在資料科學應用是成熟而廣泛的。
地理資訊資料主要有兩種編碼型別,柵格型和向量型。柵格格式是一種附加了空間資訊的影象格式,如 geotiff 是在 tiff 格式基礎上附加了空間座標與畫素之間的對應關係等資訊。柵格格式儲存的資料因其與影象格式相容,可以方便的應用資料科學中影象分析處理的相關成果,比如利用深度學習識別影象中的某種天氣現象[1],這在氣象衛星資料的研究應用中已經有了一些案例。柵格資料另一種應用場景是資料視覺化,將氣象要素資料作為乙個圖層與其他地理資訊圖層相互疊加應用,在應用中考慮到伺服器端與客戶端頻寬及渲染效能的限制,往往要對影象做瓦片化處理,按照資料縮放顯示級別以檔案的形式存放,也有講這些瓦片儲存資料庫的方式,如 mbtiles。向量格式是將資訊按照不同形狀以向量方式儲存的編碼方式,這種格式對空間資訊進行抽象形成特徵(feature),一般包括點、線和面三種型別。向量格式資料在資料科學中用法很靈活,可以與其他地理資訊資料進行空間計算,形成新的資訊。氣象資料轉換為向量形式比較常見的場景是根據要素值進行分級,然後在格點資料上繪製等值線,繼而填充形成色斑圖等。如根據降水量距平值分級為特旱、旱、正常、澇和特澇等,繪製形成不同分級的區域分布。
表1 將氣象資料轉化為主流資料格式
原始格式
需做的轉換
主流格式
應用方向
netcdf、grib、hdf
將格點做空間投影後繪製
geotiff
基於深度學習的影象目標識別的深度學習
將格點做空間投影後繪製,進行瓦片化
map tiles/mbtiles
gis應用中的圖層服務
針對要素值進行分級,然後在格點資料上繪製等值線,繼而填充形成色斑圖等。如根據降水量距平值分級為特旱、旱、正常、澇和特澇等,繪製形成不同分級的區域分布。
geojson/kml
gis應用中的圖層服務,與其他資料圖層進行空間計算,如裁剪、分割、合併等
2. 資料分析方法與工具
氣象資料分析主要是指氣象要素變數及變數場的分析,分析的內容包括多個變數及變數場間的差異性、關聯性、時空演變特徵等。氣象資料分析常用程式語言有fortran,ncl等,常用的工具包括grads,matlab等,這些程式語言與工具在氣象資料分析及視覺化中應用廣泛。
主流資料科學領域中,r 和 python 一直是主要的程式語言,近期來看 python 因在雲計算和機器學習領域中應用越來越廣泛,預期在資料分析領域也將繼續佔據主流位置。開源世界一些基於 python 的類庫發展繁榮且相互協作,如 numpy、scipy 等,形成了很好的工具鏈,延伸到了資料處理分析、資料視覺化、機器學習等各個資料相關業務場景。
將氣象資料融入主流資料科學的技術棧和工具鏈中,需要用 python 等語言和工具讀取氣象資料之後展開後續的操作。以 grib 檔案中的變數場為例,歐洲中期天氣預報中心(ecmwf)提供了面向 python 的 grib api,通過調取grib資料後轉換可以獲得 numpy 中的矩陣結構(ndarray)資料,進而可以利用 ndarray 的一系列方法實現變數場資料相加減、求平均等操作。
圖1 使用python numpy處理grib資料
對於變數場資料,可以繼續通過變數分級,生成等值線、色斑圖等形式,繼續應用資料科學領域中處理地理資訊資料的一些類庫(如 matplotlib、shapely、geopandas 等)來實現一些空間計算。
圖2 使用matplotlib、geopandas生成色斑圖後進行空間計算
物聯網發展產生了大量的包含空間資訊的資料,比如交通工具的位置資訊等,將氣象資料轉化後,就可以與這些資料進行綜合分析,氣象資料就實現了便捷的融入各行業的資料分析應用場景中。
圖3 將網格資料與鐵路線路資訊疊加顯示
3. 氣象資料應用的工程化
前文介紹的氣象傳統資料處理技術和工具多是適合小規模的科學研究中使用,如果將氣象資料放到網際網路、大規模應用等場景中,就需要在工程化方面做一些工作。這些工程化的工作也是借鑑了主流大資料分析領域中的一些手段,比如業務服務化、部署容器化等。
業務服務化是將乙個應用系統中的多個函式或者模組進行封裝,之後通過介面暴露,然後通過介面的連線將應用系統組織起來的工程手段。在氣象應用系統的實踐中,通常將資料的處理轉化、資料的分析方法、資料的渲染進行抽象實現封裝形成服務。這樣做的好處是實現不同系統間功能的重用,實現整個資訊化業務體系的集約。
我們在專案中實現了將數值預報雲中的 grib 檔案按照給定的色標生成色斑圖的服務。以 grapes-meso 為例,grib 檔案裡提供的是累計雨量,如果我們繪製小時雨量的話,就需要將前後兩個預報時次的累計雨量相減。在應用實現中,將grib 檔案處理、兩個變數場相減、色斑圖生成等邏輯進行封裝之後,提供了乙個rest風格的接入點(rest endpoint)。應用的客戶端直接通過 http 協議,傳入前後兩個 grib 檔案、色標等資訊即可獲得 geojson 資料,渲染在 web 端的 gis 應用中。
圖4 服務化的grapes-meso數值預報色斑圖生成
將業務服務化後,業務在服務能力方面就具備了彈性,工程中通過將服務裝入容器後進行編排,實現業務的彈性擴容。精細化的氣象服務要求氣象資料具有更高的時空解析度,形成的資料規模隨之增大,一些資料處理和渲染的耗時就會比較多,通過彈性的部署一定數量的服務,然後通過負載均衡來將訪問均衡到各個容器中,從而讓應用能夠獲得較低的訪問延時。
圖5 grapes-meso數值預報色斑圖容器化部署
4. 總結
通過大資料生態中的技術、工具以及架構,我們將氣象資料應用與主流的大資料應用場景打通,生態相融後形成了新的生產力,資料科學發展的廣度和深度將幫助氣象資料應用在資料探勘、人工智慧等領域繼續拓展,建議氣象行業中的資料應用科學家和開發者,在實踐中更多嘗試主流的資料科學生態的技術和工具。
java連線主流資料庫的方式總結
1 oracle8 8i 9i資料庫 thin模式 class.forname oracle.jdbc.driver.oracledriver newinstance string url jdbc oracle thin localhost 1521 orcl orcl為資料庫的sid strin...
如何平衡資料管理與資料科學的關係?
現在,企業對資料觀念的轉變已經將資料管理推向了新的高度。資料科學是現在資料管理的核心組成部分,但資料管理和資料科學往往被視為兩種不同的活動。資料科學家工作在資料分析師 資料工程師和dba之間,他們把時間花在為資料分析和競爭情報做好資料基礎設施上。但是,在不斷發展的下一代資料市場中,資料管理和分析將是...
大資料的資料科學與關鍵技術是什麼?
對於大資料想必大家都有所了解了吧?隨著資訊化的不斷發展,大資料也越來越被人們所熟知。我們都知道,現在很多行業都離不開資料分析,在資料分析中我們有聽說了大資料,大資料涉及到了很多的行業,一般來說,大資料涉及到了金融 交通 醫療 安全 社交 電信等等。由此可見,大資料面向的方向有很多,面向的範圍很廣。我...