黃會(huì)平,韓宇平,張俊峰
(華北水利水電大學(xué),河南 鄭州450045)
多幅等高線接邊是GIS 地圖數(shù)據(jù)處理過(guò)程中經(jīng)常會(huì)遇到的一項(xiàng)工作. 傳統(tǒng)的拼接需要在軟件中手工接邊,工作量大且由于數(shù)據(jù)的精度問(wèn)題,相鄰圖幅上的等高線常常不能夠很好地吻合. 一些GIS 軟件中帶有圖幅接邊的模塊,如ArcGIS 中的Edge-Match.但是,在現(xiàn)實(shí)的數(shù)據(jù)處理過(guò)程中,這些模塊的功能還不能滿足要求.首先,使用這些接邊模塊時(shí)仍然需要較多的人工干預(yù),比較繁瑣;其次,大多數(shù)接邊模塊進(jìn)行接邊處理時(shí)僅考慮相鄰圖幅上地理要素的幾何關(guān)系,而沒有充分利用屬性信息,這在某些情況下進(jìn)行等高線的接邊,容易造成邏輯錯(cuò)誤.
當(dāng)前,國(guó)內(nèi)已有學(xué)者提出了圖幅接邊問(wèn)題的解決方案.如鄧小軍等詳細(xì)分析了等高線的圖幅接邊問(wèn)題,對(duì)各種相鄰圖幅等高線接邊誤差的形式做了分類[1-4],具有一定的代表性.筆者提出了一種兼顧幾何關(guān)系和屬性特征的等高線圖幅自動(dòng)接邊算法,并利用ArcGIS Engine(AE)組件所提供的空間操作功能,在Microsoft Visual Studio 2010 環(huán)境下,實(shí)現(xiàn)了這一算法.
由于比例尺大小、成圖紙張大小、圖紙的形變、繪圖誤差、數(shù)字化誤差和分幅數(shù)字化等因素的影響,在相鄰兩幅等高線圖中,位于接邊附近的等高線在幾何位置上不能很好地吻合,且由于各種人為因素,原本是一條連續(xù)的等高線也會(huì)被分為多段,在數(shù)據(jù)庫(kù)中被分成不同的對(duì)象進(jìn)行存儲(chǔ)[5]. 主要表現(xiàn)為錯(cuò)位、數(shù)據(jù)不完整、重復(fù)、變形等.
接邊處附近的某一等高線,理論上應(yīng)與鄰接圖幅上對(duì)應(yīng)的等高線是一條等高線,是完全吻合在一起的,即這兩條等高線的端點(diǎn)坐標(biāo)中有兩個(gè)點(diǎn)的坐標(biāo)是相同的[6](首首相同、末末相同或首末相同).但在實(shí)際工作中,由于各種原因,分布在不同圖幅的同一等高線之間存在縫隙,如圖1所示.
圖1 拼接時(shí)同一等高線中存在縫隙
根據(jù)等高線是閉合曲線的原理,將多幅等高線合并成一幅等高線圖時(shí),等高線在接邊處應(yīng)與其對(duì)應(yīng)等高線合并成一個(gè)對(duì)象,從而構(gòu)成一條閉合曲線.但由于分幅數(shù)字化的原因,會(huì)出現(xiàn)等高線沒有延伸到另一側(cè)或者接邊線另一側(cè)多出了不必要的線段等,如圖2所示.需要對(duì)重復(fù)或缺失的等高線刪除或者補(bǔ)充完整.
圖2 等高線重復(fù)或者缺失
對(duì)應(yīng)等高線在接邊處表面上表現(xiàn)為一條完全閉合的等高線,但實(shí)質(zhì)卻是多條等高線,這種現(xiàn)象往往具有欺騙性.因?yàn)樵诖蛴〕鰣D和視覺上不會(huì)發(fā)現(xiàn)問(wèn)題,但是要用于構(gòu)建DEM 或TIN,或者用于拓?fù)浞治鰰r(shí),就會(huì)出現(xiàn)意想不到的問(wèn)題.
參與接邊的圖幅應(yīng)該具有相同的地圖數(shù)學(xué)基礎(chǔ),包括相同的比例尺、坐標(biāo)系統(tǒng)和高程基準(zhǔn)[7]. 屬性數(shù)據(jù)必須正確.該算法設(shè)計(jì)的思路是按等高線的屬性信息作為約束條件判斷兩條是否是同一條等高線,所以在接邊前,必須保證每條等高線被正確賦以高程值.
2.2.1 確定參與接邊的對(duì)象
在進(jìn)行等高線拼接時(shí),所處理的對(duì)象主要為位于圖幅邊界并在理論上延伸至相鄰圖幅的線段,在接邊之前,必須要確定參與接邊的要素[8]. 該設(shè)計(jì)的思路為:讀入需要拼接的矢量要素圖層,用戶根據(jù)需要拼接圖幅等高線的實(shí)際分布情況給定一個(gè)閾值d,以這個(gè)閾值d 為大小,求取邊界線兩側(cè)的矩形緩沖區(qū),和緩沖區(qū)相交的等高線參與下一步的接邊,否則不參與下一步的操作,從而加快了處理速度.選擇一個(gè)圖幅為主圖幅(通常為左圖幅或上圖幅),其中的要素為主要素,選擇一其他圖幅為副圖幅,其中的要素為副要素.
2.2.2 確定接邊的各種情況
1)圖幅接邊方向和線段方向. 參與接邊兩條線段并不知道在哪個(gè)圖幅中,程序執(zhí)行中必須進(jìn)行判斷,判斷的方法是:取每條等高線的中點(diǎn)(X,Y),若一圖幅所有等高線的X 值均大于或小于另一圖幅,則為左右接邊;若一圖幅所有等高線的Y 值均大于或小于另一圖幅,則為上下接邊.
在接邊時(shí)還必須考慮參與接邊的兩線段的方向[9-10].對(duì)參與接邊的兩線段的方向一般有首末—首末、首末—末首、末首—末首和末首—首末4 種情況.
2)接邊等高線的空間形狀.接邊時(shí)兩幅圖中等高線從形態(tài)上可分為兩類:圓環(huán)接邊和普通接邊.由于矢量化的誤差,在分幅等高線接邊時(shí),一圖幅中的等高線會(huì)超越邊界進(jìn)入另一圖幅,造成等高線過(guò)頭,如圖3和圖4所示. 接邊時(shí)必須將過(guò)頭的點(diǎn)從線中刪除(即回撤一個(gè)點(diǎn),若仍然過(guò)頭,則繼續(xù)回撤,直到端點(diǎn)回到等高線所在的圖幅),然后調(diào)整兩線段使其方向一致.
圖4 普通接邊存在的情況
經(jīng)過(guò)處理后將兩個(gè)點(diǎn)集添加到新的點(diǎn)集中,生成新的直線,完成兩線段的合并處理,其利用Arc-GIS Engine 在Microsoft Visual Studio 2010 環(huán)境中的處理流程如圖5所示.
圖5 兩線合并的處理流程
等高線經(jīng)一系列處理(圖層合并、順序調(diào)整、參與要素選擇等)得到接邊要素,并經(jīng)過(guò)2.2.1 節(jié)和2.2.2 節(jié)處理以后,選中需要接邊的等高線集,采用振蕩法進(jìn)行遍歷,選定一條等高線,若在距離r 內(nèi)沒有與之屬性相等的等高線,增加距離為,直至找到和它屬性相等的等高線并標(biāo)記;若在距離r 內(nèi)有兩條屬性值相等的等高線(不是圓環(huán)而是如山脊線、山谷線等普通接邊的情況)則距離變?yōu)椋敝琳业胶退鼘傩韵嗟鹊牡雀呔€并標(biāo)記;若在距離r 內(nèi)恰好有一條屬性值相等的等高線,則直接標(biāo)記.
找到唯一等高線后,需要分3 種情況進(jìn)行考慮:若兩條等高線端點(diǎn)距離d 大于給定閾值r2,則兩條等高線不處理;若兩條等高線端點(diǎn)之間的距離r1<d <r2時(shí),則分別把兩條等高線的端點(diǎn)連接到邊界線上兩個(gè)端點(diǎn)之間的中點(diǎn);若兩條等高線端點(diǎn)距離小于給定閾值r1,則采用強(qiáng)制法把副要素的端點(diǎn)拖到主要素端點(diǎn)上實(shí)現(xiàn)端點(diǎn)吻合,進(jìn)一步實(shí)現(xiàn)兩線的合并.其流程如圖6所示.
圖6 智能接邊流程圖
“貌合神離”現(xiàn)象的產(chǎn)生,可能是在矢量化的過(guò)程中由于一條等高線過(guò)長(zhǎng),為了方便矢量化,人為地將同一條等高線劃分成N 段,它們從視覺角度看是一條封閉的等高線,實(shí)際上是多條線段組成一條,在構(gòu)建拓?fù)鋾r(shí)會(huì)出現(xiàn)錯(cuò)誤.
該程序處理此現(xiàn)象時(shí),根據(jù)線段的高程值相等進(jìn)行處理,通過(guò)AE 的屬性過(guò)濾器(IQueryFilter)和空間過(guò)濾器(ISpatialFilter)得到高程值相等的所有線段,然后根據(jù)ITopologicalOperator2 的Union 實(shí)現(xiàn)等高線的合并[11].
在等高線接邊過(guò)程中,若兩條屬性相等的等高線兩個(gè)端點(diǎn)之間的距離大于給定的閾值r2,說(shuō)明數(shù)字化過(guò)程中存在的不是誤差而是錯(cuò)誤,需要根據(jù)原有的地形圖把缺失部分的等高線補(bǔ)充完整,若沒有原始地形圖,則可根據(jù)等高線走勢(shì)做插值處理,然后再手工或重新執(zhí)行前面的自動(dòng)拼接處理.
該程序在接邊實(shí)現(xiàn)時(shí)采用強(qiáng)制法和平均法實(shí)現(xiàn)兩相鄰圖幅的等高線拼接處理,在等高線比較密集的區(qū)域會(huì)產(chǎn)生相鄰等高線交叉的情況,拼接后要對(duì)整個(gè)圖幅的線狀要素做拓?fù)錂z查,檢查出等高線相交的要素并人工加以處理.
針對(duì)目前GIS 軟件在等高線接邊處理方面的不足,以ArcGIS Engine 和Microsoft Visual Studio 2010為開發(fā)平臺(tái),進(jìn)行了等高線智能接邊的研究,完善了GIS 軟件在接邊時(shí)僅考慮幾何關(guān)系的不足,綜合考慮幾何關(guān)系和屬性值,初步實(shí)現(xiàn)了對(duì)大量等高線接邊的快速處理,提高了工作效率,并提供交互式的操作界面,避免了大比例尺地圖直接進(jìn)行接邊所產(chǎn)生的未知錯(cuò)誤,提高了接邊的準(zhǔn)確性.
[1]鄧小軍,鄭小梅.基于AO 的分幅等高線智能化接邊處理方法的研究[J].四川測(cè)繪,2004,27(2):77-81.
[2]趙相偉,孫翠羽,艾波,等.基于索引圖的大比例尺圖幅自動(dòng)接邊方法研究[J].測(cè)繪信息與工程,2007,32(4):34-36.
[3]金江峰.基于MAPGIS 的河南省土地境界接邊管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 科學(xué)技術(shù)與工程,2009,9(2):391-394.
[4]周順平,張江東,左澤均,等.線要素任意范圍接邊算法的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪科學(xué),2012,37(9):20-26.
[5]趙江洪.GIS 中多圖幅自動(dòng)接邊的方法探討[J].測(cè)繪通報(bào),2006(2):50-52.
[6]劉慶元,周容.一種基于ArcGIS Engine 的線狀圖幅接邊方法[J].計(jì)算機(jī)時(shí)代,2008(2):4-6.
[7]曹麗娟.基于ArcObjects 的多圖幅自動(dòng)接邊研究與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2010(9):49-51.
[8]龔健雅,杜道生,李清泉,等. 當(dāng)代地理信息技術(shù)[M].北京:科學(xué)出版社,2006.
[9]李智廣. 基于GIS 的土壤侵蝕數(shù)字圖接邊方法研究[J].水土保持通報(bào),2001,21(4):41-43.
[10]孫麗娜,李吉之,陳靜. 基于AO 的同比例尺地形圖無(wú)縫接邊技術(shù)及其實(shí)現(xiàn)方法[J].測(cè)繪工程,2007(6):49-53.
[11]蔣波. ArcObjects 開發(fā)基礎(chǔ)與技巧[M]. 武漢:武漢大學(xué)出版社,2006.