?

基于ArcGIS Engine的自動智能圖幅接邊算法與實現

2014-02-19 03:49
地理空間信息 2014年6期
關鍵詞:圖幅邊界線邊線

穆 凱

(1.新疆維吾爾自治區第二測繪院, 新疆 烏魯木齊830000)

測繪領域目前常用的圖幅接邊編輯軟件有Geoway、AutoCAD、MapGIS、ArcDIS、Coredraw等,這些軟件在自動接邊時存在的問題有:不提供接邊檢查、無屬性項接邊、接邊生硬、直角房屋接邊角度變形、獨立面要素接邊與相鄰面產生面裂隙、大數據量接邊計算緩慢等[1-3]。人工接邊則存在接邊精度無法保證、屬性項接邊檢查工作量大、容易出現遺漏等問題[4]。本文結合上述常見的接邊問題,按照人機交互的接邊方式,先檢查再接邊,保留檢查結果,闡述錯誤原因,并能定位錯誤位置,保證接邊準確性。設計智能算法確保大數據量接邊速度,做到線接邊自然過渡、面接邊角度無變化、無縫接邊。設計了多種接邊方案,最終實現操作者使用該程序能最大程度地提高工作效率、節約生產成本、保證產品質量。

1 常用的編輯軟件接邊方法

1.1 ArcGIS自動接邊

ArcGIS中利用Spatial Adjustment里的edge match實現自動接邊。設置接邊緩沖區,對接邊要素采用樣條法進行平滑??梢赃x擇一個目標點由多個源點連接來保證面要素接邊時不產生面裂隙,但ArcGIS接邊工具中沒有提供接邊檢查,屬性接邊后無法保持原要素的角度,接邊方式采用主圖附圖各改一半的方式,接邊后有些地方還得靠手工接邊。

1.2 MapGIS接邊

MapGIS提供了一個“接邊處理”的模塊,可以根據參數設置的方式進行接邊范圍及容差設置,只支持單層接邊,線面接邊要分開,接邊效果生硬不自然,接邊結果為兩圖各改一半,無接邊檢查,無屬性檢查。

1.3 Geoway接邊

Geoway 軟件中專門設計了接邊工程,設計了接邊邊線確認功能來保證接邊的準確性,可以設置接邊緩沖區,提供了3種接邊方案來應對與已成圖接邊時所產生的問題。在線接邊過程中采用5點遞減的偏移方式進行自然過渡處理,保證接邊不生硬??梢圆捎每蜻x、點選要素的方式進行自動接邊。但是在Geoway軟件中沒有提供直接構面概念,其中的面要素都是通過線要素構面的方式進行的,所以對線要素接邊后要進行重構面的處理。此外Geoway中也沒有提供接邊檢查,以及屬性項接邊的功能,接邊后面形狀有變化。

1.4 AutoCAD、Coredraw接邊

AutoCAD和Coredraw本身并不是專業的GIS軟件,所以在設計中并沒有提供專門的接邊功能,可以通過軟件中自帶的捕捉和屬性查看功能進行人工接邊,接邊費時費力,且容易遺漏,精度不高。

2 智能接邊算法

2.1 設計思路

將整個程序分為接邊檢查與接邊修復2個部分來實現。接邊檢查功能的設計既是對自動接邊功能的一種補充,又是對自動接邊成果的一種檢驗。接邊檢查對因特定原因不能實現自動接邊需要手動接邊的圖幅提供了參考依據[5]。接邊修復分為線要素接邊、面要素接邊和屬性項接邊3種類型,修復側重各有不同,如圖1所示。

2.2 接邊邊界線的提取

邊界的確定直接影響到接邊的最終成果,它具有唯一性、準確性的特點。下文中各種算法的實現都是以邊界線的提取為前提的。

首先通過圖號計算出主圖圖廓四角的大地坐標,然后通過高斯反算計算出投影坐標,為了確保圖廓精度,采用人機互動的方式對圖廓坐標予以顯示,并可以進行人工校正,再利用主圖與副圖的圖號判斷它們之間的空間位置關系,確定相鄰邊界線并將其保存為Geometry的數據形式,便于空間分析使用。

2.3 接邊檢查算法

圖1 接邊設計流程圖

按點查詢按要素修改的接邊方式,判斷這些在邊界上的點是否在限差范圍內,可以通過判斷是否存在與其相同類型的鄰圖點就可以。如果鄰圖不存在對應接邊點則為空間幾何位置不接邊。在接邊檢查中先提取主圖與副圖邊界線上的點,縮小比較范圍,來提高運算效率。具體方法如下:

對已提取的邊界線Geometry建立緩沖極小的緩沖區,分別對主圖和副圖作緩沖區分析,提取每幅圖中與邊界線上存在的點并將其分別保存至數據庫臨時表中。

IGeometry geometry = topologicalOperator.Buffer(distance);//對邊界線建立緩沖區

IRelationalOperator relationalOperator = geometry as IRelationalOperator;//將緩沖區放入關系容器中

if (relationalOperator.Contains(pointCollection.get_Point(i)))//提取邊線上的點

再對主圖邊界線上的點逐一建立緩沖區,緩沖區范圍為接邊限差的最大距離。逐一與副圖邊界線上的點作比較,如果緩沖區范圍內不存在副圖中的要素和邊界線的交點,則證明該點所在位置的對應幾何體與副圖存在幾何位置不接邊的情況,用紅色邊框對該點所在位置進行標注,并記錄錯誤信息。通過axMapControl1.CenterAt方法可以實現雙擊錯誤信息局部放大錯誤位置的效果。如果緩沖區范圍內存在副圖點,則查詢其屬性信息是否與主圖屬性一致,如不一致用藍色邊框標出,并記錄具體錯誤原因,如圖2所示。

圖2 錯誤記錄及錯誤標注

這種接邊檢查算法可能在面屬性檢查時出現誤判,將無公共邊但存在公共點的一對面進行比較,而對角相鄰的面實際上屬性是可以不一致的。因此要在屬性比較前判斷2個面是否存在公共邊,再進行屬性比較,如圖3所示。

圖3 蘆葦不會與相鄰的密集進行屬性比較

2.4 線要素接邊算法

幾何位置接邊主要分線接邊和面接邊2種,每種方式都有其所側重的方向。線接邊首先通過接邊檢查后查找出有錯誤的點所對應的幾何體,判斷幾何形狀是線的幾何體,對該點作緩沖區查找,找出其可移動限差范圍內的最近的一個屬性相同的線形幾何體與其進行接邊。接邊算法是將2條線在圖廓線上對應點移動至同一位置實現接邊,但這種算法所實現的接邊效果過渡不自然,因此要加入一定的智能算法對角度變化較大的線進行擬合。首先判斷接邊前后的線在節點移動后角度變化是否超過30°,如果超過30°則對其進行擬合,如圖4所示。

提取與線要素邊線上的點相鄰的連續4個點進行擬合處理(如不足4點則注記遞減),主要的擬合算法有樣條法和逐漸遞減的方法。測試對5點進行2次樣條法擬合和3次樣條法擬合后發現,在對一些特殊的線段擬合后會超出移動限差位移,所以最終選用逐級遞減方式進行擬合過渡。以下為算法的實現過程(usep1為邊界上點的序號,如果usp1為終點,下式中usp1后改為減號,mdx1 、mdy1為邊界上點坐標位移):

newp12.PutCoords(p1c.get_Point(usep1 + 1).X - (mdx1/ 5 * 4), p1c.get_Point(usep1 + 1).Y - (mdy1 / 5 * 4));

newp13.PutCoords(p1c.get_Point(usep1 + 2).X - (mdx1/ 5 * 3), p1c.get_Point(usep1 + 2).Y - (mdy1 / 5 * 3));

圖4 有過渡的自然接邊與沒有過渡的生硬接邊比較

newp14.PutCoords(p1c.get_Point(usep1 + 3).X - (mdx1/ 5 * 2), p1c.get_Point(usep1 + 3).Y - (mdy1 / 5 * 2));

newp15.PutCoords(p1c.get_Point(usep1 + 4).X - (mdx1/ 5 * 1), p1c.get_Point(usep1 + 4).Y - (mdy1 / 5 * 1));

2.5 面要素接邊算法

面要素接邊主要側重于解決接邊后面形狀變形、接邊后產生面裂隙和部分面不到邊界線這3類問題。其余接邊算法與線要素接邊相似,都是將2個不同要素邊線上對應的一對點移動至同一位置。

接邊后,面要素形狀變形的原因是在邊界線上點位移后所產生的角度變化。因此只要對邊線上的點和與之相鄰且不在邊線上的點同時做平行移動,就不會發生角度變化。通過判斷與需要移動的點、相鄰序號的點和邊界線的關系判斷面要素點集的單調性,從而確定需要作平行移動的點[6]。

圖5 1點的相鄰點是2和8,2也在邊線上對1和8點進行平行移動

在確定需作同時平行移動的點后(圖5中8號點)對兩點同時作平行移動達到接邊后面要素形狀不變的效果。接邊后產生面裂隙的原因是,在對2個面要素因接邊發現位移后,與其有公共邊的相鄰面沒有同時發生對應位移從而產生了面裂隙[7]。采用對移動節點作緩沖區分析的方法提取與之對應的面要素,并提取對應的點進行映射移動,如圖6所示。

通常一個由4條邊構成的面在被裁切后會與切割線有2個交點,比較復雜的面會有偶數個交點,當出現奇數個節點時,就有可能會是在作業過程中產生的失誤而導致的有一端點不在邊界線上。除此之外,也會有偶數個節點,但在特殊情況下也存在部分面不到邊界線的情況。針對此情況,通過逐一判斷與面要素所有在邊界線上的點相鄰序號的左右2個節點來判斷它們是否在邊界線上,如果都不在邊界上,則選擇移動限差內離邊線距離最近的一個節點,將其移動至邊界上。

圖6 無縫接邊

3 結 語

經過實際應用檢驗發現,智能接邊算法可有效節省系統內存資源,快速進行圖幅要素的接邊檢查,實現數字地圖的快速接邊,解決了一般接邊算法存在的接邊生硬、接邊后形狀變化和接邊后存在的面裂隙等問題。而且具有簡單、實用、運行效率高等特點,特別是在數據量比較大的情況下效果尤其明顯。但是這種算法在對結構過于復雜的面進行接邊時,暫時還存在一些遺漏,今后將進一步完善。

[1]趙江洪.GIS中多圖幅自動接邊的實現方法探討[J].測繪通報,2006(2):50-52

[2]孫麗娜,李吉之,陳靜.基于AO的同比例尺地形圖無縫接邊技術及其實現方法[J].測繪工程,2007(6):49-53

[3]王永哲,金永寶,劉烜.基于ArcGIS Engine 9.2的圖幅自動接邊算法的實現[J].安徽農業科學,2008(34):15 263-15 265

[4]戴相喜,周衛,高磊.DLG數據任意范圍接邊算法及實現[J].測繪通報,2008(7):32-35

[5]趙江洪.地理信息系統中多圖幅接邊的設計與實現[J].測繪科學,2004(1):45-46,6

[6]曹麗娟.基于ArcObjects的多圖幅自動接邊研究與實現[J].軟件導刊,2010(9):49-51

[7]韓志遠.基于ArcObjects的城市基礎地理信息系統的設計與實現[J].大眾科技,2010 (12):31-32

猜你喜歡
圖幅邊界線邊線
海岸水邊線提取方法在GF-2衛星影像中的適應性研究
弟弟尿床了
基于ArcEngine自動生成1∶5萬地形圖標準分幅圖框
“邊界線”風波
“邊界線”風波
神奇的邊界線:一不留神就出國
基于Arcpy的地形圖接圖表快速生成方法
認識足球(六)
突破矩形上邊線買入法(1)
基于EXCEL的地形圖圖幅號轉換查詢方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合