葉 凱,蒲 智,林思成
(新疆農(nóng)業(yè)大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,烏魯木齊 830052)
信息技術(shù)經(jīng)過長期的發(fā)展已趨于成熟,同時(shí)也為流域河湖的研究提供了大量的信息,該類信息包括人文信息、水文信息、空間信息、生態(tài)環(huán)境信息等[1].傳統(tǒng)的信息存儲(chǔ)方式一般采用文本、表格、圖像等形式儲(chǔ)存在各部門的數(shù)據(jù)庫中,不能直觀的展示信息,并且查詢相關(guān)河湖信息極為不便,嚴(yán)重影響了科研工作中的信息獲取效率[2,3].
隨著信息技術(shù)和3S技術(shù)的迅猛發(fā)展,二者相結(jié)合的WebGIS技術(shù)開始逐步成為GIS應(yīng)用的主流,相對于C/S結(jié)構(gòu)而言,WebGIS技術(shù)具有部署方便、使用簡單、對網(wǎng)絡(luò)帶寬要求低的特點(diǎn),極大拓展了GIS的應(yīng)用范疇和服務(wù)領(lǐng)域,相比傳統(tǒng)的GIS應(yīng)用優(yōu)勢明顯[4].
河流湖泊是陸地生態(tài)系統(tǒng)的重要組成部分.本文通過對新疆塔里木河流域九大水系河流湖泊信息的整理與研究,結(jié)合河流湖泊的空間分布特性,開發(fā)了基于WebGIS的塔里木河流域河湖信息系統(tǒng),該系統(tǒng)不僅能夠?qū)雍畔⑦M(jìn)行存儲(chǔ)、管理和維護(hù),而且能通過地圖標(biāo)注,河湖搜索定位,河流湖泊信息查詢顯示等方式,直觀展示新疆塔里木河流域天然河湖的分布特點(diǎn)及水文相關(guān)信息,能為政府、高校、科研單位以及個(gè)人提供快捷高效的河湖信息獲取途徑,能對水資源的科學(xué)管理、生態(tài)環(huán)境的改善、涉水工程的建設(shè)等項(xiàng)目提供基礎(chǔ)信息支持[5].
本文以塔里木河流域?yàn)檠芯繀^(qū)如圖1.該流域?yàn)樗锬九璧刂T河流域的總稱,跨中國、吉爾吉斯斯坦、塔吉克斯坦、巴基斯坦等國,大部分位于中國新疆維吾爾自治區(qū)南部,是中國最大的內(nèi)流區(qū).塔里木河流域幅員遼闊,河湖分布廣泛,流域內(nèi)各水系差異大,多地處崇山峻嶺高寒地帶,甚至無人區(qū),流域內(nèi)河流主要發(fā)源于盆地邊緣的天山南坡、帕米爾高原、喀喇昆侖山、昆侖山及阿爾金山的內(nèi)陸河流,向盆地內(nèi)部流動(dòng),構(gòu)成向心水系,河流的歸宿點(diǎn)是塔里木盆地的低洼部位.流域總面積102萬平方千米,其中中國境內(nèi)91萬平方千米,全區(qū)河川徑流總量412億立方米,其中國外流入水量62億立方千米.流域內(nèi)大于1平方千米的湖泊共有72個(gè)(不包括已干涸的羅布泊)總水域面積約1589平方千米,占全新疆湖泊總面積的31%[6,7].
圖1 塔里木河流域水系圖
基于WebGIS技術(shù)的塔里木河流域河湖信息系統(tǒng)是一個(gè)集地圖操作、河湖信息查詢展示的系統(tǒng),將為個(gè)人或者科研單位等用戶開放,因此必須提供可靠的信息與完善的功能.結(jié)合實(shí)際需求,遵循科學(xué)性、實(shí)用性、開放性等原則開發(fā),系統(tǒng)應(yīng)實(shí)現(xiàn)以下功能:
(1)提供簡潔快速的地圖基本操作功能.包括地圖的縮放、漫游、鷹眼、底圖切換、坐標(biāo)定位、線面量算等功能.
(2)支持矢量數(shù)據(jù)加載,基礎(chǔ)地圖數(shù)據(jù)的疊加以及底圖的切換.
(3)河流湖泊的相關(guān)水文信息、圖片、歷史文獻(xiàn)等信息的展示.
(4)系統(tǒng)支持對河流長度以及湖泊面積的測量功能.
(5)提供河流湖泊的條件查詢、點(diǎn)選查詢等多方式的河湖查詢方式.
(6)提供給用戶圖形編輯、圖形導(dǎo)出、地圖打印等功能.
綜上所述,系統(tǒng)具備以下特征:系統(tǒng)前端地圖界面,通過在地圖中對河湖矢量圖形的操作進(jìn)行與服務(wù)器端和數(shù)據(jù)庫服務(wù)器的信息交互.系統(tǒng)支持常用柵格、矢量地圖的讀取、可視化.系統(tǒng)具備可擴(kuò)展性,可根據(jù)需求分析對系統(tǒng)靈活的進(jìn)行功能擴(kuò)展,增強(qiáng)系統(tǒng)的實(shí)用性.
基于WebGIS技術(shù)的塔里木河流域河湖信息系統(tǒng)是一個(gè)基于B/S架構(gòu)的應(yīng)用系統(tǒng).采用Microsoft SQL Server數(shù)據(jù)庫及文件系統(tǒng)作為數(shù)據(jù)服務(wù)器.空間數(shù)據(jù)主要通過GIS功能對文件進(jìn)行解析顯示.整個(gè)系統(tǒng)采用MVC架構(gòu),客戶端通過Ajax向.NET服務(wù)端發(fā)送數(shù)據(jù)服務(wù)請求,服務(wù)端采用ADO.NET技術(shù)訪問數(shù)據(jù)庫,將數(shù)據(jù)結(jié)果以JSON格式返回到客戶端.客戶端使用開源項(xiàng)目OpenLayers API進(jìn)行開發(fā),實(shí)現(xiàn)相關(guān)地理數(shù)據(jù)的顯示與操作等GIS功能.系統(tǒng)體系架構(gòu)如圖2.
系統(tǒng)開發(fā)環(huán)境搭建可分為兩步執(zhí)行.第一步,從OpenLayers官網(wǎng)獲取OpenLayers的開發(fā)庫,開發(fā)庫包含ol.js和ol.css等文件.其中ol.js(ol-debug.js)是核心開發(fā)庫,集成了OpenLayers的所有功能,debug版為調(diào)試時(shí)使用.ol.css文件為樣式類,包含OpenLayers的所有默認(rèn)樣式信息.第二步,采用.NET體系的MS Visual Studio作為Web應(yīng)用開發(fā)IDE搭建系統(tǒng)框架.
圖2 系統(tǒng)體系架構(gòu)圖
GeoJSON是一種基于JSON對象表示法的可以被JavaScript語言簡單快速解析進(jìn)行交換的輕量級數(shù)據(jù)格式,它能對各種地理數(shù)據(jù)結(jié)構(gòu)進(jìn)行編碼,GeoJSON對象可以表示:Point、LineString、Polygon、Multi-Point、MultiLineString、MultiPolygon和 Geometry-Collection.GeoJSON里的特征包含一個(gè)對象和其特征,特征集合表示一系列特征.本系統(tǒng)通過LineString或者M(jìn)ultiLineString表示河流的基本特征Point表示湖泊特征.通過對不同水系的河流湖泊的矢量圖形進(jìn)行繪制,以文件形式存儲(chǔ)在磁盤中,通過OpenLayers構(gòu)建一個(gè)矢量圖層并設(shè)置河流顯示樣式,通過renderer渲染器數(shù)據(jù)顯示在地圖中.通過編碼GeoJSON屬性為每條河流或湖泊設(shè)置唯一ID值用以對屬性數(shù)據(jù)的訪問.GeoJSON河流表示方法示例如圖3.
圖3 河流矢量圖形繪制及效果圖
根據(jù)系統(tǒng)功能需求,通過對相關(guān)資料的整理以及長期野外考察所得數(shù)據(jù),塔里木河流域河湖信息主要包括塔里木河流域內(nèi)九大水系144條河流湖泊的基礎(chǔ)水文信息、人文信息、地理信息.河流可提取出河源、河口、河長、所屬水系等歷史變遷等關(guān)鍵信息,湖泊可提取湖泊的類型、地理坐標(biāo)、湖面積、歷史水情等關(guān)鍵信息.系統(tǒng)中河流湖泊地形風(fēng)貌的圖片都以文件方式存儲(chǔ).紙質(zhì)資料經(jīng)過掃描、識(shí)別、校對、分類等步驟錄入Microsoft SQL Server數(shù)據(jù)庫中.為了便于管理,數(shù)據(jù)庫中表分為河流和湖泊兩類,每一類又分為三張表用以存儲(chǔ)三種不同類型的數(shù)據(jù),如河流中將數(shù)字類、文本類、多媒體類進(jìn)行分表存儲(chǔ),數(shù)據(jù)庫中表結(jié)構(gòu)如表1.
表1 屬性數(shù)據(jù)表結(jié)構(gòu)(部分)
目前,WebGIS系統(tǒng)已從單一的WebGIS平臺(tái)向多元異構(gòu)方向發(fā)展,越來越多的系統(tǒng)需要在同一系統(tǒng)中加載不同GIS廠商提供的數(shù)據(jù),調(diào)用不同GIS廠商提供的GIS服務(wù),這給WebGIS系統(tǒng)的可擴(kuò)展性提出了極高的要求,而地理信息多以圖形、文本、多媒體數(shù)據(jù)方式展現(xiàn),用戶通過人機(jī)交互對空間信息查詢分析.而目前主流的Openlayers正解決了這一難題.Open-layers是一個(gè)開源的項(xiàng)目,是一個(gè)專為WebGIS客戶端開發(fā)提供的JavaScript類庫包,用于為互聯(lián)網(wǎng)客戶端提供強(qiáng)大的地圖數(shù)據(jù)網(wǎng)絡(luò)訪問功能,具有靈活的擴(kuò)展機(jī)制,提高了開發(fā)效率和靈活性,同時(shí)也保證了空間數(shù)據(jù)的高質(zhì)量展示[8].
OpenLayers在Web中加載矢量地圖一般有兩種方式:一種是直接讀取矢量格式文件,即存儲(chǔ)在磁盤中的GeoJSON、GML、KML等格式的矢量文件;另一種是調(diào)用矢量數(shù)據(jù)服務(wù)接口,通過服務(wù)接口讀取矢量要素,這種方式同樣需要有服務(wù)資源的支持,即需要發(fā)布矢量服務(wù)的GIS服務(wù)器.本系統(tǒng)通過OpenLayers客戶端解析GeoJSON格式的文件來顯示河流的矢量數(shù)據(jù).其數(shù)據(jù)加載原理是將圖層(Layer)與數(shù)據(jù)源(Source)進(jìn)行分離,圖層是渲染地圖數(shù)據(jù)的容器,數(shù)據(jù)源則是GIS數(shù)據(jù)的載體,圖層要與數(shù)據(jù)源匹配設(shè)置.Layer與Source的關(guān)系如圖4.
圖4 OpenLayers加載矢量地圖
通過上圖分析可知,矢量地圖加載到地圖容器的原理為:先通過接口調(diào)用到GeoJSON格式的文本數(shù)據(jù),然后通過ol.format.GeoJSON類的讀寫方法來解析這個(gè)文本數(shù)據(jù),讀取到矢量要素(Features)及其幾何對象(Geometry)等,最后瀏覽器通過Style類設(shè)置的樣式對不同的矢量圖形進(jìn)行渲染,也就是最終在地圖中看到的河流湖泊的矢量要素.
河流湖泊的數(shù)據(jù)涉及兩大類數(shù)據(jù),即地理數(shù)據(jù)和屬性數(shù)據(jù).地理數(shù)據(jù)采用多種Google地圖數(shù)據(jù)作為底圖,上層疊加河流的線矢量數(shù)據(jù)層和湖泊的點(diǎn)矢量數(shù)據(jù)層,并通過河流湖泊ID關(guān)聯(lián)矢量要素.空間數(shù)據(jù)與屬性數(shù)據(jù)通過ID一對一關(guān)聯(lián)實(shí)現(xiàn)通過地圖中空間數(shù)據(jù)查詢同一條河流或者湖泊的屬性數(shù)據(jù).數(shù)據(jù)關(guān)聯(lián)示意圖如圖5.
圖5 數(shù)據(jù)關(guān)聯(lián)示意圖
系統(tǒng)要獲取相關(guān)信息展示給用戶,最簡單的方法時(shí)通過對前端地圖中河流或者湖泊的矢量要素進(jìn)行點(diǎn)擊獲取數(shù)據(jù),這種獲取方式通過OpenLayers提供的ol.interaction.Select類對象選擇河流或者湖泊矢量要素,并高亮顯示,用類方法get()獲取河流湖泊ID,根據(jù)ID值利用Ajax模式請求,即利用jQuery的方法發(fā)送數(shù)據(jù)請求;后臺(tái)由Handler.ashx文件統(tǒng)一處理前臺(tái)發(fā)送的數(shù)據(jù)查詢請求,再調(diào)用封裝的數(shù)據(jù)查詢方法進(jìn)行查詢,將結(jié)果序列化為JSON格式返回.最終結(jié)果先以O(shè)penLayers中的Popup形式彈出河湖名稱與圖片,然后點(diǎn)擊相關(guān)信息后在地圖中展示河湖的詳細(xì)信息.
系統(tǒng)按照總體系統(tǒng)架構(gòu)進(jìn)行,實(shí)現(xiàn)了相關(guān)功能,系統(tǒng)主要功能包括以下部分:
(1)地圖的顯示與操作
系統(tǒng)通過網(wǎng)絡(luò)加載Google地形圖、矢量地圖、遙感影像、交通地圖等地圖數(shù)據(jù),并可以進(jìn)行實(shí)時(shí)切換和縮放實(shí)現(xiàn)不同地圖下的分析研究.可以通過鼠標(biāo)滾輪或者縮放條進(jìn)行控制地圖顯示比例,鼠標(biāo)實(shí)時(shí)坐標(biāo)顯示,以及地圖的漫游功能,可以通過按鈕或者鼠標(biāo)拖拉漫游快速將地圖移動(dòng)至塔里木河流域.系統(tǒng)初始界面如圖6.
圖6 系統(tǒng)初始界面
(2)查詢功能
系統(tǒng)提供了對河流、湖泊、坐標(biāo)、圖片的查詢功能,系統(tǒng)河流條件查詢可以根據(jù)自己的需求進(jìn)行按水系、區(qū)域、河流長度對河流進(jìn)行查詢并加載到表格同時(shí)將河流的源頭在地圖中標(biāo)注出來方便查找河流的詳細(xì)信息.河流湖泊的空間查詢通過對地圖中的河流湖泊矢量要素的點(diǎn)擊即可即可高亮顯示河流的分布并獲取該點(diǎn)的圖片以及河流的屬性信息以及歷史變遷等人文信息.系統(tǒng)的坐標(biāo)查詢通過鼠標(biāo)點(diǎn)擊需要獲取的地點(diǎn)即可在地圖中獲取該地點(diǎn)的經(jīng)緯度.系統(tǒng)涉及的圖片搜索功能主要將要查找的地點(diǎn)的名稱輸入即可將該地點(diǎn)的圖片都特殊標(biāo)記與列表中方便用戶點(diǎn)擊查看.河流信息查詢?nèi)鐖D7.
圖7 查詢功能效果
(3)圖形編輯與測量功能
系統(tǒng)提動(dòng)矢量圖形的編輯功能,包括點(diǎn)、線、面要素的添加刪除和移動(dòng),在地圖中對河流矢量圖形進(jìn)行繪制并生成GeoJSON地理空間信息交換格式,并輸出為文件,可應(yīng)用于其他不同WebGIS平臺(tái),為地理信息的分享提供了便捷.測量功能主要是測量面積與距離,通過在圖層中繪制線與面,對長度和面積進(jìn)行計(jì)算,計(jì)算結(jié)果可以作為參考.測量功能如圖8.
圖8 測量功能效果
(4)統(tǒng)計(jì)與打印功能
系統(tǒng)對塔里木河流域按各水系河流的條數(shù)、流域面積的大小、湖泊的集水面積、湖泊類型進(jìn)行了分類統(tǒng)計(jì)并生成圖表加載到對應(yīng)區(qū)域的地圖中,能對不同流域進(jìn)行簡單的分析.系統(tǒng)支持地圖的打印功能,用戶可以選擇任意縮放級別和任意類型的地圖進(jìn)行打印,為流域內(nèi)地形地貌的解譯提供了良好的支持.系統(tǒng)統(tǒng)計(jì)與打印效果如圖9.
圖9 統(tǒng)計(jì)與打印效果
本系統(tǒng)充分利用了當(dāng)前互聯(lián)網(wǎng)環(huán)境優(yōu)勢,結(jié)合主流的WebGIS等技術(shù),對塔里木河流域的河湖數(shù)據(jù)進(jìn)行科學(xué)的管理,充分展示了新疆塔里木河流域河流湖泊資源的分布以及地理相關(guān)信息,將河湖信息直觀高效的展示給用戶,對塔里木河流域河湖資源的研究與更合理開發(fā)利用具有重要意義.系統(tǒng)具有可擴(kuò)展性,對將來建立全新疆流域河湖信息系統(tǒng)奠定了基礎(chǔ).但是將來還會(huì)遇到很多問題需要解決,隨著河流湖泊的時(shí)空變化,數(shù)據(jù)需要進(jìn)一步的更新,需要建立系統(tǒng)維護(hù)與更新機(jī)制,以及根據(jù)需求變化進(jìn)行功能的擴(kuò)展.
1蘇安琪.塔里木河流域信息分類及系統(tǒng)設(shè)計(jì)初步.干旱區(qū)地理,1997,20(1):65-70.
2張偉杰,張沛露,呂冬梅.基于WebGIS的海洋地理信息共享平臺(tái)設(shè)計(jì)與實(shí)現(xiàn).艦船科學(xué)技術(shù),2016,38(8A):130-132.
3龐麗峰,唐小明,劉鵬舉.基于WebGIS省級林業(yè)信息共享平臺(tái)的研發(fā).西北林學(xué)院學(xué)報(bào),2011,26(2):180-184.
4郭明強(qiáng),黃穎,謝忠,等.WebGIS之OpenLayers全面解析.北京:電子工業(yè)出版社,2016:2-57.
5肖銳,荊長偉,支俊俊,等.浙江省土壤信息共享平臺(tái)的構(gòu)建與實(shí)現(xiàn).科技通報(bào),2013,29(1):19-24.
6王世江.中國新疆河湖全書.北京:中國水利水電出版社,2010:205-356.
7《中國河湖大典》編纂委員會(huì).中國河湖大典·西北諸河卷.北京:中國水利水電出版社,2014:22-121.
8張貴軍,陳銘.WebGIS工程項(xiàng)目開發(fā)實(shí)踐.北京:清華大學(xué)出版社,2016:208-209.