代德成,普運偉,張 勇
(1. 昆明理工大學 國土資源工程學院,云南 昆明 650093;2. 昆明理工大學計算中心,云南 昆明 650093)
降雨是人類生產生活中常見的天氣現象,其對于人類以及地球上的所有生物來說是獲取生命必須的水資源的必要途徑,人們的生產活動也離不開降雨的作用。降雨還對自然環境以及人類的生存環境存在著較大的潛在危害,如帶來泥石流、洪澇等災害等,也正因為如此,一直以來,降雨的監測、預報和統計,不僅是氣象學的重要研究領域,同時也是水文水資源學者所關注的重大研究課題[1]。
隨著社會經濟快速發展及科學技術水平的不斷提高,國家社會各項生產生活實踐對于實時降水信息的需求不斷增加,降水信息的共享水平以及水利信息化水平也需逐漸提高。由于GIS的空間分析等相關特性,決定了其在國民經濟建設的各個領域都有著越來越廣的應用,當然在水文水利方面也有著廣泛的應用,特別是在防洪抗旱工作中發揮著重要作用。
阜新市地處遼西北地區,屬于季風區,降雨主要體現在夏天的6、7、8月,由于農田豐富所以對水資源的需求非常迫切。通過建立阜新降水信息系統,及時準確的獲取阜新地區的降水數據并對其進行分析,獲取阜新地區降水情況的基本具體規律以便提供準確的決策信息,為進一步采取措施管理和合理利用阜新水資源提供幫助。
GIS系統的發展經歷了幾個不同的發展階段,這些發展階段體現在其應用體系結構上表現為:以主機(mainframe computer)為中心的GIS系統技術應用體系結構;基于桌面PC機為核心的GIS系統技術應用體系結構以及支持Internet/Intranet網絡技術標準的分布式GIS系統技術應用體系結構[2]。
WebGIS即網絡地理信息系統,從組成機構上WebGIS系統可以分為動態WebGIS和主動WebGIS[3]。
WebGIS由于其結構性質,有以下特點:
(1)廣泛的覆蓋范圍
(2)不依賴平臺
(3)系統成本較低
(4)操作簡便
(5)合理高效的計算負載配置
(6)廣闊的應用擴展空間
目前,WebGIS有三種實現方式,包括服務器端方式、客戶端方式以及混合方式。WebGIS的實現技術大致有:通用網關接口法(CGI)、應用程序插入法(Plugin)、Java編程語言實現、ActiveX和部件對象模型(COM)等方法[4]。
關于數據的空間插值的方法有許多,且插值方法的分類方法也有多種,其中一種為將插值法歸為整體插值法和局部插值法[5]。
整體插值法包括趨勢面法,多元回歸法。
局部插值法主要有泰森多邊形法反距離加權法(IDW),克里金插值法,樣條法。
ArcGIS Server是基于服務器的功能十分強大的GIS產品,通常用于構建集中管理的、支持多用戶的、具備高級GIS功能的企業級GIS應用與服務,ArcGIS Server提供廣泛的基于Web的GIS服務,以支持在分布式環境下實現地理數據管理、制圖、地理處理、空間分析、編輯和其它的GIS功能。ArcGIS Server由Web瀏覽器、GIS服務器、Web服務器、桌面產品四部分組成。
目前有三種ArcGIS Server服務發布方式。第一種是在 ArcCatalog中發布地圖服務;第二種是在ArcMap中直接發布地圖服務;第三種是在ArcGIS Server Manager中發布地圖服務。本文使用的地圖服務為切片類型的地圖服務,切片地圖服務即緩存第服務,這種服務方式能使地圖服務快速有效的運行,其思想是預先創建了地圖副本,后期加載的時候能夠直接讀取。一般地圖服務的發布過程如下。
(1)首先在 ArcMap中打開地圖數據,對數據進行必要的處理,如融合處理、地圖糾正等。
(2) 在文件菜單下共享為服務中選擇服務選項。
(3)選擇將要發布的服務器名稱,填寫服務名稱。
(4)在服務編輯器中對服務進行設置選擇切片服務,如圖1所示。

圖1 服務編輯界面Fig.1 Service editing interface
(5)先進行分析,分析成功后進行預覽,然后再選擇發布。
(6)接下來登陸 Manager中看到如下登陸界面。
(7) 瀏覽器查看已經發布的服務,如圖2所示。

圖2 瀏覽服務界面Fig.2 Browse the service interface
(1)Visual Studio Code介紹
Visual Studio Code(簡稱VS Code/VSC)是一款免費開源的輕量 IDE,或者也可稱其為現代化的代碼編輯器,幾乎所有的主流開發語言的基礎功能都支持,它還支持插件擴展,而且擁有較為完整的豐富的插件系統。
(2)PostgreSQL數據庫簡介
PostgreSQL是一種對象關系型數據庫管理系統(ORDBMS),PostgreSQL 相對于它的競爭者的優勢在于其強大的可編程性。
(3)ArcGIS Desktop簡介
ArcGIS for Desktop 是AcrGIS產品系列的桌面軟件產品,為GIS專業的學者和工作人員提供信息制作和使用的工具。利用這個工具,我們可以實現許多從簡單到復雜的GIS任務。
(4)Beego框架簡介
Beego框架是由謝孟軍基于 GO語言編寫的一個開源框架,其思路來自于tornado,路由設計來源于 sinatra。Beego的設計理念主要為模塊化、分離和組合。
(5)Go語言
Go語言是Google于2009年發布的第二款開源的編程語言。Go語言本身就支持并發、有著強大的工具、豐富的標準庫及擁有C語言的基因,具備極強的表達能力,此外其還可跨平臺編譯。
(6)ArcGIS for JavaScript API
ArcGIS for JavaScript API是 ESRI根據JavaScript技術實現的調用ArcGIS Server REST API接口的一組腳本[8]。
目前阜新市建有完備的降雨量測量站點體系,這些站點會在降雨活動后自動將本站所測雨量數據上傳至數據庫中,以備查詢與研究。普通的農民或其他人民群眾需要了解本地區的降水情況以及歷史降水情況總結經驗,合理開展農業生產活動;另外一方面,水利水文相關部門也需要了解阜新地區的降雨情況及時分析判斷評估阜新地區現有水利設施的利用情況或覆蓋情況,以及規劃建設新的水利設施以使人們能最大化的合理利用阜新現有的水資源,為經濟社會發展奠定基礎。
系統由客戶端、Web層、中間層和數據層組成[9]。用戶可以通過瀏覽器實現對 web服務器的訪問,Web服務器又可以通過Web Adaptor實現對GIS服務器的訪問,這樣就可以直接訪問到GIS服務器上的地圖資源。對于屬性數據庫的訪問主要是Web服務器對PostgreSQL數據庫的訪問實現的。

圖3 系統總體框架圖Fig.3 The overall framework of the platform
設計原則。為了充分滿足用戶需求以及建立完善實用的系統,系統設計主要依據系統完備、系統實用、結構合理、產品標準、低成本、低維護量等作為基本建設原則,規劃系統的整體構架。
在數據庫設計階段,需注意以下幾點:提高數據的共享性,要充分利用有限的存儲空間,盡量減少數據的冗余度,在地理信息系統和其他一般信息系統之間建立數據聯系,要充分保證數據的獨立性,使系統適應數據的存儲結構和存儲方式,要按照各項規范來進行數據庫設計[12]。
把具備地理位置屬性的數據和不帶地理位置屬性的數據進行分類,用關系數據庫存儲不帶地理位置屬性的數據。各個雨量監測站的的降雨量信息,使用降雨量屬性表來進行存儲,其結構如表1所示。

表1 降雨量信息字段Tab.1 Rainfall information fields

圖4 系統技術路線圖Fig.4 System technology roadmap
根據需求分析及系統功能設計,本系統前端界面包括用戶登陸注冊及系統主界面都是采用超文本標記語言(HTML)和CSS語言結合的方式進行頁面布局設計,搭建起阜新市降水信息系統的界面,保護自己的權利是應該具備的基本意識,因此本系統說明了版權所有和版本信息。如圖5所示。

圖5 登陸界面Fig.5 Login interface

圖6 系統界面Fig.6 The system interface
本系統根據設計,在地圖操作部分實現了地圖的基本操作,包括地圖的平移、放大、縮小和全圖顯示等功能,采用了簡潔的設計,以求盡量提升用戶的使用體驗。如圖7所示。

圖7 地圖基本操作Fig.7 Map basic operation
根據需求不同本系統的查詢功能分為一般查詢、按月查詢和按年查詢三個部分。一般查詢主要實現查詢當天或歷史某個時間段的降雨量,可以根據站點選擇或輸入以及時期選擇來確定需要選擇的測站的降雨量。系統的查詢的數據來自于數據庫里存儲的降雨量數據,以此實現當數據庫更新時,我們能即時獲取數據,也可以保證系統具備較好的運行速度,鏈接數據庫的關鍵代碼如下:
func init() {
orm.RegisterDataBase("default", "postgres", beego.AppConfig.String("spatialdbconnection"))
orm.SetMaxIdleConns("default", 30)
orm.DefaultTimeLoc = time.UTC
查詢時用戶還可以輸入關鍵字進行測站雨量查詢,用戶可以自己選定日期進行查詢,如圖8、9。
按月查詢即把查詢時間條件調整為按月計算,這樣查詢出統計數據,有助于人們了解某個地方的某個月或某幾個月的降水情況以及規律。

圖8 關鍵字查詢Fig.8 Keyword query

圖9 日期選擇Fig.9 Date selection
按年查詢則是查詢出阜新地區的年降雨量的統計數據,根據統計數據做其它進一步的分析,以得出阜新地區的降雨規律及演變等。
此外,在地圖上還可以對測站進行選擇查詢,并在地圖上高亮顯示,并定位到該測站位置,且還可對其測站屬性信息進行顯示。如圖10。

圖10 高亮定位Fig.10 Highlight positioning
根據需求分析,人們在查詢降雨量的同時還存在著對其他信息有需求的情況,且有關部門也存在發布相關抗洪防汛資訊的需求。因此本系統設計了一個信息發布界面,以此來進行相關信息鏈接及顯示,以滿足人們快捷查詢的需要。比如查詢阜新市天氣情況、洪水預警信息等。
經過需求分析與算法比較,本系統采用IDW插值方法對阜新地區的降水進行插值分析,根據需求分析,我們想要得到阜新地區長時間降雨活動分布情況,以便為水利設施評估及降雨規律研究提供數據支持,因此本系統以阜新地區年降雨量為數據基礎,進行插值分析,最后得到阜新地區年降雨量的等值面圖,如圖11。由圖我們可以看出,阜新地區降雨量分布情況清楚明確,在地區分布上具有一定的規律性,降雨活動在阜新市區周圍、阜蒙縣北部和西部、彰武縣東南部比較頻繁,這些地區降雨量較大,在降雨量較大的地區我們應該對其現有水利設施進行充分的評估判斷。也為阜新防洪抗旱工作提供一定的數據支撐,能夠進行較為精確的統籌工作,為決策提供幫助,實現精確抗洪、災情預測等目標。

圖11 分析結果Fig.11 Shows the results
系統中可以根據某天或某年等時間段來進行降雨量統計顯示,根據這項統計可以清楚的看見降雨活動在整個阜新地區的情況,可以知道降雨量最大最小地區,也可以了解到阜新地區的平均降雨量等信息。如表2為2013年7月8日至2013年7月9日的最大、最小和平均降雨量等信息。

表2 降雨量匯總Tab.2 Summary of rainfall
本文運用 Go語言進行后端編寫,由此構建系統總體結構,其中編譯好的Go語言程序能起到Web服務器的作用。
并借助于ArcGIS for JavaScript實現了地圖的基本操作功能,如地圖放大、縮小、平移等,還實現了查詢顯示和數據分析等功能。
通過對比分析了集中空間降水插值方法后本文選擇了距離反比加權插值法(IDW)進行分析,發布為 GP服務,然后本系統借助 JavaScript實現了GP服務的調用進而實現對阜新市降水數據的 IDW分析。
通過該分析我們可以直觀清楚的看出,阜新地區降雨活動的分布情況,由于是采用年降雨量數據進行的分析,因此分析結果具備一定的規律性,從分析結果可以看出,顏色越深的地方年降雨量越大,說明這些地方的降雨活動頻繁,在汛期,需要加強對這些地區水利設施的維護與建設,積極采取措施應對可能發生的洪澇災害,以此實現資源的合理平衡分配。