費(fèi)建瑤,黃曉東,高金龍,梁天剛
(草地農(nóng)業(yè)生態(tài)系統(tǒng)國(guó)家重點(diǎn)實(shí)驗(yàn)室 農(nóng)業(yè)部草牧業(yè)創(chuàng)新重點(diǎn)實(shí)驗(yàn)室 蘭州大學(xué)草地農(nóng)業(yè)科技學(xué)院,甘肅 蘭州 730020)
青藏高原地區(qū)是我國(guó)主要牧區(qū)之一,同時(shí)也是我國(guó)三大積雪分布區(qū)之一。青海省牧區(qū)位于青藏高原東北部,屬高寒牧區(qū),冬春季易受到雪災(zāi)的影響[1]。由于該牧區(qū)是天然牧區(qū),生產(chǎn)方式較落后,基礎(chǔ)設(shè)施薄弱,冬春季受降雪量的影響較大,故對(duì)自然災(zāi)害的抵抗能力相對(duì)較差[2],尤其是將畜牧業(yè)作為主要經(jīng)濟(jì)來(lái)源,其經(jīng)濟(jì)狀況和生命財(cái)產(chǎn)安全易受到雪災(zāi)的威脅[3]。根據(jù)1949-2002年氣象及雪災(zāi)資料顯示,該牧區(qū)遭受的雪災(zāi)凍害發(fā)生頻繁,造成的直接經(jīng)濟(jì)損失嚴(yán)重[4]。所以,青海省牧區(qū)的雪災(zāi)監(jiān)測(cè)和預(yù)防工作顯得很重要。而地理信息系統(tǒng)(Geographic Information System,GIS)的應(yīng)用使針對(duì)雪災(zāi)相關(guān)數(shù)據(jù)資料的統(tǒng)計(jì)分析變得較為容易。從20世紀(jì)60年代至今,GIS的應(yīng)用越來(lái)越廣泛,相關(guān)產(chǎn)品也越來(lái)越多[5]。地理信息系統(tǒng)在采集、處理、存儲(chǔ)、管理、分析、輸出地理空間數(shù)據(jù)及屬性信息中發(fā)揮了很大作用,方便了大家對(duì)地理空間數(shù)據(jù)及業(yè)務(wù)的處理[5]。網(wǎng)絡(luò)地理信息系統(tǒng)(WebGIS)則是將GIS的單機(jī)環(huán)境逐漸轉(zhuǎn)換為網(wǎng)絡(luò)環(huán)境,減少了數(shù)據(jù)操作人員對(duì)系統(tǒng)環(huán)境的依賴,同時(shí)增加了數(shù)據(jù)資源的共享。
目前,已經(jīng)有很多學(xué)者通過(guò)遙感技術(shù)及GIS較準(zhǔn)確地對(duì)牧區(qū)積雪的變化進(jìn)行監(jiān)測(cè)分析。王瑋[6]利用遙感和地理信息系統(tǒng)等技術(shù),根據(jù)2003-2010年青藏高原地區(qū)積雪數(shù)據(jù)集、氣象觀測(cè)數(shù)據(jù)、家畜、草地、社會(huì)經(jīng)濟(jì)資料及雪災(zāi)預(yù)警模型,設(shè)計(jì)開(kāi)發(fā)了基于ArcGIS Server和Flex(Adobe Flex)等技術(shù)的青藏高原牧區(qū)積雪監(jiān)測(cè)與雪災(zāi)預(yù)警系統(tǒng)。薩楚拉[3]以內(nèi)蒙古草原牧區(qū)雪災(zāi)快速監(jiān)測(cè)技術(shù)和雪災(zāi)風(fēng)險(xiǎn)評(píng)價(jià)方法為基礎(chǔ),結(jié)合內(nèi)蒙古2003-2012年共10年的積雪時(shí)空動(dòng)態(tài)監(jiān)測(cè)分析數(shù)據(jù),以Visual C#語(yǔ)言為開(kāi)發(fā)平臺(tái),借助ArcEngine設(shè)計(jì)實(shí)現(xiàn)了內(nèi)蒙古草原牧區(qū)雪災(zāi)監(jiān)測(cè)與風(fēng)險(xiǎn)評(píng)價(jià)輔助決策系統(tǒng);王建忠等[7]基于Geomedia WebMap和SQL Server 2000開(kāi)發(fā)了新疆牧區(qū)雪災(zāi)預(yù)報(bào)預(yù)警系統(tǒng);賀俊杰等[8]以Windows 98為工作平臺(tái)使用VB6.0(Visual Basic 6.0)設(shè)計(jì)開(kāi)發(fā)了雪災(zāi)監(jiān)測(cè)服務(wù)系統(tǒng)。這些系統(tǒng)使雪災(zāi)相關(guān)資料更好地服務(wù)于雪災(zāi)風(fēng)險(xiǎn)監(jiān)測(cè)工作,在設(shè)計(jì)及思想上做了很大貢獻(xiàn),但仍然存在一些問(wèn)題,如數(shù)據(jù)資料的更新緩慢,手工處理過(guò)程繁雜,系統(tǒng)的運(yùn)算能力較弱,以及系統(tǒng)缺乏靈活性等。這是由于雪災(zāi)風(fēng)險(xiǎn)監(jiān)測(cè)與預(yù)警需要以大量的數(shù)據(jù)作為分析及解釋的基礎(chǔ),而數(shù)據(jù)的基礎(chǔ)是對(duì)原始?xì)庀笫占Y料去云干擾、去異常值及插值補(bǔ)值的處理[9]。所以,在進(jìn)行WebGIS系統(tǒng)開(kāi)發(fā)時(shí),系統(tǒng)的功能常遭到約束,可操作的數(shù)據(jù)范圍常受到限制,不能及時(shí)更新數(shù)據(jù)資料。而GeoServer具有開(kāi)源和靈活的特點(diǎn),雖然ArcGIS Server在進(jìn)行地圖渲染、切片時(shí)的效率高于GeoServer,且較后者更節(jié)約存儲(chǔ)空間,但是使用GeoServer可以增加開(kāi)發(fā)的靈活性和系統(tǒng)的可移植性,而且不會(huì)受付費(fèi)問(wèn)題的影響[10]。使用開(kāi)源框架雖然會(huì)降低開(kāi)發(fā)效率、增加耗時(shí),但是卻具有低成本及易擴(kuò)充的特點(diǎn)。開(kāi)源軟件大眾協(xié)同、開(kāi)放式共享、持續(xù)創(chuàng)新的特點(diǎn)令開(kāi)源項(xiàng)目更具有發(fā)展?jié)摿?,這點(diǎn)從全球開(kāi)源軟件項(xiàng)目風(fēng)險(xiǎn)投資的持續(xù)增長(zhǎng)中也可以看出[11]。MATLAB強(qiáng)大的數(shù)字處理能力在其提供了MATLAB Builder for java這個(gè)工具之后,使J2EE也能很好地利用MATLAB的內(nèi)置函數(shù),從而開(kāi)發(fā)出具有較強(qiáng)運(yùn)算能力的系統(tǒng)。通過(guò)以XML的方式讀取系統(tǒng)模塊配置參數(shù),可增加系統(tǒng)的靈活性,將重復(fù)的數(shù)據(jù)處理工作模塊化,降低了人工成本。開(kāi)發(fā)Web系統(tǒng)則是為了方便客戶端的使用,不過(guò)相應(yīng)地會(huì)增加服務(wù)器的負(fù)荷。而這些特點(diǎn)在一定程度上能彌補(bǔ)上述系統(tǒng)中存在的問(wèn)題。
本研究以青海省雪災(zāi)風(fēng)險(xiǎn)綜合評(píng)價(jià)的Logistic回歸模型[1]、雪災(zāi)家畜死亡率估測(cè)BP-ANN模型[12]為基礎(chǔ),將人均GDP、年均溫、最大雪深、積雪覆蓋日數(shù)、坡度、平均溫度、春季雪災(zāi)概率、雪災(zāi)綜合風(fēng)險(xiǎn)、均溫小于-5 ℃的持續(xù)天數(shù)和積雪覆蓋率10項(xiàng)風(fēng)險(xiǎn)因子作為輸入數(shù)據(jù),將區(qū)域邊界圖、縣行政區(qū)劃圖、水系湖泊圖幾項(xiàng)區(qū)域信息作為基礎(chǔ)數(shù)據(jù),使用GeoServer地圖服務(wù),PostgreSQL數(shù)據(jù)庫(kù)、MVC(Model模型,View視圖,Controller,控制器)設(shè)計(jì)模式以及J2EE(Java 2 Platform Enterprise Edition),以實(shí)現(xiàn)包含青海省牧區(qū)雪災(zāi)發(fā)生概率評(píng)估、雪災(zāi)家畜死亡率的預(yù)測(cè)、區(qū)域信息及雪災(zāi)監(jiān)測(cè)與預(yù)警歷史數(shù)據(jù)查詢、超閾值預(yù)警信息發(fā)布等功能的青海省牧區(qū)雪災(zāi)監(jiān)測(cè)與預(yù)警的WebGIS系統(tǒng)。
青海省牧區(qū)雪災(zāi)監(jiān)測(cè)與預(yù)警系統(tǒng)是基于青海雪災(zāi)風(fēng)險(xiǎn)綜合評(píng)價(jià)的Logistic回歸模型和雪災(zāi)家畜死亡率估測(cè)BP-ANN模型結(jié)合區(qū)域邊界圖、縣行政區(qū)劃圖、水系湖泊圖幾項(xiàng)區(qū)域信息最終以可視化方式展示青海省牧區(qū)雪災(zāi)風(fēng)險(xiǎn)區(qū)劃圖、雪災(zāi)家畜危害區(qū)劃圖,并提供歷史雪災(zāi)監(jiān)測(cè)與預(yù)警數(shù)據(jù)查詢以及屬性查詢、數(shù)據(jù)導(dǎo)入、超閾值預(yù)警信息發(fā)布等功能的WebGIS。該系統(tǒng)的雪災(zāi)監(jiān)測(cè)與預(yù)警功能主要依賴雪災(zāi)風(fēng)險(xiǎn)概率運(yùn)算以及雪災(zāi)家畜死亡率運(yùn)算。根據(jù)影響因子計(jì)算出雪災(zāi)風(fēng)險(xiǎn)概率及家畜死亡率,并將結(jié)果數(shù)據(jù)進(jìn)行渲染,生成雪災(zāi)風(fēng)險(xiǎn)區(qū)劃圖及雪災(zāi)家畜危害區(qū)劃圖,然后將柵格圖片發(fā)布至Web頁(yè)面,便于可視化顯示。在獲取到雪災(zāi)發(fā)生概率和雪災(zāi)家畜死亡率之后,參照青海雪災(zāi)風(fēng)險(xiǎn)等級(jí)[13]及雪災(zāi)預(yù)警分級(jí)評(píng)價(jià)標(biāo)準(zhǔn)[1]篩選高風(fēng)險(xiǎn)等級(jí)的數(shù)值及其坐標(biāo)值,并在系統(tǒng)內(nèi)發(fā)布預(yù)警信息。
其中,雪災(zāi)風(fēng)險(xiǎn)概率運(yùn)算主要以馬曉芳等[1]提出的青海雪災(zāi)風(fēng)險(xiǎn)綜合評(píng)價(jià)的Logistic回歸模型作為參考:
Logistic(P)=-12.559+0.601x1+2.544x2+3.066x3+1.724x4+7.837x5。
式中:x1、x2、x3、x4、x5分別為坡度、積雪覆蓋日數(shù)、年均溫、最大雪深、人均GDP;P為雪災(zāi)發(fā)生的概率[1]。該功能以人均GDP、年均溫、最大雪深、積雪覆蓋日數(shù)、坡度5項(xiàng)影響因子作為數(shù)據(jù)輸入,通過(guò)數(shù)字矩陣轉(zhuǎn)換以及回歸運(yùn)算輸出雪災(zāi)發(fā)生概率的柵格數(shù)據(jù)即空間分布。
而雪災(zāi)家畜死亡率的計(jì)算則以高金龍等[12]訓(xùn)練并提出的雪災(zāi)家畜死亡率估測(cè)BP-ANN模型為參考,將雪災(zāi)發(fā)生概率、平均溫度、春季雪災(zāi)概率、均溫小于-5 ℃的持續(xù)天數(shù)和積雪覆蓋率5項(xiàng)影響因子作為輸入層,通過(guò)數(shù)字矩陣轉(zhuǎn)換以及BP-ANN模型運(yùn)算模擬輸出未知雪災(zāi)事件導(dǎo)致的家畜死亡率的柵格數(shù)據(jù)即空間分布。
超閾值及其對(duì)應(yīng)坐標(biāo)的提取則是根據(jù)雪災(zāi)風(fēng)險(xiǎn)概率運(yùn)算以及雪災(zāi)家畜死亡率的運(yùn)算結(jié)果,依照青海雪災(zāi)風(fēng)險(xiǎn)等級(jí)及雪災(zāi)預(yù)警分級(jí)評(píng)價(jià)標(biāo)準(zhǔn),篩選高風(fēng)險(xiǎn)等級(jí)的數(shù)值,并且追蹤其對(duì)應(yīng)的坐標(biāo)值,記錄數(shù)值,然后生成預(yù)警信息,進(jìn)行系統(tǒng)內(nèi)預(yù)警信息的發(fā)布。
該系統(tǒng)的主界面為青海省區(qū)域邊界圖、縣行政區(qū)劃圖、水系湖泊圖的疊加顯示,左上角系統(tǒng)觸發(fā)屬性查詢、雪災(zāi)監(jiān)測(cè)與預(yù)警歷史數(shù)據(jù)查詢、預(yù)警信息查詢窗口??稍谒阉鳈谥羞M(jìn)行屬性信息的查詢,也可在地圖元素中點(diǎn)擊獲取屬性信息。雪災(zāi)監(jiān)測(cè)與預(yù)警歷史數(shù)據(jù)的查詢需要在獲取結(jié)果后確認(rèn)是否顯示,以加載圖層。頂部的菜單欄中可以進(jìn)行雪災(zāi)風(fēng)險(xiǎn)評(píng)估與預(yù)警、系統(tǒng)維護(hù)功能的切換,頁(yè)面上方為坐標(biāo)信息的顯示,右下角具備鷹眼功能,右上角可以選擇需要顯示的圖層。
圖1 青海省牧區(qū)雪災(zāi)監(jiān)測(cè)與預(yù)警系統(tǒng)主界面Fig. 1 Main interface of snow disaster system in Qinghai Province
該系統(tǒng)遵循MVC的分層設(shè)計(jì)思想,將系統(tǒng)整體上分為數(shù)據(jù)層、應(yīng)用邏輯服務(wù)層以及表現(xiàn)層,在此不進(jìn)行詳細(xì)說(shuō)明。這種設(shè)計(jì)模式可增加代碼的可維護(hù)性和重用性,使組件分離、系統(tǒng)結(jié)構(gòu)更清晰[14],并且將部分邏輯分析處理轉(zhuǎn)由瀏覽器承擔(dān),可緩解服務(wù)器的壓力。圖2為青海省牧區(qū)雪災(zāi)監(jiān)測(cè)與預(yù)警系統(tǒng)層次結(jié)構(gòu)圖。服務(wù)器使用Tomcat,采用B/S(Browser/Server)結(jié)構(gòu),即瀏覽器和服務(wù)器模式,使客戶端的操作不受操作環(huán)境的影響,只需要考慮瀏覽器。
根據(jù)系統(tǒng)功能模塊的需求,整理設(shè)計(jì)關(guān)于影響因子、區(qū)域信息、系統(tǒng)參數(shù)的數(shù)據(jù)庫(kù),即創(chuàng)建用于查詢及管理的屬性數(shù)據(jù)表、部分地圖的空間數(shù)據(jù)表、系統(tǒng)參數(shù)表以及柵格地圖,其中柵格地圖、部分矢量地圖以文件形式存儲(chǔ)。數(shù)據(jù)內(nèi)容包括青海村莊、鄉(xiāng)(鎮(zhèn))、縣、省道、湖泊、縣道、河流及中國(guó)省界,元素類型、運(yùn)算參數(shù)、文件存儲(chǔ)目錄,人均GDP、年均溫、最大雪深、積雪覆蓋日數(shù)、坡度、平均溫度、春季雪災(zāi)概率、雪災(zāi)綜合風(fēng)險(xiǎn)、均溫小于-5 ℃的持續(xù)天數(shù)以及積雪覆蓋率。
根據(jù)青海雪災(zāi)風(fēng)險(xiǎn)綜合評(píng)價(jià)的Logistic回歸模型[1]、雪災(zāi)家畜死亡率估測(cè)BP-ANN模型[12]、青海雪災(zāi)風(fēng)險(xiǎn)等級(jí)及雪災(zāi)預(yù)警分級(jí)評(píng)價(jià)標(biāo)準(zhǔn),利用MATLAB與Java的混合開(kāi)發(fā)完成系統(tǒng)的分析運(yùn)算功能,生成青海省牧區(qū)雪災(zāi)風(fēng)險(xiǎn)概率及家畜死亡率,篩選高風(fēng)險(xiǎn)等級(jí)的數(shù)值及其對(duì)應(yīng)坐標(biāo)值。該運(yùn)算在MATLAB中設(shè)計(jì)實(shí)現(xiàn),以輸入輸出為界限進(jìn)行功能的構(gòu)建,方便在Java中調(diào)用。
數(shù)據(jù)是系統(tǒng)進(jìn)行運(yùn)算與邏輯分析的基礎(chǔ),各功能模塊依附的框架所支持的數(shù)據(jù)類型不同。屬性數(shù)據(jù)使用關(guān)系數(shù)據(jù)表進(jìn)行存儲(chǔ),區(qū)域信息的矢量數(shù)據(jù)以空間數(shù)據(jù)表、GML、KML形式存儲(chǔ),用于空間運(yùn)算的柵格數(shù)據(jù)則使用Geo tiff形式存儲(chǔ)。而調(diào)用這些數(shù)據(jù)進(jìn)行不同操作時(shí)需要轉(zhuǎn)換數(shù)據(jù)。主要的轉(zhuǎn)換操作有圖像與數(shù)字矩陣間的相互轉(zhuǎn)換、柵格及矢量數(shù)據(jù)的圖片化展示、柵格及矢量數(shù)據(jù)的PostgreSQL存儲(chǔ)。這些操作分別使用MATLAB(geotiffread、geotiffwrite等)、GeoServer(REST API)以及PostgreSQL(PostGIS)實(shí)現(xiàn),為系統(tǒng)對(duì)雪災(zāi)影響因子及青海省區(qū)域信息的處理提供了良好的支持。
圖2 青海省牧區(qū)雪災(zāi)監(jiān)測(cè)與預(yù)警系統(tǒng)層次結(jié)構(gòu)圖Fig. 2 Architecture of snow disaster system in Qinghai Province
對(duì)分析運(yùn)算和邏輯處理后的數(shù)據(jù)進(jìn)行前臺(tái)頁(yè)面的展示,包括區(qū)域信息的圖層疊加、地圖元素屬性的查詢、雪災(zāi)風(fēng)險(xiǎn)區(qū)劃圖及雪災(zāi)家畜危害區(qū)劃圖的顯示、超閾值預(yù)警信息的發(fā)布。為了提高加載速率,部分矢量地圖使用GML/KML形式加載,柵格地圖依賴WMS(Web Map Server)使用Geoserver進(jìn)行發(fā)布。
該系統(tǒng)屬于WebGIS系統(tǒng),包含地圖服務(wù)GeoServer,用于展示青海省區(qū)域信息、雪災(zāi)監(jiān)測(cè)與預(yù)警數(shù)據(jù)及簡(jiǎn)單的空間分析處理;進(jìn)行前臺(tái)頁(yè)面地圖展示的核心組件OpenLayers,用于圖層展示并向GeoServer發(fā)送相關(guān)業(yè)務(wù)請(qǐng)求;進(jìn)行數(shù)據(jù)操作、數(shù)據(jù)模型處理以及邏輯業(yè)務(wù)處理的基于J2EE實(shí)現(xiàn)的系統(tǒng)核心部分,用于青海雪災(zāi)風(fēng)險(xiǎn)綜合評(píng)價(jià)Logistic回歸運(yùn)算、雪災(zāi)家畜死亡率BP-ANN估測(cè)、超閾值及其對(duì)應(yīng)坐標(biāo)值的提取、地圖元素屬性查詢及修改;支持空間數(shù)據(jù)的PostgreSQL數(shù)據(jù)庫(kù),用于數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)轉(zhuǎn)換及數(shù)據(jù)運(yùn)算(圖3)。
本系統(tǒng)依賴GeoServer地圖服務(wù),依照WMS(Web Map Server)、WFS(Web Feature Server)以及WCS(Web Coverage Server)規(guī)范進(jìn)行柵格及矢量地圖的發(fā)布、地圖要素的操作以及空間分析。使用Openlayers向GeoServer發(fā)送XML請(qǐng)求獲取地圖元素,并在前臺(tái)頁(yè)面進(jìn)行地圖展示。其空間數(shù)據(jù)的處理及運(yùn)算部分主要依賴于PostgreSQL、MATLAB(MATLAB Builder for Java)以實(shí)現(xiàn)圖像與數(shù)字矩陣的轉(zhuǎn)換、模型矩陣的運(yùn)算及風(fēng)險(xiǎn)等級(jí)和預(yù)警數(shù)據(jù)的生成。數(shù)據(jù)的存儲(chǔ)使用PostgreSQL,分為屬性數(shù)據(jù)和空間數(shù)據(jù),并輔以tif(Geo tiff)格式以文件形式存儲(chǔ)柵格數(shù)據(jù),為數(shù)據(jù)的查詢和空間分析處理提供數(shù)據(jù)支持。
圖3 青海省牧區(qū)雪災(zāi)監(jiān)測(cè)與預(yù)警系統(tǒng)建設(shè)內(nèi)容和方法Fig. 3 Content and method of construction of snow disaster system in Qinghai Province
與單一地調(diào)用地圖服務(wù)展示地圖數(shù)據(jù)不同的是,該系統(tǒng)使用MATLAB的MATLAB Builder for Java功能對(duì)數(shù)字矩陣進(jìn)行回歸運(yùn)算,從而獲取目標(biāo)數(shù)據(jù)。MATLAB Builder for Java是MATLAB Compiler的一個(gè)擴(kuò)展功能,該功能可以將MATLAB中設(shè)計(jì)好的算法直接轉(zhuǎn)成Java類,為Java與MATLAB的混合開(kāi)發(fā)提供了便利,這種設(shè)計(jì)可以增強(qiáng)系統(tǒng)的運(yùn)算能力。
利用MATLAB設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)的運(yùn)算功能是本研究的重要環(huán)節(jié),系統(tǒng)中將其分為4部分,圖像轉(zhuǎn)為數(shù)字矩陣、模型的運(yùn)算分析、數(shù)字矩陣轉(zhuǎn)圖像和地圖數(shù)據(jù)存儲(chǔ)。上文中提到的青海省區(qū)域信息(村莊、鄉(xiāng)鎮(zhèn)、縣、省道、縣道、湖泊、河流)以矢量數(shù)據(jù)和關(guān)系數(shù)據(jù)表形式存儲(chǔ),可以直接在地圖中獲取元素及其信息,比如祁連縣(位于青海省東北部)。而用于模型運(yùn)算的影響因子(人均GDP、年均溫、最大雪深、積雪覆蓋日數(shù)、坡度、雪災(zāi)發(fā)生概率、平均溫度、春季雪災(zāi)概率、均溫小于-5 ℃的持續(xù)天數(shù)和積雪覆蓋率)則為柵格數(shù)據(jù),該系統(tǒng)中使用tif格式,便于MATLAB進(jìn)行運(yùn)算。從ArcMap中導(dǎo)出的每一個(gè)影響因子的地圖數(shù)據(jù)文件包含5類,分別為.tif(標(biāo)記圖像文件)、tfw(坐標(biāo)文件)、tif.aux.xml(柵格輔助信息)、tif.ovr(金字塔文件)、tif.xml(影像文本信息,為非必需文件),而用于模型運(yùn)算的為.tif標(biāo)記圖像文件。MATLAB擁有矩陣運(yùn)算能力和圖形化功能,其內(nèi)置geotiffread、regress、geotiffwrite等函數(shù)可實(shí)現(xiàn)圖像讀入、矩陣轉(zhuǎn)換、矩陣運(yùn)算、異常值處理、重新繪圖等。MATLAB與Java的混合編程簡(jiǎn)化了編程的復(fù)雜性,同時(shí)增加了系統(tǒng)處理復(fù)雜模型的能力。但是由于圖形矩陣容易消耗內(nèi)存,若需要的存儲(chǔ)空間超過(guò)內(nèi)存大小或者連續(xù)的存儲(chǔ)空間不足都會(huì)造成內(nèi)存溢出,所以在MATLAB的代碼設(shè)計(jì)中盡量減少for循環(huán)的使用,提前為容易消耗內(nèi)存的變量分配連續(xù)的內(nèi)存空間,并及時(shí)回收整理內(nèi)存。系統(tǒng)設(shè)計(jì)將運(yùn)算功能和查詢功能分開(kāi),也是為了緩解內(nèi)存的消耗,Logistic回歸運(yùn)算、BP-ANN模型運(yùn)算、數(shù)值及坐標(biāo)的提取不必實(shí)時(shí)進(jìn)行,只需在系統(tǒng)收到運(yùn)算命令后進(jìn)行相應(yīng)的矩陣運(yùn)算。而首次生成的tif文件(青海雪災(zāi)風(fēng)險(xiǎn)概率或青海雪災(zāi)家畜死亡率)在進(jìn)行空間分析和渲染后生成需要的結(jié)果圖,存儲(chǔ)后供下次查詢時(shí)直接使用,無(wú)需再次進(jìn)行復(fù)雜的運(yùn)算,這樣既可以減少服務(wù)器的壓力,也能縮短系統(tǒng)的響應(yīng)時(shí)長(zhǎng)。此功能需要中間參數(shù)表的支持,以便進(jìn)行相關(guān)數(shù)據(jù)的存儲(chǔ),包括數(shù)據(jù)日期、雪災(zāi)風(fēng)險(xiǎn)概率及雪災(zāi)家畜死亡率文件的存放目錄、數(shù)據(jù)版本號(hào)等信息。超閾值及其坐標(biāo)的提取是針對(duì)風(fēng)險(xiǎn)概率及家畜死亡率進(jìn)行的運(yùn)算,將篩選的數(shù)據(jù)記錄在獨(dú)立的數(shù)據(jù)表中,前臺(tái)頁(yè)面調(diào)用時(shí)以預(yù)警信息的形式顯示。
以xml進(jìn)行系統(tǒng)參數(shù)文件的讀取,是考慮到OpenLayers在調(diào)用函數(shù)訪問(wèn)GeoServer地圖服務(wù)時(shí),由于讀取地圖的方式不一樣,導(dǎo)致主要參數(shù)的不同。KML和GML文件不經(jīng)過(guò)GeoServer地圖服務(wù)就可以在頁(yè)面上呈現(xiàn),而shp(shape)和tif類型的文件則需要通過(guò)OpenLayers的WFS和WMS方法訪問(wèn)GeoServer從而顯示地圖。在xml中修改url、featureNS、featureType等參數(shù),系統(tǒng)在加載時(shí)讀入。以Excel導(dǎo)入方式進(jìn)行地圖元素屬性以及主要信息表的維護(hù),該功能使用Jxl包(jar包)來(lái)完成對(duì)Excel文件的讀寫,Jxl包含操作Workbook、Sheet及Cell的類。在數(shù)據(jù)寫入層進(jìn)行Excel文件的存儲(chǔ)和數(shù)據(jù)庫(kù)表的更新。
系統(tǒng)中Logistic線性回歸模型、雪災(zāi)家畜死亡率估測(cè)BP-ANN模型的實(shí)現(xiàn)依賴MATLAB Builder for java 工具。在MATLAB中使用net.trainParam方法訓(xùn)練出理想的網(wǎng)絡(luò),使用矩陣運(yùn)算實(shí)現(xiàn)多元回歸算法,利用deploytool生成相應(yīng)的jar包,然后在Java中進(jìn)行調(diào)用,使用方法與一般的類一樣。實(shí)現(xiàn)過(guò)程中對(duì)代碼的執(zhí)行效率進(jìn)行了簡(jiǎn)單測(cè)試(MATLAB使用clock和etime,Java使用System.currentTimeMillis),MATLAB中的執(zhí)行時(shí)間明顯小于Java中的。
青海省牧區(qū)雪災(zāi)監(jiān)測(cè)與預(yù)警系統(tǒng)的主要功能包括屬性信息查詢、雪災(zāi)監(jiān)測(cè)與預(yù)警歷史數(shù)據(jù)查詢、雪災(zāi)風(fēng)險(xiǎn)區(qū)劃圖及雪災(zāi)家畜危害區(qū)劃圖的展示、雪災(zāi)風(fēng)險(xiǎn)概率及家畜死亡率的運(yùn)算、超閾值及其對(duì)應(yīng)坐標(biāo)值的提取、系統(tǒng)用戶管理、數(shù)據(jù)導(dǎo)入(圖4)。系統(tǒng)的主要目的為計(jì)算雪災(zāi)風(fēng)險(xiǎn)概率、家畜死亡率、超閾值及其對(duì)應(yīng)坐標(biāo)值,查詢管理區(qū)域信息數(shù)據(jù)、雪災(zāi)風(fēng)險(xiǎn)監(jiān)測(cè)與預(yù)警數(shù)據(jù)。
根據(jù)區(qū)域信息圖的矢量數(shù)據(jù),抽取其屬性數(shù)據(jù),建立屬性信息表,在進(jìn)行地圖元素屬性查詢時(shí),將關(guān)聯(lián)的屬性信息以列表的形式展示,或者在地圖元素中直接獲取。
提供歷史數(shù)據(jù)查詢功能是由于影響因子為變量,運(yùn)算結(jié)果僅是某段時(shí)間內(nèi)的監(jiān)測(cè)與預(yù)警數(shù)據(jù),所以雪災(zāi)風(fēng)險(xiǎn)區(qū)劃圖、雪災(zāi)家畜危害區(qū)劃圖及預(yù)警信息會(huì)因此產(chǎn)生不同時(shí)期的數(shù)據(jù),系統(tǒng)需要將這些數(shù)據(jù)都保存下來(lái),并提供查詢。
該模塊提供基于某一版本影響因子數(shù)據(jù)的雪災(zāi)風(fēng)險(xiǎn)區(qū)劃圖、雪災(zāi)家畜危害區(qū)劃圖的展示;記錄超過(guò)閾值的雪災(zāi)風(fēng)險(xiǎn)概率、家畜死亡率,并在系統(tǒng)內(nèi)部發(fā)布預(yù)警信息。若雪災(zāi)風(fēng)險(xiǎn)區(qū)劃圖及雪災(zāi)家畜危害區(qū)劃圖為第一次加載,或者沒(méi)有使用過(guò)雪災(zāi)風(fēng)險(xiǎn)概率或家畜死亡率運(yùn)算功能,則加載時(shí)間較長(zhǎng),因?yàn)樾枰{(diào)用運(yùn)算功能處理矩陣數(shù)據(jù)。
該模塊主要供GIS數(shù)據(jù)維護(hù)者使用,為了盡可能減少數(shù)據(jù)維護(hù)者的工作,該系統(tǒng)在數(shù)據(jù)導(dǎo)入模塊中實(shí)現(xiàn)了屬性數(shù)據(jù)和空間數(shù)據(jù)的維護(hù)功能,使用Excel文件、GML/KML文件以及tiff柵格數(shù)據(jù)文件進(jìn)行屬性數(shù)據(jù)或空間數(shù)據(jù)的導(dǎo)入。數(shù)據(jù)的導(dǎo)入可以按照需求,以日期及版本作區(qū)分,可以以日、月、年作為頻次。
該模塊用于青海省牧區(qū)雪災(zāi)概率、家畜死亡率的運(yùn)算、超閾值及其對(duì)應(yīng)坐標(biāo)的提取。以規(guī)范的影響因子作為前提,選擇相應(yīng)的運(yùn)算參數(shù)進(jìn)行運(yùn)算以獲取雪災(zāi)風(fēng)險(xiǎn)概率及家畜死亡率,針對(duì)其運(yùn)算結(jié)果篩選并提取超閾值及其對(duì)應(yīng)坐標(biāo)值,生成記錄,以備使用。
圖4 青海省牧區(qū)雪災(zāi)監(jiān)測(cè)與預(yù)警系統(tǒng)功能模塊示意圖 Fig. 4 Diagram of the function module structure of snow disaster system in Qinghai Province
本研究使用GeoServer、Tomcat、Openlayers、PostgreSQL以及J2EE開(kāi)源框架,利用MATLAB、雪災(zāi)概率回歸方程、BP-ANN模型算法實(shí)現(xiàn)的青海省牧區(qū)雪災(zāi)監(jiān)測(cè)與預(yù)警系統(tǒng),在一定程度上滿足通過(guò)影響因子計(jì)算雪災(zāi)風(fēng)險(xiǎn)概率及雪災(zāi)家畜死亡率的需求,提高了系統(tǒng)與數(shù)據(jù)維護(hù)人員及用戶的交互能力,同時(shí)增加了系統(tǒng)的矩陣運(yùn)算能力。另外,系統(tǒng)將模型運(yùn)算轉(zhuǎn)由系統(tǒng)服務(wù)器處理,整體上減少了手工整理數(shù)據(jù)的過(guò)程,增加了系統(tǒng)實(shí)時(shí)處理數(shù)據(jù)的能力。雖然該系統(tǒng)的數(shù)據(jù)處理能力及效率有待提高,但該系統(tǒng)是模型實(shí)際化的一種嘗試,對(duì)日后繼續(xù)設(shè)計(jì)完善WebGIS的運(yùn)算功能提供了一種思路。該系統(tǒng)使用的風(fēng)險(xiǎn)評(píng)價(jià)模型較單一,數(shù)據(jù)的處理也較簡(jiǎn)單,不能完全滿足復(fù)雜的GIS需求,所以其適用性欠佳。雖然目前還有其他學(xué)者提出的雪災(zāi)風(fēng)險(xiǎn)評(píng)估模型,但是系統(tǒng)、算法、模型設(shè)計(jì)環(huán)節(jié)中存在的諸多困難以及有限的技術(shù)水平導(dǎo)致無(wú)法靈活地應(yīng)用這些模型,造成理論模型豐滿,實(shí)際應(yīng)用欠佳的現(xiàn)象。這也是研究與實(shí)際應(yīng)用之間的屏障,希望在今后的研究中逐漸改善。
參考文獻(xiàn)References:
[1] 馬曉芳,黃曉東,鄧婕,王云龍,梁天剛.青海牧區(qū)雪災(zāi)綜合風(fēng)險(xiǎn)評(píng)估.草業(yè)學(xué)報(bào),2017,26(2):10-20.
Ma X F,Huang X D,Deng J,Wang Y L,Liang T G.Comprehensive risk assessment of snow disasters in Qinghai Province.Acta Prataculturae Sinica,2017,26(2):10-20.(in Chinese)
[2] 雍世鵬,仝川,雍偉義,裴浩.內(nèi)蒙古錫林郭勒草原雪蓋與植被覆蓋重疊關(guān)系的遙感分析.冰川凍土,1994,16(3):238-244.
Yong S P,Tong C,Yong W Y,Pei H.A study on the spatial overlaying relationship between winter snow cover and vegetal cover in Xilin Gole steppe of Inner Mongolia by using remote sensing data.Journal of Glaciology and Geocryology,1994,16(3):238-244.(in Chinese)
[3] 薩楚拉.內(nèi)蒙古草原牧區(qū)雪災(zāi)監(jiān)測(cè)與風(fēng)險(xiǎn)評(píng)價(jià)研究.北京:中國(guó)農(nóng)業(yè)科學(xué)院博士學(xué)位論文,2015.
Sachula.Pastoral and grassland snow hazard monitoring and risk assessment research in Inner Mongolia.PhD Thesis.Beijing:Chinese Academy of Agricultural Sciences,2015.(in Chinese)
[4] 何永清,周秉榮,張海靜,肖建設(shè).青海高原雪災(zāi)風(fēng)險(xiǎn)度評(píng)價(jià)模型與風(fēng)險(xiǎn)區(qū)劃探討.草業(yè)科學(xué),2010,27(11):37-42.
He Y Q,Zhou B R,Zhang H J,Xiao J S.Assessment model on risk degree of snow disaster and its risk division in Qinghai Plateau.Pratacultural Science,2010,27(11):37-42.(in Chinese)
[5] 張貴軍,陳銘.WebGIS工程項(xiàng)目開(kāi)發(fā)實(shí)踐.北京:清華大學(xué)出版社,2016.
Zhang G J,Chen M.WebGIS Engineering Development Practice.Beijing:Tsinghua University Press,2016.(in Chinese)
[6] 王瑋.基于遙感和GIS的青藏高原牧區(qū)積雪動(dòng)態(tài)監(jiān)測(cè)與雪災(zāi)預(yù)警研究.蘭州:蘭州大學(xué)博士學(xué)位論文,2014.
Wang W.Snow cover monitoring and early warning of snow-caused disaster based on remote sensing and GIS technologies in pastoral areas of the Tibetan Plateau.PhD Thesis.Lanzhou:Lanzhou University,2014.(in Chinese)
[7] 王建忠,陳春燕,賈麗紅,成鵬.新疆牧區(qū)雪災(zāi)預(yù)報(bào)預(yù)警系統(tǒng)研究.//中國(guó)氣象學(xué)會(huì)年會(huì)論文集.廈門:中國(guó)氣象學(xué)會(huì),2011:426-429.
Wang J Z,Chen C Y,Jia L H,Cheng P.Forecast and warning system of snow disaster in Xinjiang pastoral area.//Proceedings of Annual Meeting of China Meteorological Society.Xiamen:China Meteorological Society,2011:426-429.(in Chinese)
[8] 賀俊杰,楊文義,王英舜.利用遙感信息建立草原干旱和雪災(zāi)監(jiān)測(cè)服務(wù)系統(tǒng).內(nèi)蒙古氣象,2003(1):31-33.
He J J,Yang W Y,Wang Y S.Using remote sensing information to establish grassland drought and snow disaster monitoring service system.Meteorology Journal of Inner Mongolia,2003(1):31-33.(in Chinese)
[9] 王志偉,張學(xué)通,周兆葉,王平,陳全功.牧區(qū)積雪監(jiān)測(cè)中衛(wèi)星資料應(yīng)用的研究現(xiàn)狀.草業(yè)科學(xué),2009,26(1):32-39.
Wang Z W,Zhang X T,Zhou Z Y,Wang P,Chen Q G.Research progress of satellite data utilization for snow monitoring in pastoral areas.Pratacultural Science,2009,26(1):32-39.(in Chinese)
[10] 汪龍,黃德志.ArcGIS Server與GeoServer瓦片生成對(duì)比研究.科技視界,2013(27):156-157.
Wang L,Huang D Z.Comparative study of server and GeoServer to generate ArcGIS tiles.Science & Technology Vision,2013(27):156-157.(in Chinese)
[11] 金芝,周明輝,張宇霞.開(kāi)源軟件與開(kāi)源軟件生態(tài):現(xiàn)狀與趨勢(shì).科技導(dǎo)報(bào),2016,34(14):42-48.
Jin Z,Zhou M H,Zhang Y X.Open source software and its eco-systems:Today and tomorrow.Science打&Technology Review,2016,34(14):42-48.(in Chinese)
[12] Gao J,Huang X,Ma X,Feng Q,Liang T,Xie H.Snow disaster early warning in pastoral areas of Qinghai Province,China.Remote Sensing,2017,9(5):475.
[13] 郭曉寧,李林,王軍,李兵,李海鳳.基于實(shí)際災(zāi)情的青海高原雪災(zāi)等級(jí)(評(píng)估)指標(biāo)研究.氣象科技,2012,40(4):676-679.
Guo X,Li L,Wang J,Li B,Li H F.Indexes for assessing snow disasters over Qinghai Plateau based on actual snow disasters.Meteorological Science &Technology,2012,40(4):676-679.(in Chinese)
[14] 蔣破荒,徐建明.基于MVC模型和行為描述的Web應(yīng)用測(cè)試框架.現(xiàn)代電子技術(shù),2017(6):71-74.
Jiang P H,Xu J M.Web application testing framework based on MVC model and behavior description.Modern Electronics Technique,2017(6):71-74.(in Chinese)