郭曉彤,王 華,吳希文,柏 俊,戴 泉
(1.廣東工業(yè)大學(xué) 土木與交通工程學(xué)院,廣東 廣州510006;2. 廣州海川信息科技有限公司,廣東 廣州510300)
近年來,空間對(duì)地觀測(cè)技術(shù)在監(jiān)測(cè)地表形變中得到了廣泛應(yīng)用。全球定位系統(tǒng)(Global Positioning System,GPS)和合成孔徑干涉雷達(dá)(Synthetic Aperture Radar Interferometry,InSAR)測(cè)量技術(shù)能獲取高精度、高分辨率的微小地表形變量。目前長(zhǎng)基線高精度GPS相對(duì)定位精度為1 0-8~10-9,InSAR技術(shù)的精度達(dá)到厘米甚至毫米級(jí),空間分辨率達(dá)到米級(jí)。隨著對(duì)地表形變監(jiān)測(cè)的不斷加強(qiáng),監(jiān)測(cè)區(qū)域不斷增多,GPS/InSAR技術(shù)形變監(jiān)測(cè)成果的數(shù)據(jù)種類多并且數(shù)據(jù)量大,導(dǎo)致對(duì)其管理難度增大。
與傳統(tǒng)的GIS相比,網(wǎng)絡(luò)地理信息技術(shù)(WebGIS)具有訪問范圍廣、跨平臺(tái)、成本低、高效、實(shí)時(shí)更新等特點(diǎn)[1]。通過互聯(lián)網(wǎng)技術(shù),對(duì)數(shù)據(jù)進(jìn)行可視化可實(shí)現(xiàn)成果直觀表達(dá)、實(shí)時(shí)監(jiān)測(cè)管理和共享,促使WebGIS被廣泛應(yīng)用于農(nóng)業(yè)[2]、森林、氣象[3]、濕地[4]、交通管制監(jiān)測(cè)等城市規(guī)劃領(lǐng)域。例如,張勝等[5]實(shí)現(xiàn)了基于.NET技術(shù)的WebGIS應(yīng)用,Liu與Xi[6]利用Ajax(Asynchronous Javascript and XML,異步 JavaScript和XML)技術(shù)和OpenLayers框架實(shí)現(xiàn)了GIS客戶端在地圖頁面上瀏覽無刷新,周海彬等[7]提出了基于WebGIS的數(shù)字城市規(guī)劃模型,袁長(zhǎng)征等[8]利用SQL Server數(shù)據(jù)庫和OpenLayers框架實(shí)現(xiàn)了空間數(shù)據(jù)存儲(chǔ)、分析與可視化;OpenLayers由于具有開發(fā)成本低、可集成管理空間數(shù)據(jù)與屬性數(shù)據(jù)、可進(jìn)行數(shù)據(jù)可視化表達(dá)等特點(diǎn),被廣泛應(yīng)用于實(shí)現(xiàn)GIS的網(wǎng)絡(luò)化應(yīng)用,達(dá)到實(shí)時(shí)共享數(shù)據(jù)資料的效果。本文主要介紹利用ASP.NET和OpenLayers框架在線展示和管理GPS/InSAR形變監(jiān)測(cè)成果。
OpenLayers框架是一個(gè)輕量級(jí)的JavaScript開源庫,在基于WebGIS的二次開發(fā)中廣泛應(yīng)用;支持多種格式的數(shù)據(jù)資源和地圖服務(wù)的訪問,如支持天地圖、公開地圖(OpenStreetMap,OSM)等在線地圖以及由地圖服務(wù)器(GeoServer)發(fā)布的倉(cāng)庫管理系統(tǒng)(Warehouse Management System,WMS)、Web要素服務(wù)(Web Feature Service,WFS)等地圖服務(wù)[9],被廣大研究者用來研發(fā)有關(guān)地理信息的地圖操作。
OpenLayers封裝了各種地圖操作的控件,不僅支持在線地圖的加載、縮放、鷹眼等常規(guī)操作,還能實(shí)現(xiàn)圖層疊加、切換、要素渲染、添加、移除等功能。在一定程度上,簡(jiǎn)化了WebGIS的客戶端開發(fā)[10],突破了傳統(tǒng)GIS的應(yīng)用與研究,使得地理信息系統(tǒng)的實(shí)現(xiàn)與維護(hù)逐步走向網(wǎng)絡(luò)化、數(shù)據(jù)化。
ASP.NET是一種基于.NET Framework的Web應(yīng)用開發(fā)技術(shù);它集成了多種強(qiáng)類型編程語言共同開發(fā)、統(tǒng)一編程的執(zhí)行環(huán)境,例如C#、VB.NET等[11],不僅保留了ASP以前版本的特點(diǎn),還借鑒Java、VB等語言開發(fā)的優(yōu)勢(shì)引入了許多新特性,為動(dòng)態(tài)Web開發(fā)提供了強(qiáng)大的類庫資源,有效縮短了Web應(yīng)用程序開發(fā)的周期[12],使得基于WebGIS的形變監(jiān)測(cè)成果在線展示系統(tǒng)的開發(fā)更加便捷和高效[4]。
本系統(tǒng)以GPS野外測(cè)量處理成果以及遙感衛(wèi)星InSAR數(shù)據(jù)分析處理成果的圖形化展示[13]為目標(biāo),以關(guān)系數(shù)據(jù)庫管理系統(tǒng)(本系統(tǒng)應(yīng)用了SQL Server數(shù)據(jù)庫)、地理數(shù)據(jù)結(jié)構(gòu)化編碼語言(Geospatial Data Interchange Format Based on JavaScript Object Notaion,Geo JSON)文件、Keyhole標(biāo)記語言(Keyhole Markup Language,KML)文件為數(shù)據(jù)源,Ajax技術(shù)為網(wǎng)頁數(shù)據(jù)交互方式,建立一套完整的形變監(jiān)測(cè)成果數(shù)據(jù)展示體系,系統(tǒng)的整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)整體架構(gòu)Fig.1 System architecture
基于WebGIS框架的二次開發(fā),本系統(tǒng)主要調(diào)用OpenLayers地圖控件的接口如表1所示[14]。系統(tǒng)的業(yè)務(wù)流程主要分為數(shù)據(jù)文件讀取、圖形對(duì)象坐標(biāo)處理、圖形要素在線展示3個(gè)步驟。
表1 OpenLayers部分控件及實(shí)現(xiàn)功能Table 1 Some controls of Open Layers and their implementation parameters
本系統(tǒng)利用了Ajax進(jìn)行頁面與Web服務(wù)器的數(shù)據(jù)異步傳輸,通過ADO.NET的方式訪問數(shù)據(jù)庫獲取數(shù)據(jù),實(shí)現(xiàn)了網(wǎng)頁的局部更新,提高了數(shù)據(jù)維護(hù)的效率。GPS野外測(cè)量的成果為測(cè)站坐標(biāo)(B,L,H)及其形變速度(Ve,Vn,Vu)。為此,數(shù)據(jù)庫中對(duì)應(yīng)存儲(chǔ)了測(cè)站坐標(biāo)、形變速度及其屬性信息,只需根據(jù)數(shù)據(jù)表結(jié)構(gòu)獲取數(shù)據(jù)即可。
InSAR數(shù)據(jù)處理的成果分為頭文件(RSC格式),研究地區(qū)的沉降量、沉降累積量、沉降增量等數(shù)據(jù)文件(DAT格式)以及解纏圖等圖像文件,為此,數(shù)據(jù)庫中存儲(chǔ)了文件相對(duì)路徑及其屬性信息。其中,頭文件是對(duì)數(shù)據(jù)文件的描述,利用頭文件中的描述信息,調(diào)用BinaryReader類可以讀取數(shù)據(jù)文件里n行m列的數(shù)據(jù)點(diǎn)沉降量。圖像數(shù)據(jù)包括KML文件和PNG圖片,利用XDocument類便可讀取KML文件中用于展示PNG圖像的范圍經(jīng)緯度。
在創(chuàng)建并初始化地圖對(duì)象時(shí),一般指定EPSG∶4326(WGS84)坐標(biāo)系,該格式是由開放地理空間信息聯(lián)盟(Open Geospatial Consortium,OGC)定義的,因而本系統(tǒng)主要通過二維坐標(biāo)(B,L)來展示幾何要素。由于GPS的速度(Ve,Vn,Vu)測(cè)量成果單位為mm/a,因此為了在系統(tǒng)中展示速度數(shù)據(jù),需要根據(jù)圖例標(biāo)量、該點(diǎn)速度和起點(diǎn)坐標(biāo)(測(cè)站點(diǎn)位置)利用高斯投影坐標(biāo)反算原理計(jì)算出大地坐標(biāo)下的增量及起始點(diǎn)坐標(biāo),繪制并展示有向線段,才能實(shí)現(xiàn)速度數(shù)據(jù)可視化。
InSAR測(cè)量成果的每個(gè)數(shù)據(jù)點(diǎn)坐標(biāo)需要根據(jù)頭文件里的起點(diǎn)坐標(biāo)(Bfirst,Lfirst)、行數(shù)n、列數(shù)m以及步長(zhǎng)Bstep,Lstep進(jìn)行計(jì)算得到。
隨著WebGIS技術(shù)的快速發(fā)展,通過瀏覽器展示地理數(shù)據(jù)的方式日益多元化,本文采用了ASP.NET和OpenLayers進(jìn)行系統(tǒng)開發(fā),實(shí)現(xiàn)了跨瀏覽器快速展示地圖要素。
GPS成果主要以點(diǎn)要素(地理位置)和線要素(形變速度)展示[13],若以測(cè)站點(diǎn)展示,則根據(jù)其測(cè)站模式進(jìn)行點(diǎn)位和點(diǎn)名的標(biāo)注;若以形變速度展示,則繪制有向線段進(jìn)行速度的展示。
InSAR成果主要以點(diǎn)云(地理位置、沉降量)或者圖像方式展示;若以點(diǎn)云展示,則根據(jù)其沉降量進(jìn)行要素渲染,以不同顏色的實(shí)心圓表示每個(gè)沉降點(diǎn),并根據(jù)地圖分辨率和屏幕范圍分級(jí)展示點(diǎn)云,從而實(shí)現(xiàn)了監(jiān)測(cè)數(shù)據(jù)的可視化[15]。InSAR的圖像分為解纏圖、速率圖等,若以圖像方式展示,則主要通過解析KML文件獲取該圖像的范圍經(jīng)緯度,在地圖上添加圖像的方式展示。
基于上述的系統(tǒng)設(shè)計(jì)方案,采用ASP.NET和OpenLayers框架進(jìn)行系統(tǒng)的數(shù)據(jù)讀取、坐標(biāo)轉(zhuǎn)換、成果在線展示等功能的實(shí)現(xiàn),下文展示系統(tǒng)的部分關(guān)鍵代碼。
(1)讀取DAT文件中的InSAR數(shù)據(jù)。
FileStream fs = new FileStream(File_binary,
FileMode.Open, FileAccess.Read);
fs.Seek(0,SeekOrigin.Begin);
BinaryReader r = new BinaryReader(fs);
float num = r.ReadSingle();
(2)獲取監(jiān)測(cè)數(shù)據(jù),并計(jì)算用于展示GPS速度的有向線段的起始點(diǎn)坐標(biāo)以及InSAR沉降點(diǎn)的坐標(biāo)。
(1)在線地圖加載:在WebGIS系統(tǒng)的客戶端開發(fā)時(shí),主要利用OpenLayers的Map類、Layer類[3,11]加載BingMap、GoogleTerrainMap和天地圖3種在線地圖作為底圖。
(2)數(shù)據(jù)渲染與在線展示:條件檢索后,利用OpenLayers進(jìn)行Json格式數(shù)據(jù)渲染和在線展示。條件檢索分為GPS和InSAR兩個(gè)模塊的監(jiān)測(cè)成果查詢,用戶可根據(jù)其屬性(項(xiàng)目、省份等)或者地理位置進(jìn)行查詢[10]。
①GPS監(jiān)測(cè)成果的展示:GPS測(cè)量成果的坐標(biāo)點(diǎn)(B,L)通過點(diǎn)位標(biāo)注展示,以藍(lán)色實(shí)心圓表示連續(xù)站,紅色方塊表示流動(dòng)站,如圖2(a)所示;其形變監(jiān)測(cè)的速度成果利用有向線段進(jìn)行展示,如圖2(b)所示。圖2~4底圖均來源于天地圖(https://map.tianditu.gov.cn)。
圖2 GPS查詢結(jié)果Fig.2 GPS query results
注冊(cè)地圖的單擊事件,實(shí)現(xiàn)在單擊后,獲取地圖的地理坐標(biāo)并與已有查詢結(jié)果的測(cè)站點(diǎn)的坐標(biāo)進(jìn)行逐一對(duì)比,若兩坐標(biāo)之差小于某閾值(如0.01°),則展示匹配測(cè)站點(diǎn)的屬性信息,如時(shí)間序列圖、坐落位置等,如圖2(c)所示。
②InSAR監(jiān)測(cè)成果的展示:InSAR成果主要以點(diǎn)云、圖像或者時(shí)間序列圖展示。查詢成功后,在地圖上展示滿足條件的成果數(shù)據(jù)的區(qū)域范圍,如圖3(a)所示;點(diǎn)擊某區(qū)域范圍,可以查看該地區(qū)的沉降情況;若查看點(diǎn)云形式展示的成果數(shù)據(jù),需要對(duì)沉降點(diǎn)數(shù)據(jù)進(jìn)行渲染。首先,定義彩虹漸變顏色數(shù)組并獲取圖例中InSAR顏色條對(duì)應(yīng)的沉降量極值;其次,進(jìn)行空值過濾并利用沉降量最大值和最小值計(jì)算每個(gè)數(shù)據(jù)點(diǎn)對(duì)應(yīng)的顏色數(shù)組下標(biāo);最后,為每個(gè)數(shù)據(jù)點(diǎn)賦顏色值,展示結(jié)果如圖3(b)所示。
時(shí)間序列圖是反映某沉降點(diǎn)在其測(cè)量時(shí)段內(nèi)的沉降變化,通常以監(jiān)測(cè)時(shí)間為橫坐標(biāo),沉降累積量或增量為縱坐標(biāo)繪制時(shí)間序列圖。點(diǎn)擊地圖上的沉降點(diǎn),可以進(jìn)行該沉降點(diǎn)的動(dòng)態(tài)時(shí)間序列圖的查看,如圖3(c)所示,圖中藍(lán)線代表沉降累積量,橙線代表沉降增量;若以KML形式展示,則設(shè)置展示樣式為KML形式,圖3(d)為云南監(jiān)測(cè)區(qū)域的解纏圖。
考慮到InSAR成果在以點(diǎn)云形式展示時(shí),涉及的數(shù)據(jù)量十分龐大,可能會(huì)導(dǎo)致頁面的響應(yīng)遲緩甚至崩潰,因此采用依比例分級(jí)展示點(diǎn)云數(shù)據(jù)的方式進(jìn)行。將點(diǎn)云數(shù)據(jù)分為十級(jí)加載,通過設(shè)置地圖監(jiān)聽,根據(jù)地圖的當(dāng)前分辨率和屏幕范圍獲取對(duì)應(yīng)的點(diǎn)云數(shù)據(jù)進(jìn)行展示。經(jīng)過實(shí)驗(yàn)驗(yàn)證,分級(jí)加載展示數(shù)據(jù)的方式大大縮短了點(diǎn)云展示的時(shí)間,降低了頁面卡頓的可能。如圖3(b)為地圖Map中視圖View的地圖縮放級(jí)別Zoom值介于10~11范圍時(shí)的點(diǎn)云展示;每當(dāng)分辨率和屏幕范圍發(fā)生變化,都會(huì)進(jìn)行點(diǎn)云刷新,如圖3(c)為Zoom值介于13~14范圍的展示結(jié)果。
圖3 InSAR查詢結(jié)果Fig.3 InSAR query results
系統(tǒng)的其他功能包括登陸驗(yàn)證、數(shù)據(jù)編輯、文件導(dǎo)入、數(shù)據(jù)下載等。管理員進(jìn)行登陸驗(yàn)證后,可以查看、編輯和管理數(shù)據(jù)庫內(nèi)的監(jiān)測(cè)數(shù)據(jù),實(shí)現(xiàn)對(duì)監(jiān)測(cè)成果的實(shí)時(shí)更新與共享;系統(tǒng)支持GeoJSON和KML數(shù)據(jù)文件的導(dǎo)入和展示,只要把監(jiān)測(cè)成果數(shù)據(jù)轉(zhuǎn)換為GeoJSON或KML格式并導(dǎo)入地圖中展示,便可以快速進(jìn)行粗差剔除和檢驗(yàn)監(jiān)測(cè)成果的質(zhì)量,圖4為形變監(jiān)測(cè)成果數(shù)據(jù)以KML形式存儲(chǔ)的文件導(dǎo)入在線地圖后的展示結(jié)果,可以清晰看到中國(guó)區(qū)域范圍內(nèi)的斷層情況。
圖4 KML文件在線導(dǎo)入展示Fig.4 The KML file is imported and displayed online
本文介紹了一種基于WebGIS框架的GPS/InSAR形變監(jiān)測(cè)成果在線管理與展示系統(tǒng),使得用戶可以方便地在瀏覽器上查看、管理監(jiān)測(cè)數(shù)據(jù)。系統(tǒng)的開發(fā)中用到的OpenLayers框架、JQuery、Ajax等技術(shù)使得系統(tǒng)的構(gòu)建結(jié)構(gòu)更清晰,擴(kuò)展性更強(qiáng);開發(fā)中,針對(duì)InSAR大數(shù)據(jù)的展示,采用了依比例分級(jí)展示點(diǎn)云數(shù)據(jù)的方法;針對(duì)GPS變形速度的展示,利用高斯反算原理等方法;確保了成果展示的高效性,為類似于基于開源WebGIS應(yīng)用的地圖服務(wù)平臺(tái)開發(fā)提供了參考和借鑒。
總的來說,本系統(tǒng)的開發(fā)與實(shí)現(xiàn)基本完成,實(shí)現(xiàn)了變形監(jiān)測(cè)成果的有效管理,通過網(wǎng)絡(luò)技術(shù)將數(shù)據(jù)圖形化的展示途徑,使得數(shù)據(jù)更加直觀,提高了對(duì)形變監(jiān)測(cè)成果的檢驗(yàn)、管理的效率;系統(tǒng)在投入運(yùn)營(yíng)前還可以進(jìn)一步的性能優(yōu)化,例如,對(duì)于大型圖像處理和展示優(yōu)化,可以采用金字塔-哈希索引技術(shù)[16]和瓦片切分[17]的方法進(jìn)行圖像處理;對(duì)于多用戶并發(fā)請(qǐng)求的優(yōu)化,可以采用集群和多線程方法提高并發(fā)訪問的效率、緩存和動(dòng)態(tài)數(shù)據(jù)管理方法提高客戶端交互性能[16];后續(xù)研究中將進(jìn)一步分析提高系統(tǒng)性能的方法。