嚴 俊,陸建新,丁 駿,車助鎂
(浙江省海洋監(jiān)測預(yù)報中心 杭州市 310012)
中國是世界上海洋災(zāi)害損失最嚴重的國家之一。據(jù)統(tǒng)計,僅1989—2007年的19年間,累計直接經(jīng)濟損失就達2 326 億元,其中近一半的年份經(jīng)濟損失超過了100 億元,1997年和2005年甚至高達308 億元和332 億元,風暴潮和海浪災(zāi)害造成的死亡、失蹤人數(shù)總計6 274 人[1]。災(zāi)害影響的規(guī)模空前,對沿海地區(qū)人民生命財產(chǎn)安全和經(jīng)濟社會可持續(xù)發(fā)展構(gòu)成了嚴重威脅。但從海洋災(zāi)害經(jīng)濟損失系數(shù)(災(zāi)害經(jīng)濟損失/GDP)來看,中國減輕海洋災(zāi)害的工作成效極為顯著,接近于世界減輕自然災(zāi)害較先進的經(jīng)濟發(fā)達國家,這其中除了得益于沿海省、區(qū)、市重金投入修復(fù)和重建高標準防潮防浪的海塘、海擋等工程性措施外,各級海洋預(yù)報機構(gòu)對歷次嚴重海洋災(zāi)害的及時準確預(yù)警報(如成功預(yù)報了9216、9417 和9711 等特大風暴潮災(zāi))也起到了非常重要的作用,極大地減少了災(zāi)害中的人員和財產(chǎn)損失[2]。
隨著海洋經(jīng)濟的發(fā)展,山東、浙江、廣東、福建等省先后成為國家海洋經(jīng)濟發(fā)展試點省份,國家對沿海區(qū)域的投入越來越大,沿海地區(qū)的人口和經(jīng)濟體呈現(xiàn)出越來越密集的態(tài)勢。在全球氣候變化和海平面上升的背景下,沿海地區(qū)遭受風暴潮、災(zāi)害性海浪、赤潮、重大海上溢油、危險化學(xué)品泄漏、核泄漏或輻射、海嘯等災(zāi)害威脅的潛在風險加劇,對海洋經(jīng)濟發(fā)展、海洋生態(tài)環(huán)境和沿海人民群眾生命財產(chǎn)安全構(gòu)成嚴重威脅。由此,越來越重的防災(zāi)減災(zāi)形勢對各級海洋預(yù)報機構(gòu)的預(yù)報能力也提出了更高的要求。
國家海洋環(huán)境預(yù)報中心通過VSAT 系統(tǒng)每日下發(fā)大量海洋氣象實況觀測數(shù)據(jù)和預(yù)報產(chǎn)品,對于各級海洋預(yù)報機構(gòu)和預(yù)報員而言,除了深入研究分析國家海洋環(huán)境預(yù)報中心提供的各類信息資料外,借鑒國內(nèi)外其他技術(shù)先進的海洋氣象預(yù)報部門、研究機構(gòu)的預(yù)報產(chǎn)品、研究成果也不失為一個提高預(yù)報能力的有效途徑。隨著互聯(lián)網(wǎng)的發(fā)展,越來越多的海洋氣象部門、研究機構(gòu)將對海洋、氣象分析結(jié)果和預(yù)報產(chǎn)品等信息資源共享發(fā)布到互聯(lián)網(wǎng)上,供全球的互聯(lián)網(wǎng)用戶查看、下載。這些資源有不少預(yù)報準確率較高,預(yù)報時效較長,借鑒參考價值較高,如歐洲中期氣象預(yù)報中心、日本氣象廳等機構(gòu)發(fā)布的預(yù)報產(chǎn)品。因此開發(fā)一套軟件系統(tǒng),整理收集互聯(lián)網(wǎng)公開發(fā)布的數(shù)值天氣預(yù)報產(chǎn)品、實況天氣圖、衛(wèi)星云圖等信息資源,一方面可以作為VSAT 下發(fā)預(yù)報信息資料的有益補充,豐富預(yù)報員的參考信息量,另一方面作為預(yù)報備份系統(tǒng),在VSAT 數(shù)據(jù)傳輸故障無法正常接收數(shù)據(jù)時,確保預(yù)報工作的正常開展,同時可以安裝在個人計算機上實現(xiàn)異地或移動辦公,開展應(yīng)急狀態(tài)下的預(yù)報工作。
系統(tǒng)使用對象為省級及省級以下海洋、氣象預(yù)報臺站的普通預(yù)報員,考慮到省級以下海洋、氣象預(yù)報臺站軟硬件條件有限,同時有異地或移動狀態(tài)時開展預(yù)報工作的實際需要,因此系統(tǒng)必須是輕量級的,對軟硬件環(huán)境要求較低,且最好為綠色軟件,拷貝到普通臺式機和筆記本不用設(shè)置或簡單設(shè)置后就能使用,系統(tǒng)使用必須簡單、容易上手。
根據(jù)預(yù)報員的實際經(jīng)驗,當前具有較高參考價值的海洋和氣象預(yù)報資源發(fā)布網(wǎng)站主要有中央氣象臺(www.nmc.gov.cn),日本HBC(www.hbc.co.jp,該網(wǎng)站發(fā)布的資源比日本氣象廳公開發(fā)布的更為豐富),韓國氣象廳(www.jma.go.jp),歐洲中期氣象預(yù)報中心(www.ecmwf.int),美國海洋陸地大氣研究中心(wxmaps.org)等。對于省級及省級以下海洋、氣象預(yù)報機構(gòu)和預(yù)報員而言,只需要覆蓋東亞、亞洲、北半球等區(qū)域的地面、高空、海浪等的各類實況分析圖、數(shù)值預(yù)報圖和衛(wèi)星云圖就能滿足工作和研究需要,因此不需要全盤下載所有資源。
1.3.1 資源管理
目標資源來自不同國家的不同機構(gòu),且種類繁多,拿預(yù)報信息來說,預(yù)報內(nèi)容有地面、高空(850 hpa、700 hpa、500 hpa、300 hpa 等)、海浪等,預(yù)報區(qū)域有東亞、亞洲、北半球等,預(yù)報時段有3 h、6 h、12 h、24 h、48 h、72 h……240 h等,因此下載后必須按照一定的邏輯關(guān)系將這些資源有序組織管理起來,便于存儲和預(yù)報員的調(diào)用查看。
1.3.2 自適應(yīng)下載
目標資源中,一部分資源文件的鏈接地址相對固定,其不同時間發(fā)布的文件鏈接地址在較長時期內(nèi)保持固定不變,如美國海洋陸地大氣研究中心和HBC 發(fā)布的資源,以HBC 發(fā)布的東亞地面實況分析圖為例,鏈接地址為“http://www.hbc.co.jp/tecweather/ASAS.jpg”,在不出現(xiàn)網(wǎng)站改版等情況下,這個地址不會變更;另一部分為非固定的,每次更新發(fā)布后的文件鏈接地址都有變化,如中央氣象臺、韓國氣象廳和歐洲中期氣象預(yù)報中心發(fā)布的資源,以韓國氣象廳發(fā)布的東亞地面實況分析圖為例,世界時間2013年3月30日03 時之后發(fā)布的文件鏈接地址為“http://web.kma.go.kr/repositary/image/cht/img/sfc3_201303 3003.png”,2013年3月30日06 時之后發(fā)布的為“http://web.kma.go.kr/repositary/image/cht/img/sfc3_2013033006.png”,可以看出,其在文件名稱上有變化,導(dǎo)致不同日期不同時次發(fā)布的文件鏈接地址都不同。同時,絕大多數(shù)資源文件都沒有固定的更新時間。因此,系統(tǒng)必須具備自動判斷文件是否已更新,并及時下載的功能,以確保資源的時效性;同時要根據(jù)人工找出的鏈接地址變化規(guī)律,自動匹配生成正確鏈接地址,避免下載失敗。
1.3.3 多格式顯示
資源文件有png、jpg、gif、pdf 等不同的圖像或文檔格式,因此系統(tǒng)必須具備正確顯示不同格式文件的功能。
1.3.4 資源文件信息修正
為滿足不同預(yù)報機構(gòu)不同預(yù)報員的需求,需最大化下載資源,文件下載數(shù)量可能多達上千個,由于網(wǎng)站改版等原因,即使是鏈接地址相對固定的資源文件也會變更地址。因此,系統(tǒng)應(yīng)建立資源文件信息數(shù)據(jù)庫,使數(shù)據(jù)和程序分離,便于大量資源文件信息的管理維護,并具備自動和人工兩種方式的鏈接地址修正功能,確保資源文件的正確下載。
1.3.5 并行下載
除中央氣象臺外,其他資源的網(wǎng)站服務(wù)器都架設(shè)在國外,雖然單個資源文件的數(shù)據(jù)量很小,多數(shù)在幾百KB,但由于網(wǎng)絡(luò)狀況差,存在服務(wù)器無響應(yīng)、連接延時等現(xiàn)象,下載速率低,因此大量資源文件全部下載要消耗大量時間。在杭州市區(qū)10 M 電信寬帶接入的網(wǎng)絡(luò)條件下,以串行方式下載完1 000 個資源文件需費時3~4 h。為確保預(yù)報員在預(yù)報關(guān)鍵時間能查看到最新的參考信息,應(yīng)采取并行下載等技術(shù)手段縮短下載時間。
1.3.6 存儲備份
資源文件中除了小部分是實況分析圖外,大部分是各類數(shù)值模式給出的預(yù)報圖。實況分析圖可用作客觀分析、預(yù)報結(jié)果檢驗和研究工作等,需要長期甚至永久保存;預(yù)報圖則主要用于預(yù)報參考,沒有長期保存的價值??紤]到磁盤存儲壓力,應(yīng)根據(jù)實際工作需要設(shè)定存儲規(guī)則,對不同價值的資源文件設(shè)定不同時間長度的存儲期,并自動進行定時備份和清理。
海洋氣象預(yù)報輔助信息系統(tǒng)由1 個后臺資源文件下載管理程序、1 個前端信息集成顯示程序、1 個配置文件、1 個基于Access 的mdb 數(shù)據(jù)庫文件和1 個資源文件存儲文件夾組成。
后臺資源文件下載管理程序常駐系統(tǒng),讀取數(shù)據(jù)庫中的資源信息,自動判斷互聯(lián)網(wǎng)上目標資源文件的更新狀態(tài),實時下載已更新資源文件,并存放至指定的位置。該程序有人機交互界面,可以人工新增或修改數(shù)據(jù)庫中資源文件信息,并承擔資源文件管理任務(wù),定時備份和清理已下載的資源文件。
前端信息集成顯示程序根據(jù)配置文件和數(shù)據(jù)庫中資源信息加載顯示各類實況和預(yù)報圖,預(yù)報員可以以不同方式同時加載顯示多張預(yù)報圖,如單頁多圖、單頁單圖、多頁多圖等。
配置文件用于存儲系統(tǒng)配置信息,如數(shù)據(jù)庫的路徑、資源文件存儲文件夾的路徑、后臺資源文件下載管理程序是否隨操作系統(tǒng)啟動、備份周期等。
Access 數(shù)據(jù)庫建有多個資源文件信息表,分別對應(yīng)鏈接地址相對固定的資源文件和不同變化規(guī)律的非固定鏈接地址資源文件,表內(nèi)建有多個字段,包括所屬國家、發(fā)布機構(gòu)、文件類型、文件內(nèi)容、地址鏈接、相對存儲路徑、文件名、更新時間、文件描述等。
資源文件存儲文件夾用于存儲下載的資源文件,在該文件夾內(nèi)按照國家、機構(gòu)、文件類型、文件內(nèi)容來分層組織存放資源文件,比如韓國氣象廳發(fā)布的3 h 更新一次的地面實況分析圖存放在“資源文件存儲文件夾路徑韓國韓國氣象廳Analysis ChartSurface03”下。
系統(tǒng)開發(fā)選用C#,C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運行于.NET Framework 之上的高級程序設(shè)計語言。它是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C 和C++衍生出來的編程語言,它在繼承C 和C++強大功能的同時去掉了其復(fù)雜特性,并綜合了VB 簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET 開發(fā)的首選語言[3]。
由于海洋氣象預(yù)報輔助信息系統(tǒng)的定位是能拷貝到普通臺式機、筆記本上經(jīng)簡單設(shè)置后就能運行使用的輕量級系統(tǒng),因此選擇了同樣輕量化的桌面級數(shù)據(jù)庫Access,用于資源文件信息的存儲、管理和維護。數(shù)據(jù)庫中主要存儲維護兩類表,一類是鏈接地址相對固定的資源文件信息表,另一類是非固定鏈接地址的資源文件信息表。
鏈接地址相對固定的資源文件信息表的表結(jié)構(gòu)見表1。
表1 資源文件信息表表結(jié)構(gòu)(鏈接地址相對固定)
非固定鏈接地址的資源文件信息表根據(jù)鏈接地址變化規(guī)則的不同有多張,其表結(jié)構(gòu)與表1 基本相同,所不同的是Url 字段被拆分成Url1、Url2、Url3……等多個字段,用來存儲鏈接地址中固定不變的部分字符串。如韓國氣象廳發(fā)布的東亞地面實況分析圖鏈接地址“http://web.kma.go.kr/repositary/image/cht/img/sfc3_2013033006.png”,存儲該資源文件的庫表中沒有Url 字段,但有Url1 和Url2 字段,分別保存“http://web.kma.go.kr/repositary/image/cht/img/sfc3_”和“.png”兩段字符串,原地址中如“2013033006”的變化的字符串由后臺資源文件下載管理程序在下載時根據(jù)設(shè)定的規(guī)則自動補完。以此類推,中央氣象臺發(fā)布東亞500 hpa高度場數(shù)值預(yù)報圖的鏈接地址為“http://image.weather.gov.cn/product/2013/201303/20130331/NWPR/medium/SEVP_NMC_NWPR_ST639_EGH_AEA_L50_P9_20130331000000000.JPG”,地址中有兩處變化,因此存儲該資源文件的庫表中要有Url1、Url2 和Url3 字段。
這些互聯(lián)網(wǎng)資源的更新時間在一天24 h 內(nèi)呈離散分布,凌晨、上午、中午、下午、晚上、深夜等各個時間段都有大量發(fā)布。為及時獲取資源,應(yīng)該盡量縮短從目標資源更新到本地下載的時間,以確保日常預(yù)報工作尤其是災(zāi)害預(yù)報工作中資源信息的時效性。系統(tǒng)開發(fā)過程中嘗試過多種方法,2002年開發(fā)的系統(tǒng)早期版本曾經(jīng)使用過跟蹤排查方法,即按照一定時間間隔(如10 min、20 min、30 min 等)連續(xù)下載同一個資源文件,連續(xù)下載一個月或更長時期后,整理分析確定該資源文件在該時期內(nèi)每次更新的最后時間,然后按照這個最后時間定時下載。但這個方法存在明顯缺陷:(1)資源文件數(shù)量大時,整理分析工作量很大,需投入大量人工成本;(2)有新的資源文件加入時,需要再次整理分析;(3)多數(shù)資源文件的更新時間不穩(wěn)定,按照某個時期內(nèi)最后更新時間來定時下載很可能產(chǎn)生遺漏,或是下載的資源文件失去時效性;(4)目標資源文件未及時更新時會產(chǎn)生重復(fù)下載。
經(jīng)過多次試驗,最終采用預(yù)查后下載的方法來實現(xiàn)文件的準實時下載。技術(shù)方法簡述如下:設(shè)定重復(fù)下載周期(如間隔20 min 發(fā)起一輪下載),每次下載前利用HttpWebRequest 和Http-WebResponse 兩個類查詢目標資源文件在網(wǎng)站上的最后修改時間LastModified 值,將其和存儲在本地數(shù)據(jù)庫中的UploadTime 字段值比對,如果LastModified>UploadTime,則判斷資源文件已更新,之后利用WebClient 類的異步下載方法DownloadFileAsync(Uri,String)來下載,同時將LastModified 值更新入庫;反之則放棄下載,轉(zhuǎn)入下個資源文件的查詢。
這種方法避免了上述跟蹤排查法的缺陷,雖然增加了查詢時間的消耗,但由于資源文件更新時間離散分布的原因,除了首輪要全部下載文件導(dǎo)致費時更長外,之后每輪實際下載的文件量較少,費時也相應(yīng)少很多。在和文中1.3.5 部分的相同網(wǎng)絡(luò)條件下進行下載測試,采用該技術(shù)串行下載1 000 個資源文件,首輪之后的每輪下載耗時在30~70 min 之間。
對于鏈接地址變化的資源文件,每次下載前要根據(jù)變化規(guī)律預(yù)判資源文件下個時次更新后的正確地址。經(jīng)分析,不同網(wǎng)站的資源文件其變化規(guī)律不同,但都只是在日期時間上有變化。韓國氣象廳和歐洲中期氣象預(yù)報中心發(fā)布的各類資源,其鏈接地址通常為“string1+‘yyyymmddhh’+string2”的形式;我國中央氣象臺發(fā)布資源文件的鏈接地址則較為復(fù)雜,其形式通常為“string1+‘yyyy/yyyymm/yyyymmdd’+ string2 +‘yyyymmddhh00’+string3”。其中“yyyy”為年份,“mm”為月份,“dd”為日期,“hh”為發(fā)布時次,組成的“yyyymmddhh”代表了該資源文件的世界時發(fā)布時次,“hh”通常為“00”、“12”,部分產(chǎn)品如韓國實況分析圖加密發(fā)布,其時次為“03”、“06”等3 的倍數(shù),衛(wèi)星云圖則每個時次都有發(fā)布;string1、string2、string3 為鏈接地址中相對固定的字符串,存儲在數(shù)據(jù)庫中。
由于資源文件的實際更新時間通常晚于其標示的發(fā)布時次,因此可以根據(jù)這個特性來推測資源文件可能的鏈接地址。步驟如下:先將本地計算機時間轉(zhuǎn)換成世界時間,取其中年份、月份、日期和小時部分作為“yyyy”、“mm”、“dd”和“hh”,按照上述不同形式和string1、string2、string3 等組成目標文件鏈接地址,查詢該鏈接地址是否有效——即判斷目標文件在互聯(lián)網(wǎng)上是否存在,如果文件存在,則按照文中3.1 部分的方法判斷是否需要下載;如果地址無效即目標文件不存在,則將“yyyymmddhh”時次值減去1 h,再次組成地址查詢,如此輪詢24 次,即從當前世界時間向后輪詢24 個時次,如果24 個地址全都無效,則判斷該網(wǎng)絡(luò)或網(wǎng)站服務(wù)故障導(dǎo)致目標資源文件暫時無法獲取,該文件此輪下載中止,等待下一輪。
由于資源文件數(shù)量及網(wǎng)絡(luò)狀況等因素的影響,以串行方式逐個下載資源文件會消耗大量時間,無法滿足日常預(yù)報特別是災(zāi)害預(yù)報的時效性要求。本文采用多線程技術(shù)并行下載多個資源文件,C#中使用Thread 類來生成和處理線程,關(guān)于多線程技術(shù)的詳情見參考文獻4。
在文中和1.3.5 部分的相同網(wǎng)絡(luò)條件下進行下載測試,結(jié)合采用預(yù)查后下載和多線程技術(shù)并行下載1 000 個資源文件,啟動下載線程15 個,首輪下載耗時約40 min,之后每輪下載耗時基本在5~15 min 之間,可以滿足預(yù)報的時效性要求。
預(yù)報過程中,預(yù)報員時常需要打開顯示多個不同類型的資源文件進行對比分析。由于下載的資源文件量很大,因此需要采用技術(shù)手段實現(xiàn)目標資源文件的快速定位和多個文件內(nèi)容的同時顯示。
本文以節(jié)點樹形式來組織資源文件,并實現(xiàn)快速定位,其主要思路是將資源文件信息表中Country、Organization、Type、Content 的4 個 字段值依次逐層來建立節(jié)點樹,并將LocalPath 字段值賦給葉節(jié)點(Content)的Name 屬性,預(yù)報員在選擇某個葉節(jié)點時,獲取Name 屬性,加上配置文件中資源文件存儲文件夾路徑,得到該葉節(jié)點所代表資源文件的絕對路徑,調(diào)用相應(yīng)方法打開該文件。這種國家、機構(gòu)、類型、內(nèi)容的樹狀結(jié)構(gòu)實現(xiàn)了資源文件的有效組織,其結(jié)構(gòu)層次清晰易懂,方便預(yù)報員的查找,使用過程中最多只需點擊5 次就可以打開所需文件,見圖1。當然也可以根據(jù)不同預(yù)報員的習慣,通過預(yù)設(shè)配置等方式一鍵顯示所有常用的資源文件。以上功能主要使用了DataSet、TreeNode、TreeView 等類和控件。
圖1 資源文件樹形組織及多圖顯示
當前的顯示器多為大屏幕寬屏顯示器,可以完整地并排顯示2 個文件的圖像信息,也可以“田”字型方式壓縮顯示4 個文件。為便于預(yù)報員對比分析,以單頁多圖、單頁單圖、多頁多圖等方式顯示不同格式文件的功能是必須的,由于實現(xiàn)原理并不復(fù)雜,將Visual Studio 2003 及后續(xù)版本中的現(xiàn)成控件如Panel、SplitContainer、PictureBox、TabControl、WebBrowser 等加以組合就可以實現(xiàn),因此不再贅述。
針對互聯(lián)網(wǎng)上共享發(fā)布的各類海洋氣象參考信息資源,各級海洋氣象預(yù)報機構(gòu),特別是參考信息資源相對較少的省級以下預(yù)報臺站,如何有效挖掘利用這些資源,提高專業(yè)技術(shù)水平和預(yù)報質(zhì)量,是一個值得深入研究的課題。本文作者在2002年利用VB 開發(fā)了系統(tǒng)的第一個版本,應(yīng)用到浙江省海洋預(yù)報實際工作中,幾年來根據(jù)一線預(yù)報員的使用反饋不斷更新完善,當前利用C#開發(fā)的是第4 個版本,已成為預(yù)報員日常工作的重要輔助工具,對于提高預(yù)報員的工作效率和預(yù)報信息資源的存儲備份有積極的作用和意義,值得進一步完善和推廣。
[1] 左書華,李蓓.近20年中國海洋災(zāi)害特征、危害及防治對策[J].氣象與減災(zāi)研究,2008,31(4):28-33.
[2] 楊華庭.近十年來的海洋災(zāi)害與減災(zāi)[J].海洋預(yù)報,2002,19(1):2-7.
[3] Simon Robinson,Christian Nagel.C#高級編程(第3 版)[M].北京:清華大學(xué)出版社,2005.
[4] Tobin Titus,F(xiàn)abio Claudio Ferracchiati.C# 線程參考手冊[M].北京:清華大學(xué)出版社,2003.