2026/03/17 | No.0212期 | Kevin 劉瀚文

風,是我們每天感受卻難以掌握的自然力量。從颱風動態到風力發電、從飛航安全到候鳥遷徙,風場資料在背後扮演關鍵角色。那麼在WebGIS上是否也可以做到如大家常用的Windy網站般動態展示流動的風場?這次我們就從資料的格式,來源以及展示等幾個面向作說明。

本次實作所使用的風場資料,來自美國國家海洋暨大氣總署 (National Oceanic and Atmospheric Administration, NOAA) 所提供的全球預報系統 (Global Forecast System, GFS)。該系統產製的天氣預報模型涵蓋全球尺度,能跨越不同時間與空間提供完整的氣象預報資訊。由於資料具備廣度與國際通用性,因此我們選擇以 NOAA 的全球風場資料作為分析基礎。

多種尺度的全球氣象預報資料

▲ 圖1 NOAA提供多種尺度的全球氣象預報資料

NOAA所釋出的資料包含多種高度與時間的氣溫、氣壓、風場、地面反射率等近300種預報資料,檔案大小更是超過150GB。因原始資料中所涵蓋的內容繁多,在資料分析的第一步驟,我們便透過python 的 xarray套件將原始資料內容進行篩選,取出預計使用的風場相關資料儲存為NetCDF格式進行後續的分析作業。

 

什麼是NetCDF檔案

網路通用資料格式(Network Common Data Form,簡稱 NetCDF)是一種具備「自描述」(self-describing)特性的陣列型資料格式,其核心結構包含標頭與內容。藉由標頭,使用者可快速掌握資料的定義方式,如同書籍的目錄般,說明如資料空間網格大小、時間範圍與各項變數資訊;而內容則如同書籍的內文,完整儲存各變數的數值資料,提供使用者後續分析與應用。也因為它能輕鬆處理像「時間+空間」這種複雜的多維度資料,因此成為氣象和海洋研究中最受歡迎的標準格式。

NetCDF_explorer網頁瀏覽NetCDF檔案

▲ 圖2 以NetCDF_explorer網頁瀏覽NetCDF檔案

 

相較我們常用的GIS資料格式,NetCDF格式在資料紀錄方式有明顯的不同,進而影響兩者的使用方式與適用場景,以下進行一個簡單的比較如下表所示。

使用GIS資料格式(如Shapefile) 使用NetCDF資料
資料類型 向量 網格/陣列
資料維度 以0~2維資料,包含點、線、面 支援多維度資料,以網格/陣列形式展示
展示方式 可用常見之GIS軟體(如QGIS, ArcGIS pro)進行展示,或以Python/R 中的地理空間函式庫(如 GDAL、netCDF4)讀取和展示
圖層建立方式 可透過GIS軟體進行圖層發布進行建立 部分套件需要進行資料格式轉換(如轉為PNG+JSON)方能建立為系統可讀取的圖層
時間維度 僅能紀錄於屬性資料中,應用上需客製化或疊加不同時期資料 原始資料格式已支援多時間紀錄
空間精度 可精確描述物件位置、邊界或面積大小 同網格式資料,精度取決於網格大小
適用場景 具有明確位置之靜態資料 大範圍、多時空、多屬性之動態資料

 

解析過程

利用NetCDF的空間特性,每個網格中的風場資料以u(東西向速度分量)與v(南北向速度分量)分別進行記錄,要取得各網格實際的風速風向,則需將向量合併,得到真實的風速風向資訊。但因為NetCDF格式並非人可直接閱讀之內容,我們透過python中的 matplotlib 函式,第一次讓風場資料露出廬山真面目。

u與v合併示意圖

▲ 圖3 u(東西向速度分量)與v(南北向速度分量)合併示意圖

展示各網格中風速風向隨時間的變化情形

▲ 圖4 展示各網格中風速風向隨時間的變化情形(來源:瑞竣科技)

 

由於NetCDF格式的風場資料採網格方式進行紀錄,其視覺效果類似橫麥卡托投影成果,在此基礎上,我們嘗試將其套用至WebGIS 圖台中(同樣是橫麥卡托投影),進行更直觀的空間分析。以下圖災害情資網的風速風向預報為例,瀏覽單一時間點、指定高度的風場資料,箭頭方向代表風向,箭頭長度對應風速大小,即可於圖台中查看各地的風速風向資訊。

可以發現在下圖左側沿海的風速箭頭長度,明顯比內陸更長,代表此時沿海的風速比內陸更大。若再進一步將風速繪製成風速面量圖,即可更清楚觀察各區域間的風速差異。

以箭頭形式展示NetCDF風速風向資料

▲ 圖5 於WebGIS圖台中以箭頭形式展示NetCDF風速風向資料(來源:災害情資網)

 

從靜態到動態

然而,「風」具有高度的時變性,若僅僅只是以靜態的資料呈現,視覺效果上無法傳遞出他的流動感,也無法展示出多NetCDF資料支援時空的特性。因此我們運用常見的GIS解決方案(包含 ESRI ArcGIS、O’View、Mapbox),看看可否有更好的展示效果。

但在過程中我們發現,測試當下各個GIS解決方案所支援的功能與套件(如webgl-wind、deck.gl-particle),皆無法直接讀取NetCDF資料進行展示,需要將標頭與內容資訊進行格式轉換,如另存為JSON與PNG檔案,才能順利進行套用。

在JSON中,依照各套件的不同要求,收錄如資料時間、網格長寬、風速向量數值最大最小值等;而各網格的風場的u, v 分量,則參考圖片儲存R,G,B三波段的方式,以PNG圖檔格式進行記錄。

從NetCDF格式轉換為JSON+PNG格式

▲ 圖6 從NetCDF格式轉換為JSON+PNG格式進行動態風場展示

 

以圖檔方式記錄風場資料,也可同時運用到GPU的圖形運算效能,讓全球性、多時間的風場資料順暢的於圖台上進行渲染,還可根據展示需求,即時進行資料內插,提高流體動畫密度,豐富整體視覺效果。

除此之外,經轉換的資料不但可以用於展示動態風場的流動性,更可精簡檔案大小(如單一高度、時間解析度為3小時(3*8*16 多時期)的風場資料以NetCDF格式進行記錄之檔案大小為578MB,轉換為PNG搭配JSON後檔案大小縮小至125MB),提升展示效能。

ArcGIS地圖核心搭配deck.gl-particle套件

▲ 圖7 以ArcGIS地圖核心搭配deck.gl-particle套件展示動態風場資料(來源:瑞竣科技)

 

應用成果

O'view FluidModule 展示動態風場資料

▲ 圖8 以O’view FluidModule 展示動態風場資料(來源:風場流力三維動態展示圖台)

風場流力三維動態展示圖台可結合風場、雷達回波、颱風預報路徑等資料相互輔助,更可結合時間軸功能,顯示風場隨時間的變化趨勢,推測未來對台灣的影響程度。

 

小結

透過本次研究之風場資料展示研究,提供面對多時空風場資料之處理與展示方案,在搭配資料格式的轉換,還可節省資料儲存空間,於相同資源下儲存更多預報資料,充分展現NetCDF支援多時空資料紀錄的優勢。後續應用上,包含如候鳥移動之預報、空氣污染粒子擴散情形等案例,在搭配三維資料一同展示後,可讓使用者更貼切的感受未來變化模式,提升空間資訊應用成效。

 


Author
Kevin 劉瀚文

眾多Kevin中的其中一位,持續扮演探索GIS奧妙的神奇寶貝訓練家兼PM。