葉 凱,蒲 智,林思成
(新疆農(nóng)業(yè)大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,新疆 烏魯木齊 830052)
流域信息是流域研究及流域管理的關(guān)鍵信息,主要包括流域的自然信息和人文信息。自然信息通常指水資源信息、地形地貌等空間信息、生態(tài)環(huán)境信息等。人文信息通常指流域內(nèi)的社會(huì)經(jīng)濟(jì)、河流湖泊的演變歷史等信息[1]。傳統(tǒng)的流域信息源主要以書籍、期刊以及互聯(lián)網(wǎng)作為載體。書籍等紙質(zhì)信息源雖然信息詳盡,但是查詢效率極低。互聯(lián)網(wǎng)雖然能快速獲取信息,但是獲取到的信息多而雜,需要進(jìn)行信息的過濾,影響了流域研究進(jìn)度[2-4]。
隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)、數(shù)據(jù)庫技術(shù)的發(fā)展以及應(yīng)用的不斷深化,WebGIS技術(shù)不斷成熟[5-6]。通過WebGIS技術(shù)實(shí)現(xiàn)流域信息的查詢,不但解決了書籍中信息查詢的煩瑣,而且通過建立流域信息專題數(shù)據(jù)庫也解決了互聯(lián)網(wǎng)搜索信息篩選過程。通過Web瀏覽器在地圖中進(jìn)行流域信息查詢是一種快捷高效的地理信息獲取方式,不但能直觀地展現(xiàn)信息,而且不受平臺(tái)限制,相比傳統(tǒng)的信息獲取方式優(yōu)勢(shì)明顯。
OpenLayers是由MetaCarta公司開發(fā)的,用于作為WebGIS客戶端的JS庫。它可以很容易地在Web頁面中嵌入多種地圖源,包括GoogleMaps、Yahoo、Bing、天地圖等,用戶還可以用簡(jiǎn)單的圖片地圖作為背景,在OpenLayers客戶端進(jìn)行圖層疊加。OpenLayers除了可以在瀏覽器中幫助開發(fā)者實(shí)現(xiàn)地圖瀏覽的基本效果,比如地圖比例尺、鷹眼等常用功能外,還可以進(jìn)行選取面、選取線、要素選擇等不同的操作,甚至可以對(duì)已有的OpenLayers操作和數(shù)據(jù)支持類型進(jìn)行擴(kuò)充,為其添加更多功能[7]。其主要優(yōu)點(diǎn)如下:
(1)完全采用JavaScript開發(fā),二次開發(fā)難度低;
(2)支持標(biāo)準(zhǔn)化和定制的同服務(wù)器進(jìn)行交互的協(xié)議;
(3)可定制用戶界面和功能;
(4)支持瀏覽器內(nèi)置數(shù)據(jù)渲染(采用SVG、VML、Canvas技術(shù)),支持開發(fā)高級(jí)瀏覽器內(nèi)置地圖;
(5)支持多種數(shù)據(jù)源地圖:
①商業(yè)地圖:Google,Bing,Yahoo。
②OGC標(biāo)準(zhǔn)規(guī)范:WMS,WMTS,WFS,WFS-T,GeoRS,GML。
③解析多種數(shù)據(jù)格式的矢量數(shù)據(jù)和元數(shù)據(jù)能力:Atom,ArcXML,GeoJSON,GeoRSS,KML,OSM,SLD,WMTS[8-9]。
OpenLayers為能更好地對(duì)地圖進(jìn)行操作和顯示,將抽象事物具體化為類,OpenLayers的核心類為Map(地圖容器類)、Layer(圖層類)、Source(圖層的數(shù)據(jù)源類)、View(地圖表現(xiàn)相關(guān)的地圖視圖類)。圍繞以上核心類來實(shí)現(xiàn)地圖操作和地圖加載[10]。OpenLayers體系架構(gòu)如圖1所示。
圖1 OpenLayers體系框架
OpenLayers中的渲染功能由渲染器(即renderer相關(guān)類)實(shí)現(xiàn),通過Map類的renderer屬性設(shè)置渲染類型,即分別通過Canvas、DOM、WebGL三大渲染類別下的相關(guān)子類實(shí)現(xiàn)。文本中涉及的地理信息的矢量數(shù)據(jù)渲染,在VectorLayer渲染器中則是通過ol.renderer.Vector和ol.renderer.VectorContext的相關(guān)子類具體實(shí)現(xiàn)各類矢量要素的渲染,即點(diǎn)、線、區(qū)等幾何圖形的渲染[11]。
該項(xiàng)目中需要對(duì)流域內(nèi)的水系進(jìn)行矢量要素的渲染,通過矢量數(shù)據(jù)的在線編輯保存為渲染器類可解析的GeoJSON格式數(shù)據(jù),數(shù)據(jù)源Source使用url+format方式加載矢量數(shù)據(jù),再設(shè)置矢量要素的樣式加載到地圖層上。通過測(cè)試,此方法運(yùn)行效果完全滿足該項(xiàng)目需求[12]。
疊加層,即疊加到地圖上顯示的要素,通過關(guān)聯(lián)自定義的HTML元素,由一個(gè)單一的地圖坐標(biāo)點(diǎn)確定疊加的位置。與控件(Control)類似,但不同的是疊加元素不是固定在屏幕某個(gè)位置的元素,而是通過關(guān)聯(lián)一個(gè)地圖邏輯坐標(biāo)或者通過地圖事件來跟隨地圖的移動(dòng),形成地圖上再浮動(dòng)一層的效果。如該系統(tǒng)中的地圖標(biāo)注、坐標(biāo)查詢、信息的浮動(dòng)顯示等功能都是通過疊加層來實(shí)現(xiàn)。
數(shù)據(jù)是所有系統(tǒng)開發(fā)的基礎(chǔ),是影響系統(tǒng)成功與否的關(guān)鍵因素。通過多種途徑,該系統(tǒng)搜集整理的資料如下:①王世江主編的《中國(guó)新疆河湖全書》[13]中塔里木河流域數(shù)據(jù),2010年中國(guó)水利水電出版社出版。②《中國(guó)河湖大典》編纂委員會(huì)編著的《中國(guó)河湖大典·西北諸河卷》[14]中塔里木內(nèi)流區(qū)數(shù)據(jù),2014年中國(guó)水利水電出版社出版。③長(zhǎng)期以來的野外考察的圖像、文本記錄和實(shí)驗(yàn)所得數(shù)據(jù)。④空間數(shù)據(jù)主要加載在線Google地形圖、Google矢量圖、Google遙感圖、Google交通圖、流域行政區(qū)劃圖、流域區(qū)域矢量圖、流域水系矢量圖。
以上屬性數(shù)據(jù)通過對(duì)書中文本信息的掃描、識(shí)別、校正,錄入SQL Server數(shù)據(jù)庫中。圖片數(shù)據(jù)以文件的形式存儲(chǔ),通過訪問數(shù)據(jù)庫中的圖片地址來調(diào)用數(shù)據(jù)。空間地理數(shù)據(jù)是使用Google公共地圖作為底圖,流域區(qū)域矢量數(shù)據(jù)、水系矢量數(shù)據(jù)通過網(wǎng)絡(luò)在線工具手工繪制圖形,并生成WebGIS可解析的GeoJSON數(shù)據(jù)格式。
流域的基礎(chǔ)信息和空間要素是密不可分的,流域信息包含了流域的自然信息與人文信息,這些信息都是在以空間要素為載體的。文中以流域基礎(chǔ)信息為主線,設(shè)計(jì)了流域基礎(chǔ)信息數(shù)據(jù)庫的組織模式。數(shù)據(jù)庫包括基礎(chǔ)地理要素集、流域?qū)傩詳?shù)據(jù)集,數(shù)據(jù)庫下相關(guān)要素與屬性表見表1。
表1 數(shù)據(jù)庫組織結(jié)構(gòu)
2.2.1 基礎(chǔ)地理要素集
基礎(chǔ)地理要素是流域基礎(chǔ)信息空間化和地圖表達(dá)的基礎(chǔ)[15],如行政區(qū)劃、流域區(qū)劃可抽象為Polygon(區(qū))要素,河網(wǎng)、路線可以抽象為L(zhǎng)ineString(線)要素,湖泊、鄉(xiāng)鎮(zhèn)、山峰等可抽象為Point(點(diǎn))要素。首先確定不同空間地物的要素形態(tài)劃分河流、湖泊等空間單元,在相同的坐標(biāo)系下用不同的要素表示,OpenLayers解析不同矢量要素通過地圖客戶端渲染表達(dá),要素集在地圖上的空間表達(dá)是獲取流域基礎(chǔ)信息的關(guān)鍵一步。
2.2.2 流域?qū)傩詳?shù)據(jù)集
流域?qū)傩詳?shù)據(jù)是地圖空間要素承載的核心信息,將流域基礎(chǔ)信息從三個(gè)視角進(jìn)行提供,包括簡(jiǎn)介、概述、紀(jì)實(shí)。其一,簡(jiǎn)介所提供的信息包括河湖名稱、別名、少數(shù)民族語言稱謂、古名,河湖類型,河湖發(fā)源地,河口,流域所處經(jīng)緯度,干流所經(jīng)行政區(qū)。其二,概述所提供的信息包括天然河湖所在水系,自然環(huán)境,河湖的歷史變遷過程,河流長(zhǎng)度,湖泊面積,河流流域面積,多年平均徑流量、輸沙量等。其三,紀(jì)實(shí)所描述的信息包括河流自源頭到河口所流經(jīng)地段、自然狀況、水利工程、自然資源與社會(huì)經(jīng)濟(jì)概況、與河湖行管的自然景觀與人文景觀。流域的基礎(chǔ)信息通過數(shù)據(jù)庫存儲(chǔ),以圖文結(jié)合的方式通過客戶端的查詢獲取。
系統(tǒng)通過WebGIS技術(shù)實(shí)現(xiàn)空間數(shù)據(jù)的發(fā)布功能,通過集合流域?qū)傩詳?shù)據(jù)與地理數(shù)據(jù)系統(tǒng)實(shí)現(xiàn)圖文一體化操作[16],從地圖上可以查詢地理位置和相關(guān)屬性信息。由于系統(tǒng)數(shù)據(jù)庫采用屬性數(shù)據(jù)庫和空間數(shù)據(jù)文件結(jié)合的形式運(yùn)行,因此實(shí)現(xiàn)系統(tǒng)的圖文一體化操作關(guān)鍵在于屬性數(shù)據(jù)和空間數(shù)據(jù)間的關(guān)聯(lián)設(shè)計(jì)[17-19]。
屬性數(shù)據(jù)庫和空間數(shù)據(jù)各實(shí)體表的主鍵(河流ID或湖泊ID)是各矢量圖形的唯一序號(hào),屬性數(shù)據(jù)的每一條記錄都關(guān)聯(lián)著河流或湖泊的矢量數(shù)據(jù)。屬性數(shù)據(jù)和空間數(shù)據(jù)同一的靜態(tài)ID是屬性數(shù)據(jù)和空間數(shù)據(jù)關(guān)聯(lián)操作的基礎(chǔ),是客戶端對(duì)空間數(shù)據(jù)操作匹配屬性數(shù)據(jù)的唯一依據(jù),系統(tǒng)根據(jù)空間數(shù)據(jù)訪問屬性數(shù)據(jù)流程見圖2。
圖2 訪問屬性數(shù)據(jù)流程
系統(tǒng)總體架構(gòu)采用B/S模式,包括數(shù)據(jù)庫、Web服務(wù)器、瀏覽器。數(shù)據(jù)庫軟件采用MS SQL Server、IIS作為Web服務(wù)器,地圖服務(wù)來源于Google在線地圖服務(wù)。系統(tǒng)開發(fā)遵循MVC設(shè)計(jì)模式,邏輯上系統(tǒng)可分為數(shù)據(jù)層、業(yè)務(wù)邏輯層和表現(xiàn)層,如圖3所示。
目前,系統(tǒng)已經(jīng)實(shí)現(xiàn)了對(duì)流域信息的多方式查詢,可以查詢流域內(nèi)河流信息、湖泊信息、坐標(biāo)、圖片等。同時(shí)系統(tǒng)也具備多方式的查詢,如點(diǎn)選查詢、條件查詢、全局查詢等。點(diǎn)擊菜單欄的“查詢”圖標(biāo)后,可進(jìn)行湖泊查詢、河流查詢、坐標(biāo)查詢、圖片查詢。除查詢功能外,系統(tǒng)可對(duì)Google底圖進(jìn)行隨時(shí)切換,并可進(jìn)行地圖的基本操作,比如放大、縮小、復(fù)位、比例尺、鷹眼等。同時(shí)不同的水系專題圖可以進(jìn)行隨時(shí)切換并疊加各種圖層顯示。在菜單欄還設(shè)計(jì)有圖形編輯功能,能對(duì)點(diǎn)、線、區(qū)等要素進(jìn)行編輯并保存。測(cè)量功能可以在地圖上進(jìn)行長(zhǎng)度和面積的測(cè)量,打印功能可以打印任意地圖區(qū)域,系統(tǒng)右鍵功能可以在地圖中添加興趣點(diǎn)。系統(tǒng)查詢信息效果見圖4。
圖3 系統(tǒng)架構(gòu)
圖4 查詢信息效果
3.2.1 點(diǎn)選查詢
在地圖中加載河流或湖泊的矢量圖層后可以通過對(duì)矢量要素的點(diǎn)選,然后矢量要素高亮顯示并顯示圖片信息,點(diǎn)擊鏈接即可查看相關(guān)河流或者湖泊的水文信息、人文信息等。
3.2.2 條件查詢
通過條件查詢可以定制條件,如河流的所屬地市、所屬水系、河流長(zhǎng)度,以查詢滿足條件的河流,選擇滿足條件的河流后可以在地圖中標(biāo)注河流的源頭。
3.2.3 坐標(biāo)查詢
通過選擇“坐標(biāo)查詢”選框來進(jìn)行坐標(biāo)的查詢,只需用鼠標(biāo)在地圖中點(diǎn)擊即可以O(shè)penLayers的Popup標(biāo)注的形式顯示當(dāng)前查詢的坐標(biāo)。
3.2.4 圖片查詢
圖片點(diǎn)擊“圖片查詢”選框啟動(dòng)查詢圖片功能,地圖上浮動(dòng)查詢框,通過坐標(biāo)的搜索框?qū)α饔騼?nèi)的河流或湖泊的圖片進(jìn)行搜索,并以不同的顏色提示顯示在列表最前,點(diǎn)擊即可獲取圖片信息。
3.2.5 全局搜索
全局搜索功能是通過主頁中的搜索框來實(shí)現(xiàn),此功能適合各種用戶,不管對(duì)流域內(nèi)的水系是否了解都可以通過輸入關(guān)鍵字,點(diǎn)擊搜索按鈕,即可在相應(yīng)的地點(diǎn)以Popup標(biāo)注的形式在搜索地點(diǎn)顯示地點(diǎn)名稱,隨即可進(jìn)行相關(guān)要素的詳細(xì)信息查詢。
文中研究并利用OpenLayers開源JS庫實(shí)現(xiàn)了流域信息庫系統(tǒng),利用Visual Studio作為開發(fā)平臺(tái),結(jié)合HTML、JavaScript、Ajax等技術(shù)實(shí)現(xiàn)了客戶端的開發(fā)。搜集并整理了流域的相關(guān)地理信息,以MS SQL Server作為底層數(shù)據(jù)庫,以Google在線地圖作為系統(tǒng)底圖,實(shí)現(xiàn)了對(duì)流域內(nèi)不同信息的查詢,并實(shí)現(xiàn)了地理信息系統(tǒng)的一些實(shí)用功能。利用OpenLayers開源JS庫能滿足系統(tǒng)所有功能,降低開發(fā)成本,但不能利用數(shù)據(jù)進(jìn)行分析等,需要進(jìn)一步完善。
參考文獻(xiàn):
[1] 蘇安琪.塔里木河流域信息分類及系統(tǒng)設(shè)計(jì)初步[J].干旱區(qū)地理,1997,20(1):65-70.
[2] CLARKE K C.地理信息系統(tǒng)導(dǎo)論[M].北京:清華大學(xué)出版社,2013:21-28.
[3] 謝 麗.民國(guó)時(shí)期和田河流域洛浦墾區(qū)墾荒、撂荒地的空間分布格局—基于歷史資料的信息可視化重建[J].地理學(xué)報(bào),2013,68(2):232-244.
[4] 史 磊,孔云峰,焦中輝.基于GIS的歷史地理數(shù)據(jù)的管理與可視化—以《中國(guó)歷代戶口、田地、田賦統(tǒng)計(jì)》一書為例[J].湘潭師范學(xué)院學(xué)報(bào):社會(huì)科學(xué)版,2008,30(2):77-79.
[5] 曹叢華,王 寧,黃 娟,等.基于WebGIS的海洋觀測(cè)網(wǎng)管理信息系統(tǒng)設(shè)計(jì)與應(yīng)用[J].海洋開發(fā)與管理,2015,32(10):56-58.
[6] CARADONNA G,NOVELLI A,TARANTINO E,et al.A Webgis framework for disseminating processed remotely sensed on land cover transformations[J].Reports on Geodesy and Geoinformatics,2016,100(1):27-38.
[7] 郭明強(qiáng),黃 穎,謝 忠,等.WebGIS之Openlayers全面解析[M].北京:電子工業(yè)出版社,2016.
[8] ZHANG Yuan,LIANG Hong,QIAN Ying,et al.Design and implementation of hazard waste supervision system based on open source WebGIS[J].Advanced Materials Research,2015,1092-1093:1297-1300.
[9] MARYATI S,SHIMADA H,SASAOKA T,et al.GIS database template for environmental management of mining in Indonesia[J].Journal of Geographic Information System,2012,4(1):62-70.
[10] CLOUGH P,TANG Jiayu,HALL M M,et al.Linking archival data to location:a case study at the UK National Archives[J].Aslib Proceedings,2011,63(2-3):127-147.
[11] YUSOFF N M R N,SHAFRI H,MUNIANDY R.An effective road management system using web-based GIS software[J].IOP Conference Series:Earth and Environmental Science,2014,20(1):012025.
[12] 顧振雄.基于Leaflet開源JS類庫的在線圖形編輯[J]. 地理空間信息,2017(3):74-76.
[13] 王世江,張曙明.中國(guó)新疆河湖全書[M].北京:中國(guó)水利水電出版社,2010.
[14] 《中國(guó)河湖大典》編纂委員會(huì).中國(guó)河湖大典·西北諸河卷[M].北京:中國(guó)水利水電出版社,2014.
[15] 李仁杰,傅學(xué)慶,張軍海.非物質(zhì)文化空間數(shù)據(jù)庫與地圖表達(dá)方法—基于蔚縣剪紙的實(shí)證研究[J].人文地理,2014,29(1):20-25.
[16] 張貴軍,陳 銘.WebGIS工程項(xiàng)目開發(fā)實(shí)踐[M].北京:清華大學(xué)出版社,2016:289-230.
[17] 劉玉棟.基于WebGIS的城市地下電力管線管理系統(tǒng)設(shè)計(jì)與開發(fā)[D].杭州:浙江工業(yè)大學(xué),2014.
[18] 杜艷琴,黨宏波,武澤江.基于WebGIS的城鎮(zhèn)基準(zhǔn)地價(jià)查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].地理空間信息,2016,14(9):77-78.
[19] 張建立,李仁杰,傅學(xué)慶,等.古詩詞文本的空間信息解析與可視化分析[J].地球信息科學(xué)學(xué)報(bào),2014,16(6):890-897.