?

海洋預報公眾服務移動應用系統的設計與實現

2022-01-18 09:33王斌孟素婧王豹
海洋預報 2021年6期
關鍵詞:格點信息網數值

王斌,孟素婧,王豹

(國家海洋環境預報中心,北京100081)

1 引言

近年來,伴隨著智能移動終端的廣泛普及和移動互聯網產業的快速發展,以智能手機應用程序(Mobile Apps)為代表的移動應用系統很大程度上改變了人們獲取和傳播信息的方式。在民用/消費級氣象預報領域,國內外有多款天氣預報公眾移動應用系統產品,國外如Dark Sky、Windy和Marine Weather等,國內也有中國天氣通、墨跡天氣和彩云天氣等。上述系統在應用場景各有側重,具體功能也不盡相同,但在系統建設的理念和思路方面是一致的,都是借助硬件載體的定位模塊,獲取用戶位置,基于數值預報結果,根據位置提取并加工制作氣象預報,為用戶提供氣象預報信息服務。

但在面向公眾用戶的海洋預報信息服務領域,卻缺少一款海洋預報移動應用系統,原因如下:一是相較于天氣預報,海洋預報中用戶請求位置與海洋數值預報產品在地理空間上是偏離的(在氣象預報中,用戶請求位置與數值預報產品或釋用后的預報產品在地理空間上存在包含關系),原因是絕大多數使用場景中,用戶請求位置通常情況下位于沿岸、島嶼或者內陸區域,而海洋數值預報產品僅在海域部分才有預報結果,兩者不能直接找到地理空間上的對應關系;二是海洋預報公眾用戶數量較天氣預報少,針對細分海洋預報領域的信息服務技術研究發展較慢,面向公眾的海洋預報信息服務移動應用系統建設滯后。

海洋預報公眾服務移動應用系統正是在該背景下研發建設的。該系統基于海洋數值預報模式輸出結果與用戶定位信息,綜合運用數據分析處理、數據壓縮及可視化技術,提供基于位置的海洋預報信息服務,用戶可快速獲取定位或者查詢地點的海浪、潮汐(沿岸)、海溫、海流和海面風等預報結果,基于地圖方式可視化展示海洋動力環境要素變化過程。

本文第2部分將概述海洋預報公眾服務移動應用系統的需求分析、系統架構和技術路線;第3部分將詳細描述系統建設中兩個關鍵點,即基于位置的海洋預報服務和海洋預報場數據壓縮的技術實現;第4部分將介紹系統的主要功能和業務應用情況。

2 系統架構

2.1 需求分析

通過海洋預報門戶網站和海洋預報滿意度的調查收集,獲取了公眾用戶的主要需求,總結如下:

(1)在以手機為載體的智能終端上隨時隨地獲取海洋預警報信息,操作簡便且直觀易懂。

(2)提供基于位置的定制化信息服務,默認給出用戶定位或關注位置的海洋預報信息。

(3)提供較大空間范圍內海洋動力環境要素隨時間的發展變化情況。

(4)提供海洋預報信息的社交共享,方便用戶將信息分享到微信或朋友圈等。

2.2 架構設計

海洋預報公眾服務移動應用系統可劃分為數據源、服務端和移動終端3部分,系統架構如圖1所示。

圖1 系統架構圖

2.2.1數據源

數據源來自海洋災害預警報數據庫、智能網格預報產品(或者數值預報產品)數據以及系統基于上述數據加工用于地圖可視化的發布數據集、配套元數據及記錄用戶訪問和操作行為的用戶數據庫。

2.2.2 服務端

服務端是海洋預報公眾服務移動應用系統的核心,負責數據的加工處理和存儲,提供基于Web的系統后臺管理和數據接口服務與管理,從邏輯層面可劃分為3部分。

(1)數據加工處理。對海洋災害預警報數據庫和智能網格預報產品(或者數值預報產品)的數據經過抽取、轉換和加載等操作及組合,組織存儲到預定義的結構化數據庫中。

(2)系統后臺管理。通過Web方式實現對數據處理過程及運行狀態的監控,實現對用于發布的智能網格預報和警報信息的查詢和發布管理,實現對用戶注冊及訪問情況統計、移動終端版本管理及更新和系統元數據配置及管理等。

(3)數據接口服務和管理。數據接口服務分為系統研制和外部調用兩類,系統研制的接口提供一系列基于位置的海洋預報信息服務,通過接收用戶定位信息或地理名稱,返回海洋預報和警報數據。外部調用接口是第三方機構或者公司提供的通用性數據接口,如天地圖的逆地理編碼以及POI接口等。

2.2.3 移動終端

移動終端是在硬件載體上的應用程序,具體實現與用戶的人機交互過程。具體到軟件功能上,包括用戶定位、地名查詢、興趣點收藏與管理、海洋預警報信息呈現和信息分享等。

2.3 技術路線

服務端基于阿里云建設和部署,以用戶應用場景為驅動設計了海洋預報信息的組織和存儲方式,分別使用了MySQL和PostgreSQL等不同類型的數據庫實現對數據的高效管理。數據處理過程基于Java的Kettle數據ETL框架實現,通過任務作業方式自動化運行。后臺管理基于Vue框架開發,可以為管理員提供基于Web頁面的數據處理過程監控、預警報數據及發布信息管理和用戶管理。數據接口基于Spring框架開發,是一系列用于服務端和移動終端信息交換的RESTful風格的應用程序接口(API)。

移動終端以手機應用程序形式展現,基于uniapp前端應用框架,采用HTML5方式開發,支持Android和iOS兩種主流的操作系統。移動終端通過響應式布局對不同尺寸屏幕進行適配處理,支持系統能較好地在主流智能手機上流暢運行。地圖可視化可通過獨立研制的基于Leaflet和Canvas的海洋預報要素渲染模塊實現。

3 關鍵技術與實現

3.1 基于位置的海洋預報信息服務

為解決大多數應用場景下,公眾用戶請求位置與海洋數值預報模式產品在地理空間上存在偏差的問題,我們設計了基于位置的海洋預報信息服務方法。該方法的應用前提是用戶通過定位或者地名檢索方式需要獲取的不是陸地位置,而是位置鄰近的或者地名標識的附近海域。

基于位置的海洋預報信息服務方法設計如下:

(1)創建完整覆蓋中國海域范圍的海洋信息服務網格(以下簡稱“信息網格”),用于劃分海岸帶、海岸帶緩沖區、海島、海域和陸地等不同類型,為開展請求位置判斷和信息網格權重分配奠定基礎。

(2)根據請求點空間位置坐標索引到對應信息網格,根據信息網格類型及搜索半徑獲得搜索半徑內的信息網格集合。

(3)基于上一步的信息網格集合和數值預報模式輸出的預報格點,通過格點與信息網格的空間關系判別,獲得被信息網格覆蓋的數值預報模式輸出格點集合,將格點空間位置和對應的信息網格類型權重參數,獲得帶空間權重的預報格點數據集。

(4)以加權幾何中位數作為請求點對應的海域位置,通過上一步獲取的數值格點數據集,計算求解加權幾何中位數的空間坐標。

(5)通過空間插值算法(克里金或反距離權重等)計算獲得映射海域位置的海洋預報結果,并將其返回給用戶。

該方法的優勢在于可將海岸帶及海岸帶向陸一側緩沖區內的空間位置,通過加權幾何中位數映射到有海洋數值預報模式輸出的格點位置,并通過空間插值計算獲取該位置的海洋預報信息,進而解決請求位置與數值預報模式輸出位置在空間上存在偏差的問題,以確保在海洋預報公眾服務應用系統中用戶的請求位置(通過定位或者地名檢索)能夠獲取到海洋預報信息。

基于該方法的具體實現步驟如下:

步驟1:信息網格制作。

信息網格為等經緯度網格,在境界、政區和地名等基礎地理數據支持下,提取海岸線和海島信息,與信息網格進行空間關系判別分析,將信息網格劃分為陸地、海岸帶緩沖區、海岸帶、海島和海域等不同類型,予以區分與標識。

信息網格處理步驟如下:

(1)設置起止經度、緯度和空間分辨率等參數,初始化海洋信息網格,在本文中經度范圍是90°~155°E,緯度范圍是0°~55°N,空間分辨率為0.1°。

(2)提取大陸、海島岸線(海島判別依據是以海島在地理空間上完全覆蓋任一信息網格為標準),獲取岸線矢量數據。

(3)基于岸線矢量數據與信息網格,進行空間關系分析,將與岸線在空間上存在相交關系的信息網格定義為海岸帶。

(4)基于岸線矢量數據向陸地一側制作緩沖區,將與緩沖區在空間上存在相交關系的信息網格定義為海岸帶緩沖區。

(5)岸線向陸一側的信息網格定義類型為陸地。

(6)岸線向海一側且完全覆蓋海島且不與海岸線相交的信息網格,定義為海島。

(7)其余信息網格均為海洋完全覆蓋,定義為海域。

步驟2:請求空間位置與信息網格計算分析。

請求空間位置(以下簡稱“請求位置”),以點(latx,lonx)表示。獲得所在的信息網格索引,計算公式如下:

式中,lat是請求位置的緯度坐標;lon是請求點的經度坐標;resolution是信息網格的空間分辨率,由于信息網格是等經緯度網格間距,故兩者在數值上相同。indexlat是按式(1)計算求得的緯度索引值;indexlon是按照式(2)求得的經度索引值。請求位置所在的信息網格用indexlat和indexlon來表示。

具體處理如下:

(1)判斷[indexlat,indexlon]所在信息網格類型,若為陸地或者超出數值預報模式輸出空間范圍的,將不進行后續處理,直接返回對應提示信息。

(2)判斷[indexlat,indexlon]所在信息網格類型,若為海岸帶、海岸帶緩沖區、海島和海域時,以請求點位置為起點,按所在信息網格類型設置搜索半徑,獲得信息網格空間關系為包含及相交的信息網格集合,排除類型為陸地或者海岸帶緩沖區的網格,得到用于下一步計算的信息網格集合。搜索半徑的權重設置按網格類型海岸帶、海岸帶緩沖區和海島分別為網格分辨率的1.5、2.0和0.9倍。

(3)基于信息網格集合和海洋數值預報模式輸出的預報格點,計算兩者的空間包含關系,通過射線法判斷點是否位于信息網格多邊形中,遍歷后,獲得信息網格覆蓋的預報格點集合。根據格點所屬信息網格類型,生成帶類型的預報格點數據集,用{(point0,type),(point1,type),…,(pointn,type)}表 示,其中,pointn為預報格點,type為點所屬信息網格類型。

以山東長島附近的一個用戶請求位置為例(見圖3中的紅色三角),通過計算請求點的indexlat和indexlon,判斷其處于類型為海島的信息網格,按照空間關系的計算方法,橘紅色圓形區域為搜索半徑,計算該區域與環流數值預報模式輸出預報格點的兩者空間包含關系,獲得滿足條件的環流數值預報模式輸出的預報格點集合(圖3中高亮顯示處于緩沖區范圍內的點)。

圖3 請求點及緩沖區和信息網格空間關系分析圖(按空間分辨率0.1°制作的信息網格)

步驟3:用戶請求位置映射海域位置(加權幾何中位數)計算。

用加權幾何中位空間位置來表達用戶請求點對應的海域位置?;谏弦徊将@得的帶類型的預報網格點集合,求解歐式空間中的加權幾何中位位置(集合中所有點加權歐式距離和最小的點),計算方法如下:

式中,pointi即為預報網格點集合中的點;pointgm為幾何中位數位置;wi為權重由預報網格類型的type屬性確定,權重wi可以寫為wi,type,確定方法如下:

落在不同信息網格類型(海岸帶、海島和海域)中的預報點權重參數不同,海岸帶、海島和海域權重比例為1:1.5:2。上述權重參數設置后,幾何中位數位置將會偏向海域一側,與數值預報模式的輸出區域接近。

由于該方程無法直接求得公式解,因此采用迭代逼近的方法來求解(Weiszfeld算法[1])。首先,初始化一個候選位置且保證候選位置不與點集中的任意點相同;然后,通過迭代逼近求解最優解,最終確定加權幾何中位數空間位置。圖4為基于圖2中的加權幾何中位數空間位置示意圖。

圖2 預報信息網格實例圖(局部,按空間分辨率0.1°制作的信息服務網格)

圖4 預報網格點計算加權幾何中位數空間位置的示意圖

步驟4:映射海域位置海洋預報信息插值處理。

通過空間插值方法求解映射海域位置的海洋預報信息,空間插值方法可選用反距離權重或者克里金法進行插值處理。對標量要素直接進行插值處理,對矢量要素如風和海流,由于其要素按U和V分量方式給出,在插值處理后再進行矢量合成。

3.2 海洋預報場數據壓縮

海洋預報公眾服務移動應用系統的核心功能除基于位置查詢海洋預報信息外,還包括地圖方式對海洋動力環境要素的可視化渲染。目前,主流場數據可視化是基于瀏覽器,并借助開源或者第三方的JavaScript可視化庫來實現的,如Echarts.js和D3.js等。在基于Echarts.js(網址:https://echarts.apache.org/zh/index.html)的風場可視化樣例中,場數據被存儲為JSON格式的文件,其優點在于文件易于閱讀和編寫,易于程序處理解析,但缺點是需較大的存儲空間。

海洋數值預報模式數據一般輸出的格點較多,以國家海洋環境預報中心的智能網格預報產品為例[2],該產品空間范圍是105°~145°E,0°~45°N,空間分辨率為10 km,輸出格點為180 851個。若將數據保存為JSON格式,單預報要素單時刻的文件約1.4 M。如果動態展示預報要素的時間空間變化,就需要多預報時刻疊加,數據量將會大幅度增加,影響數據文件的網絡傳輸。

海洋預報公眾服務移動應用系統的設計與實現中需考慮在網絡環境不佳的情況下,盡量減少或縮短用戶下載數據的時間,使系統獲得較好的用戶體驗。因此,有必要對預報場數據開展設計,通過壓縮處理,減小數據文件占用空間,縮短網絡傳輸時間,減少瀏覽器因為數據下載引起的可視化渲染延遲,提升用戶使用體驗。

針對預報場數據,本文提出的壓縮方法是,首先將預報場數據由浮點型存儲轉換為短整型存儲,然后在上一步基礎上通過DEFLATE算法再進行壓縮處理,得到數據文件。

從公眾用戶對海洋預報信息使用的角度出發,海洋預報結果一般保留小數點后一位即可。從前面的描述可知,數值預報模式輸出結果一般是符合氣候界限閾值范圍的,數值預報模式輸出的預報結果一般會符合要素氣候學界限值范圍,部分氣象和海洋要素氣候學界限值范圍如表1和表2所示[3-4]。

表1 氣象要素氣候界限值范圍

表2 海洋要素氣候界限值范圍

預報場數據的浮點值可通過計算縮放系數和偏移系數轉換處理為短整型。以海溫要素為例,一般在-2~44℃之間,按照0.1℃的最小間隔,最多需要461個整數即可,遠低于短整型可表示的整數范圍。因此,這種方法在實際應用中可行。

偏移系數和縮放系數的計算公式如下。

式中,Scale_factor是縮放系數;Offset是偏移系數;Max是待轉換的預報場中要素的最大值,Min是待轉換的預報場中要素的最小值;n為存儲字節位數,short int類型一般為2字節,故n取值16。

轉換后數據計算公式如下。

式中,Compress_data是轉換后預報場數據;Origin_data是原始的預報場數據;Floor為向下取整函數。

在此基礎上,將轉換后數據再基于DEFLATE算法進行壓縮處理。DEFLATE是一種字無損數據壓縮編碼算法,該算法具有良好的壓縮性能和速度,在圖像等領域得到了廣泛的應用。DEFLATE算法同時使用了LZ77和Huffman編碼算法[5-6],其處理過程主要包括2個步驟。首先,由LZ77算法通過數據重復結構信息來進行數據壓縮,通過前向緩沖區和滑動窗口(搜索區)實現在前向緩沖區中不斷尋找能夠與字典中已存在的短語匹配的最長短語,并通過標記符標記;然后,對LZ77算法處理后的數據通過Huffman編碼進一步進行壓縮。

以環流數值預報模式輸出的單預報時刻海溫預報場數據為例(數值預報場行數為451,列數為401),數據文件存儲的內容和結構相同,依次保存行數、列數、左上角經度、左上角緯度、分辨率、無效值和場數據數組。

分別采用4種方案對單要素單預報時刻的預報場數據進行壓縮試驗。方案1不做任何壓縮處理,僅從數值預報模式輸出結果中讀取數據并存儲為JSON格式;方案2為只做浮點轉短整型處理;方案3為浮點型存儲并做DEFLATE壓縮處理;方案4為浮點型轉短整型存儲并做DEFLATE壓縮處理。處理后文件大小如表3所示。從表3可以看出,按方案4壓縮處理后,相較不做處理的JSON格式文件,可達到10%左右的壓縮率,很大程度的節約了存儲空間并節省網絡傳輸時間。

表3 單要素單預報時刻數據壓縮對比表

4 系統功能與應用

海洋預報公眾服務移動應用系統面向公眾用戶設計了海洋預報信息服務的應用場景,支持用戶通過定位或者地名檢索方式查詢我國所轄海域任意位置的海洋預報信息。系統支持iOS和Android兩個主流平臺,主要功能如下:

(1)基于位置的海洋預報功能。在國家海洋環境預報中心智能網格預報產品支持下,提供我國海域任意位置的海浪、表層海溫、表層海流以及我國大陸沿岸潮汐預報信息服務,包括最長時間為5 d的逐3 h預報。圖5分別是在系統中查詢營口鲅魚圈和嵊泗列島風景區的海洋預報信息的結果顯示。

圖5 預報結果顯示

(2)海洋警報功能。提供基于位置的海浪和風暴潮警報查詢、預警等級和信息提示,提供海嘯消息/警報的即時推送和警報詳情展示等。

(3)海洋預報要素地圖展示功能。提供大地理空間范圍的海浪、表層海溫、表層海流和海面風等海洋動力環境要素的可視化渲染及動態播放,為公眾用戶提供直觀可見的海洋預報信息。針對不同的海洋預報要素采用了不同的可視化渲染方式,如圖6a的海表風要素采用風速色斑圖疊加風羽方式呈現,圖6b的表層海流要素采用流速色斑圖疊加流線軌跡動圖呈現。

圖6 可視化渲染結果展示

(4)用戶定制預報服務功能。用戶可通過地名檢索或地圖拾取方式確定興趣點,并支持為該位置自定義設置觸發海洋預報信息提示的閾值條件(要素預報值范圍及持續時間),系統將為用戶自動計算滿足條件的預報時間區間,為用戶提供更貼近需求的海洋預報信息服務。

海洋預報公眾服務移動應用系統于2020年12月29日正式發布,截至2021年2月用戶量超過3 500人,平均每天提供服務約1 000次,高峰值時達到5 000次,為公眾用戶提供了一種可隨時隨地獲取海洋預報信息的渠道。

5 小結

海洋預報公眾服務移動應用系統面向社會公眾用戶,通過智能終端的應用程序將專業的海洋預報數據轉換為用戶可直接使用且可直觀感知的形式,核心是為用戶提供了基于位置和所見即所得的海洋預報信息。

在系統研發過程中,除了合理設計系統架構,選擇成熟穩定的開發框架和技術路線外,相較于其他海洋氣象手機應用程序,主要在兩個方面有所創新。一是提出了基于位置的海洋預報信息服務方法,通過將位于陸地的用戶請求位置映射到加權幾何中位數位置,并通過空間插值給出請求位置海洋預報信息,解決了海洋數值預報模式輸出與用戶請求存在海陸空間分離的情況;二是針對海洋預報要素場數據,提出了一種壓縮方法,通過并給出了技術實現,即通過將預報要素值由浮點型存儲轉換為短整型存儲,再根據DEFLATE算法進行再壓縮處理,較大程度減少了數據文件的占用空間,提高了網絡傳輸效率,可讓用戶在瀏覽大空間尺度的海洋預報要素動態展示中獲得較好的用戶體驗。

猜你喜歡
格點信息網數值
帶有超二次位勢無限格點上的基態行波解
2022年中國種豬信息網全年計劃
體積占比不同的組合式石蠟相變傳熱數值模擬
數值大小比較“招招鮮”
一種電離層TEC格點預測模型
艦船測風傳感器安裝位置數值仿真
鋁合金加筋板焊接溫度場和殘余應力數值模擬
格點計算器
格點和面積
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合