摘 要:【目的】為解決地籍?dāng)?shù)據(jù)建庫過程中出現(xiàn)宗地要素重疊的問題,提高地籍空間數(shù)據(jù)的質(zhì)量,保證數(shù)據(jù)的拓?fù)淇臻g一致性,設(shè)計出一種提取重疊宗地要素的自動化檢查工具?!痉椒ā扛鶕?jù)空間拓?fù)潢P(guān)系九交模型對要素間的重疊類型進(jìn)行識別,在AutoCAD平臺上借助AutoCAD.NET的布爾運(yùn)算機(jī)制實(shí)現(xiàn)要素重疊的自動提取?!窘Y(jié)果】自動化檢查工具實(shí)現(xiàn)了地籍空間數(shù)據(jù)中各宗地要素之間的重疊檢查,可直接對數(shù)據(jù)進(jìn)行處理,生成定位重疊多變形的DWG文件?!窘Y(jié)論】基于AutoCAD.NET開發(fā)的自動化檢查工具能夠準(zhǔn)確地檢查出存在重疊的多邊形,避免了人工檢查工作量大且容易出錯的缺點(diǎn),提高了地籍空間數(shù)據(jù)的質(zhì)量和成圖效率。
關(guān)鍵詞:地籍空間數(shù)據(jù);多邊形;AutoCAD.NET;重疊;拓?fù)?/p>
中圖分類號:P271" " " 文獻(xiàn)標(biāo)志碼:A" " "文章編號:1003-5168(2024)14-0015-04
DOI:10.19968/j.cnki.hnkj.1003-5168.2024.14.003
Research on Algorithm for Checking Overlap of Land Elements in
Cadastral Database Based on AutoCAD.NET
Abstract: [Purposes] This paper aims to solve the problem of overlapping land elements in the process of building cadastral data databases, improve the quality of cadastral spatial data, and ensure the topological spatial consistency of the data. [Methods] This paper identifies the overlap types between features based on the nine intersection model of spatial topological relationships and uses AutoCAD on the AutoCAD platform NET's Boolean operation mechanism to achieve automatic extraction of element overlap." [Findings] The automated inspection tool has achieved overlap checking between various land elements in cadastral spatial data, which can directly process the data and generate DWG files with multiple deformations and positioning overlaps. [Conclusions] Based on AutoCAD The automated inspection tool developed by NET can accurately detect overlapping polygons, avoiding the drawbacks of heavy workload and error-prone manual inspection, and improving the quality and mapping efficiency of cadastral spatial data.
Keywords: cadastral spatial data; polygon; Auto CAD. NET; overlap; topology
0 引言
我國于2007年7月1日啟動第二次全國土地調(diào)查,并于2010年開始全國農(nóng)村集體土地確權(quán)登記發(fā)證工作。就集體土地所有權(quán)、集體建設(shè)用地使用權(quán)、宅基地使用權(quán)展開調(diào)查,依據(jù)《土地利用現(xiàn)狀分類》《城鎮(zhèn)地籍調(diào)查規(guī)程》等相關(guān)技術(shù)規(guī)定和標(biāo)準(zhǔn),充分利用全國土地調(diào)查的現(xiàn)有成果,形成完善的土地利用數(shù)據(jù)庫和地籍信息系統(tǒng)。
地籍?dāng)?shù)據(jù)庫是現(xiàn)代地籍的生命所在,而地籍?dāng)?shù)據(jù)庫的人工交互存在編輯時間長、難以保證空間數(shù)據(jù)一致性等問題[1]。目前,地籍空間數(shù)據(jù)主要以AutoCAD的DWG格式為主[2]。CAD數(shù)據(jù)模型具有強(qiáng)大的繪圖功能和矢量圖形處理能力,但是,由于在實(shí)際內(nèi)業(yè)成圖工作和權(quán)屬調(diào)查中存在不一致等原因,會導(dǎo)致相鄰宗地之間存在相互重疊等問題。這種情況在現(xiàn)實(shí)中是不允許的[3],不僅會造成地籍圖的數(shù)據(jù)質(zhì)量低下,而且在建立地籍?dāng)?shù)據(jù)庫時,存在這種情況的地籍圖是不允許入庫的。因此,本研究基于AutoCAD.NET的AutoCAD二次開發(fā),采用C#語言設(shè)計出可以檢查多邊形重疊的拓?fù)錂z查工具,精確地提取出每一個重疊的多邊形,避免人工檢查時容易出錯、遺漏等問題,同時提高了數(shù)據(jù)處理的效率和成圖質(zhì)量。
1 AutoCAD.NETAPI
1.1 NET API概述
從AutoCAD 2006開始,Autodesk為其二次開發(fā)增加了.NET API。其提供了一系列托管的外包類(Managed Wrapper Class),使開發(fā)人員可在.NET 框架下,使用任何支持.NET 的語言,如 VB.NET、C#等對AutoCAD進(jìn)行二次開發(fā)。這種開發(fā)方式的優(yōu)點(diǎn)是完全面向?qū)ο?,在具有ObjectARX強(qiáng)大功能的同時還具有VBA使用方便、易用的優(yōu)點(diǎn),并且AutoCAD.NET API比傳統(tǒng)的Lisp語言編程方法更優(yōu)越,是較為理想的 AutoCAD二次開發(fā)工具[4-5]。
1.2 NET下的AutoCAD對象層次
對象是AutoCAD.NET API的主要構(gòu)成成分,每個公開的對象都準(zhǔn)確地代表AutoCAD的一個部件[6]。所有對象以AutoCAD的Application對象為根對象。Document對象實(shí)際上就是一個AutoCAD圖形,提供了訪問與Document對象相關(guān)聯(lián)的Database對象的功能。Database指的就是當(dāng)前圖形的數(shù)據(jù)庫對象。 當(dāng)打開一個DWG圖形文件時,Database圖形數(shù)據(jù)庫會自動創(chuàng)建至少九個符號表:塊表、層表、符號樣式表、線型表、視圖表、UCS表、視口表、注冊應(yīng)用程序表、標(biāo)注樣式表[7]。而我們所要檢查的多邊形就位于塊表的模型空間記錄中。
2 重疊多邊形的識別方法分析
在地籍圖中,由于外業(yè)調(diào)查測量誤差與內(nèi)業(yè)成圖的不一致性,會導(dǎo)致相鄰宗地之間存在重疊或重復(fù)繪制等問題。根據(jù)空間拓?fù)潢P(guān)系九交模型,兩面要素之間存在的關(guān)系為:相離、相接、相交、相等、包含。宗地房屋多邊形的重疊可以分為兩種情況如圖1所示。①部分重疊:即相交拓?fù)潢P(guān)系,兩個多邊形的面域部分存在交集。②完全重疊:包含相等、包含兩種拓?fù)潢P(guān)系,兩多邊形完全一致或者一個多邊形包含另一個多邊形。這兩種情況在繪制宗地圖和建立地籍空間數(shù)據(jù)庫都是不允許存在的。
針對以上的兩種情況可以通過對兩宗地對應(yīng)的多邊形進(jìn)行布爾運(yùn)算來判斷二者交集所形成的面積是否大于0。若大于0,則說明這兩個多邊形所對應(yīng)的宗地重疊,反之,則說明兩多邊形對應(yīng)的宗地不重疊。AutoCAD.NET API的Autodesk.AutoCAD.DatabaseServices命名空間中Region類的BooleanOperation提供了進(jìn)行布爾運(yùn)算的方法,通過布爾運(yùn)算后得到的面域Area屬性可以判斷兩多邊形是否存在重疊。本研究即是采用此算法。
通過計算兩條多段線相交之后形成的邊界線來判斷兩多邊形是否重疊。其基本原理是:①計算兩條多段線的交點(diǎn)[8-9]。②以交點(diǎn)數(shù)組為分隔點(diǎn),通過使用Autodesk.AutoCAD.DatabaseServices命名空間中的Polyline類的GetSplitCurves方法獲得多段線分段后的結(jié)果。③根據(jù)得到的分段線段確定哪些分段線段屬于邊界線[10]。④刪除不屬于邊界線的分段線段,即得到兩條多段線的邊界線。⑤賦予屬于邊界線的分段線段顏色為藍(lán)色。通過以上步驟就可以根據(jù)兩條多段線是否存在邊界線來確定二者是否重疊并提取多邊形的重疊部分。但是,該算法不能檢測出圖1(b)中所示的完全包含的情況。該算法的流程如圖2所示。
3 算法設(shè)計
3.1 獲取多邊形對象的ObjectId
每當(dāng)打開一個DWG圖形文件時,系統(tǒng)會為每個對象賦予一個ObjectId,每個對象的ObjectId在本次任務(wù)中都是獨(dú)一無二的,所以通常利用每個對象的ObjectId對其進(jìn)行訪問。在地籍圖中,所要處理的宗地房屋線均位于圖形數(shù)據(jù)庫中的JMD圖層中,因此必須通過構(gòu)建過濾器來提取位于JMD圖層中多段線的ObjectId。在AutoCAD.NET API中可以通過Autodesk.AutoCAD.EditorInput命名空間的SelectionFilter類來實(shí)現(xiàn)。步驟如下:
//創(chuàng)建一個TypedValue數(shù)組來定義過濾器條件
TypedValue[] acTypValAr = new TypedValue[2];
acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, “多段線”), 0);
acTypValAr.SetValue(new TypedValue((int)DxfCode.LayerName, “JMD圖層”), 1);
//將過濾器條件賦值給SelectionFilter對象
SelectionFilter acSelFtr = new SelectionFilter(acTypValAr);
3.2 提取閉合多段線
在地籍圖中要求每一條宗地房屋線都必須是閉合多段線,因此,需要從獲取到的多邊形對象的ObjectId中篩選出閉合的多段線,并改變未閉合的多段線的顏色以作區(qū)分。在.NET API中可以通過訪問多段線的Closed屬性來提取閉合多段線。
3.3 多段線重疊判斷
從閉合的多段線中獲得當(dāng)前的兩條多段線,判斷二者是否重疊,若重疊,則改變重疊的宗地線的顏色為藍(lán)色。按此方法依次遍歷當(dāng)前圖形數(shù)據(jù)庫中的所有宗地,直至所有宗地完成檢查。值得注意的是由于地籍圖中的宗地線在AutoCAD中屬于三維多段線,所以在形成面域的時候必須注意個別面域?yàn)榭盏默F(xiàn)象。程序的設(shè)計流程如圖3所示。
4 實(shí)例分析
本實(shí)例結(jié)合某農(nóng)村宅基地確權(quán)項(xiàng)目的實(shí)測數(shù)據(jù),對設(shè)計的重疊檢查程序進(jìn)行檢驗(yàn),結(jié)果發(fā)現(xiàn)該方法可以準(zhǔn)確地發(fā)現(xiàn)重疊的多邊形,尤其是能夠提取出部分隱蔽在圖形數(shù)據(jù)庫中需要人工在AutoCAD圖形窗口界面放大才能發(fā)現(xiàn)的重疊多邊形。程序檢查效果示意如圖4所示。
5 結(jié)語
本研究主要介紹了在AutoCAD.NET API的基礎(chǔ)上對AutoCAD進(jìn)行二次開發(fā)的方法,并對其發(fā)展情況和框架層次結(jié)構(gòu)進(jìn)行了簡要的闡述。在.NET環(huán)境下實(shí)現(xiàn)地籍空間數(shù)據(jù)中各宗地之間重疊的自動提取,避免了人工檢查時容易出錯、遺漏等問題,同時提高了數(shù)據(jù)處理的效率和成圖質(zhì)量。上述程序同樣能夠?qū)崿F(xiàn)地籍空間數(shù)據(jù)中各宗地所屬權(quán)屬線之間的重疊檢查,可直接對數(shù)據(jù)進(jìn)行處理,生成定位重疊多邊形的DWG文件,便于工作人員快速檢查和修改。
參考文獻(xiàn):
[1]周曉光.基于拓?fù)潢P(guān)系的地籍?dāng)?shù)據(jù)庫增量更新方法研究[J].測繪學(xué)報,2005(34):372.
[2]韓江峰,鄧敏,徐楓,等.CAD宗地數(shù)據(jù)向Geodatabase自動轉(zhuǎn)換方法研究[J].測繪通報,2009(9):58-61.
[3]馮杭建,麻土華,劉偉宏,等.地籍空間數(shù)據(jù)庫拓?fù)潢P(guān)系分析及基于規(guī)則的驗(yàn)證方法[J].計算機(jī)應(yīng)用,2006(10):2522-2524.
[4]王永輝,胡青泥,李紅彩.AutoCAD二次開發(fā)方法的研究 [J].計算機(jī)系統(tǒng)應(yīng)用,2007(3):94-96,100.
[5]晁彩霞,魏永樂.AutoCAD 二次開發(fā)工具探討[J].機(jī)械,2008,35(S1):35-37,70.
[6]李冠億.深入淺出AutoCAD.NET二次開發(fā)[M] .北京:中國建筑工業(yè)出版社,2012.
[7]曾洪飛.AUTOCAD VBAamp;VB.NET開發(fā)基礎(chǔ)與實(shí)例教程[M].北京:中國電力出版社,2013.
[8]趙軍,劉榮珍.用最小回路求兩個簡單多邊形的交、并、差集[J].計算機(jī)應(yīng)用,2012,32(11):3164-3167.
[9]朱愛軍,鄧安福,魏艷軍,等.以節(jié)點(diǎn)操作確定兩任意實(shí)心多邊形交集的方法[J].重慶大學(xué)學(xué)報(自然科學(xué)版),2004,27(12):56-59.
[10]齊東洲,吳敏.高效的多邊形布爾計算方法[J].計算機(jī)應(yīng)用,2014,34(S2):78-82.