代德成,普運偉,張 勇
(1. 昆明理工大學(xué) 國土資源工程學(xué)院,云南 昆明 650093;2. 昆明理工大學(xué)計算中心,云南 昆明 650093)
降雨是人類生產(chǎn)生活中常見的天氣現(xiàn)象,其對于人類以及地球上的所有生物來說是獲取生命必須的水資源的必要途徑,人們的生產(chǎn)活動也離不開降雨的作用。降雨還對自然環(huán)境以及人類的生存環(huán)境存在著較大的潛在危害,如帶來泥石流、洪澇等災(zāi)害等,也正因為如此,一直以來,降雨的監(jiān)測、預(yù)報和統(tǒng)計,不僅是氣象學(xué)的重要研究領(lǐng)域,同時也是水文水資源學(xué)者所關(guān)注的重大研究課題[1]。
隨著社會經(jīng)濟快速發(fā)展及科學(xué)技術(shù)水平的不斷提高,國家社會各項生產(chǎn)生活實踐對于實時降水信息的需求不斷增加,降水信息的共享水平以及水利信息化水平也需逐漸提高。由于GIS的空間分析等相關(guān)特性,決定了其在國民經(jīng)濟建設(shè)的各個領(lǐng)域都有著越來越廣的應(yīng)用,當(dāng)然在水文水利方面也有著廣泛的應(yīng)用,特別是在防洪抗旱工作中發(fā)揮著重要作用。
阜新市地處遼西北地區(qū),屬于季風(fēng)區(qū),降雨主要體現(xiàn)在夏天的6、7、8月,由于農(nóng)田豐富所以對水資源的需求非常迫切。通過建立阜新降水信息系統(tǒng),及時準(zhǔn)確的獲取阜新地區(qū)的降水?dāng)?shù)據(jù)并對其進行分析,獲取阜新地區(qū)降水情況的基本具體規(guī)律以便提供準(zhǔn)確的決策信息,為進一步采取措施管理和合理利用阜新水資源提供幫助。
GIS系統(tǒng)的發(fā)展經(jīng)歷了幾個不同的發(fā)展階段,這些發(fā)展階段體現(xiàn)在其應(yīng)用體系結(jié)構(gòu)上表現(xiàn)為:以主機(mainframe computer)為中心的GIS系統(tǒng)技術(shù)應(yīng)用體系結(jié)構(gòu);基于桌面PC機為核心的GIS系統(tǒng)技術(shù)應(yīng)用體系結(jié)構(gòu)以及支持Internet/Intranet網(wǎng)絡(luò)技術(shù)標(biāo)準(zhǔn)的分布式GIS系統(tǒng)技術(shù)應(yīng)用體系結(jié)構(gòu)[2]。
WebGIS即網(wǎng)絡(luò)地理信息系統(tǒng),從組成機構(gòu)上WebGIS系統(tǒng)可以分為動態(tài)WebGIS和主動WebGIS[3]。
WebGIS由于其結(jié)構(gòu)性質(zhì),有以下特點:
(1)廣泛的覆蓋范圍
(2)不依賴平臺
(3)系統(tǒng)成本較低
(4)操作簡便
(5)合理高效的計算負(fù)載配置
(6)廣闊的應(yīng)用擴展空間
目前,WebGIS有三種實現(xiàn)方式,包括服務(wù)器端方式、客戶端方式以及混合方式。WebGIS的實現(xiàn)技術(shù)大致有:通用網(wǎng)關(guān)接口法(CGI)、應(yīng)用程序插入法(Plugin)、Java編程語言實現(xiàn)、ActiveX和部件對象模型(COM)等方法[4]。
關(guān)于數(shù)據(jù)的空間插值的方法有許多,且插值方法的分類方法也有多種,其中一種為將插值法歸為整體插值法和局部插值法[5]。
整體插值法包括趨勢面法,多元回歸法。
局部插值法主要有泰森多邊形法反距離加權(quán)法(IDW),克里金插值法,樣條法。
ArcGIS Server是基于服務(wù)器的功能十分強大的GIS產(chǎn)品,通常用于構(gòu)建集中管理的、支持多用戶的、具備高級GIS功能的企業(yè)級GIS應(yīng)用與服務(wù),ArcGIS Server提供廣泛的基于Web的GIS服務(wù),以支持在分布式環(huán)境下實現(xiàn)地理數(shù)據(jù)管理、制圖、地理處理、空間分析、編輯和其它的GIS功能。ArcGIS Server由Web瀏覽器、GIS服務(wù)器、Web服務(wù)器、桌面產(chǎn)品四部分組成。
目前有三種ArcGIS Server服務(wù)發(fā)布方式。第一種是在 ArcCatalog中發(fā)布地圖服務(wù);第二種是在ArcMap中直接發(fā)布地圖服務(wù);第三種是在ArcGIS Server Manager中發(fā)布地圖服務(wù)。本文使用的地圖服務(wù)為切片類型的地圖服務(wù),切片地圖服務(wù)即緩存第服務(wù),這種服務(wù)方式能使地圖服務(wù)快速有效的運行,其思想是預(yù)先創(chuàng)建了地圖副本,后期加載的時候能夠直接讀取。一般地圖服務(wù)的發(fā)布過程如下。
(1)首先在 ArcMap中打開地圖數(shù)據(jù),對數(shù)據(jù)進行必要的處理,如融合處理、地圖糾正等。
(2) 在文件菜單下共享為服務(wù)中選擇服務(wù)選項。
(3)選擇將要發(fā)布的服務(wù)器名稱,填寫服務(wù)名稱。
(4)在服務(wù)編輯器中對服務(wù)進行設(shè)置選擇切片服務(wù),如圖1所示。
圖1 服務(wù)編輯界面Fig.1 Service editing interface
(5)先進行分析,分析成功后進行預(yù)覽,然后再選擇發(fā)布。
(6)接下來登陸 Manager中看到如下登陸界面。
(7) 瀏覽器查看已經(jīng)發(fā)布的服務(wù),如圖2所示。
圖2 瀏覽服務(wù)界面Fig.2 Browse the service interface
(1)Visual Studio Code介紹
Visual Studio Code(簡稱VS Code/VSC)是一款免費開源的輕量 IDE,或者也可稱其為現(xiàn)代化的代碼編輯器,幾乎所有的主流開發(fā)語言的基礎(chǔ)功能都支持,它還支持插件擴展,而且擁有較為完整的豐富的插件系統(tǒng)。
(2)PostgreSQL數(shù)據(jù)庫簡介
PostgreSQL是一種對象關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS),PostgreSQL 相對于它的競爭者的優(yōu)勢在于其強大的可編程性。
(3)ArcGIS Desktop簡介
ArcGIS for Desktop 是AcrGIS產(chǎn)品系列的桌面軟件產(chǎn)品,為GIS專業(yè)的學(xué)者和工作人員提供信息制作和使用的工具。利用這個工具,我們可以實現(xiàn)許多從簡單到復(fù)雜的GIS任務(wù)。
(4)Beego框架簡介
Beego框架是由謝孟軍基于 GO語言編寫的一個開源框架,其思路來自于tornado,路由設(shè)計來源于 sinatra。Beego的設(shè)計理念主要為模塊化、分離和組合。
(5)Go語言
Go語言是Google于2009年發(fā)布的第二款開源的編程語言。Go語言本身就支持并發(fā)、有著強大的工具、豐富的標(biāo)準(zhǔn)庫及擁有C語言的基因,具備極強的表達能力,此外其還可跨平臺編譯。
(6)ArcGIS for JavaScript API
ArcGIS for JavaScript API是 ESRI根據(jù)JavaScript技術(shù)實現(xiàn)的調(diào)用ArcGIS Server REST API接口的一組腳本[8]。
目前阜新市建有完備的降雨量測量站點體系,這些站點會在降雨活動后自動將本站所測雨量數(shù)據(jù)上傳至數(shù)據(jù)庫中,以備查詢與研究。普通的農(nóng)民或其他人民群眾需要了解本地區(qū)的降水情況以及歷史降水情況總結(jié)經(jīng)驗,合理開展農(nóng)業(yè)生產(chǎn)活動;另外一方面,水利水文相關(guān)部門也需要了解阜新地區(qū)的降雨情況及時分析判斷評估阜新地區(qū)現(xiàn)有水利設(shè)施的利用情況或覆蓋情況,以及規(guī)劃建設(shè)新的水利設(shè)施以使人們能最大化的合理利用阜新現(xiàn)有的水資源,為經(jīng)濟社會發(fā)展奠定基礎(chǔ)。
系統(tǒng)由客戶端、Web層、中間層和數(shù)據(jù)層組成[9]。用戶可以通過瀏覽器實現(xiàn)對 web服務(wù)器的訪問,Web服務(wù)器又可以通過Web Adaptor實現(xiàn)對GIS服務(wù)器的訪問,這樣就可以直接訪問到GIS服務(wù)器上的地圖資源。對于屬性數(shù)據(jù)庫的訪問主要是Web服務(wù)器對PostgreSQL數(shù)據(jù)庫的訪問實現(xiàn)的。
圖3 系統(tǒng)總體框架圖Fig.3 The overall framework of the platform
設(shè)計原則。為了充分滿足用戶需求以及建立完善實用的系統(tǒng),系統(tǒng)設(shè)計主要依據(jù)系統(tǒng)完備、系統(tǒng)實用、結(jié)構(gòu)合理、產(chǎn)品標(biāo)準(zhǔn)、低成本、低維護量等作為基本建設(shè)原則,規(guī)劃系統(tǒng)的整體構(gòu)架。
在數(shù)據(jù)庫設(shè)計階段,需注意以下幾點:提高數(shù)據(jù)的共享性,要充分利用有限的存儲空間,盡量減少數(shù)據(jù)的冗余度,在地理信息系統(tǒng)和其他一般信息系統(tǒng)之間建立數(shù)據(jù)聯(lián)系,要充分保證數(shù)據(jù)的獨立性,使系統(tǒng)適應(yīng)數(shù)據(jù)的存儲結(jié)構(gòu)和存儲方式,要按照各項規(guī)范來進行數(shù)據(jù)庫設(shè)計[12]。
把具備地理位置屬性的數(shù)據(jù)和不帶地理位置屬性的數(shù)據(jù)進行分類,用關(guān)系數(shù)據(jù)庫存儲不帶地理位置屬性的數(shù)據(jù)。各個雨量監(jiān)測站的的降雨量信息,使用降雨量屬性表來進行存儲,其結(jié)構(gòu)如表1所示。
表1 降雨量信息字段Tab.1 Rainfall information fields
圖4 系統(tǒng)技術(shù)路線圖Fig.4 System technology roadmap
根據(jù)需求分析及系統(tǒng)功能設(shè)計,本系統(tǒng)前端界面包括用戶登陸注冊及系統(tǒng)主界面都是采用超文本標(biāo)記語言(HTML)和CSS語言結(jié)合的方式進行頁面布局設(shè)計,搭建起阜新市降水信息系統(tǒng)的界面,保護自己的權(quán)利是應(yīng)該具備的基本意識,因此本系統(tǒng)說明了版權(quán)所有和版本信息。如圖5所示。
圖5 登陸界面Fig.5 Login interface
圖6 系統(tǒng)界面Fig.6 The system interface
本系統(tǒng)根據(jù)設(shè)計,在地圖操作部分實現(xiàn)了地圖的基本操作,包括地圖的平移、放大、縮小和全圖顯示等功能,采用了簡潔的設(shè)計,以求盡量提升用戶的使用體驗。如圖7所示。
圖7 地圖基本操作Fig.7 Map basic operation
根據(jù)需求不同本系統(tǒng)的查詢功能分為一般查詢、按月查詢和按年查詢?nèi)齻€部分。一般查詢主要實現(xiàn)查詢當(dāng)天或歷史某個時間段的降雨量,可以根據(jù)站點選擇或輸入以及時期選擇來確定需要選擇的測站的降雨量。系統(tǒng)的查詢的數(shù)據(jù)來自于數(shù)據(jù)庫里存儲的降雨量數(shù)據(jù),以此實現(xiàn)當(dāng)數(shù)據(jù)庫更新時,我們能即時獲取數(shù)據(jù),也可以保證系統(tǒng)具備較好的運行速度,鏈接數(shù)據(jù)庫的關(guān)鍵代碼如下:
func init() {
orm.RegisterDataBase("default", "postgres", beego.AppConfig.String("spatialdbconnection"))
orm.SetMaxIdleConns("default", 30)
orm.DefaultTimeLoc = time.UTC
查詢時用戶還可以輸入關(guān)鍵字進行測站雨量查詢,用戶可以自己選定日期進行查詢,如圖8、9。
按月查詢即把查詢時間條件調(diào)整為按月計算,這樣查詢出統(tǒng)計數(shù)據(jù),有助于人們了解某個地方的某個月或某幾個月的降水情況以及規(guī)律。
圖8 關(guān)鍵字查詢Fig.8 Keyword query
圖9 日期選擇Fig.9 Date selection
按年查詢則是查詢出阜新地區(qū)的年降雨量的統(tǒng)計數(shù)據(jù),根據(jù)統(tǒng)計數(shù)據(jù)做其它進一步的分析,以得出阜新地區(qū)的降雨規(guī)律及演變等。
此外,在地圖上還可以對測站進行選擇查詢,并在地圖上高亮顯示,并定位到該測站位置,且還可對其測站屬性信息進行顯示。如圖10。
圖10 高亮定位Fig.10 Highlight positioning
根據(jù)需求分析,人們在查詢降雨量的同時還存在著對其他信息有需求的情況,且有關(guān)部門也存在發(fā)布相關(guān)抗洪防汛資訊的需求。因此本系統(tǒng)設(shè)計了一個信息發(fā)布界面,以此來進行相關(guān)信息鏈接及顯示,以滿足人們快捷查詢的需要。比如查詢阜新市天氣情況、洪水預(yù)警信息等。
經(jīng)過需求分析與算法比較,本系統(tǒng)采用IDW插值方法對阜新地區(qū)的降水進行插值分析,根據(jù)需求分析,我們想要得到阜新地區(qū)長時間降雨活動分布情況,以便為水利設(shè)施評估及降雨規(guī)律研究提供數(shù)據(jù)支持,因此本系統(tǒng)以阜新地區(qū)年降雨量為數(shù)據(jù)基礎(chǔ),進行插值分析,最后得到阜新地區(qū)年降雨量的等值面圖,如圖11。由圖我們可以看出,阜新地區(qū)降雨量分布情況清楚明確,在地區(qū)分布上具有一定的規(guī)律性,降雨活動在阜新市區(qū)周圍、阜蒙縣北部和西部、彰武縣東南部比較頻繁,這些地區(qū)降雨量較大,在降雨量較大的地區(qū)我們應(yīng)該對其現(xiàn)有水利設(shè)施進行充分的評估判斷。也為阜新防洪抗旱工作提供一定的數(shù)據(jù)支撐,能夠進行較為精確的統(tǒng)籌工作,為決策提供幫助,實現(xiàn)精確抗洪、災(zāi)情預(yù)測等目標(biāo)。
圖11 分析結(jié)果Fig.11 Shows the results
系統(tǒng)中可以根據(jù)某天或某年等時間段來進行降雨量統(tǒng)計顯示,根據(jù)這項統(tǒng)計可以清楚的看見降雨活動在整個阜新地區(qū)的情況,可以知道降雨量最大最小地區(qū),也可以了解到阜新地區(qū)的平均降雨量等信息。如表2為2013年7月8日至2013年7月9日的最大、最小和平均降雨量等信息。
表2 降雨量匯總Tab.2 Summary of rainfall
本文運用 Go語言進行后端編寫,由此構(gòu)建系統(tǒng)總體結(jié)構(gòu),其中編譯好的Go語言程序能起到Web服務(wù)器的作用。
并借助于ArcGIS for JavaScript實現(xiàn)了地圖的基本操作功能,如地圖放大、縮小、平移等,還實現(xiàn)了查詢顯示和數(shù)據(jù)分析等功能。
通過對比分析了集中空間降水插值方法后本文選擇了距離反比加權(quán)插值法(IDW)進行分析,發(fā)布為 GP服務(wù),然后本系統(tǒng)借助 JavaScript實現(xiàn)了GP服務(wù)的調(diào)用進而實現(xiàn)對阜新市降水?dāng)?shù)據(jù)的 IDW分析。
通過該分析我們可以直觀清楚的看出,阜新地區(qū)降雨活動的分布情況,由于是采用年降雨量數(shù)據(jù)進行的分析,因此分析結(jié)果具備一定的規(guī)律性,從分析結(jié)果可以看出,顏色越深的地方年降雨量越大,說明這些地方的降雨活動頻繁,在汛期,需要加強對這些地區(qū)水利設(shè)施的維護與建設(shè),積極采取措施應(yīng)對可能發(fā)生的洪澇災(zāi)害,以此實現(xiàn)資源的合理平衡分配。