摘 要:【目的】為解決地籍數據建庫過程中出現(xiàn)宗地要素重疊的問題,提高地籍空間數據的質量,保證數據的拓撲空間一致性,設計出一種提取重疊宗地要素的自動化檢查工具?!痉椒ā扛鶕臻g拓撲關系九交模型對要素間的重疊類型進行識別,在AutoCAD平臺上借助AutoCAD.NET的布爾運算機制實現(xiàn)要素重疊的自動提取?!窘Y果】自動化檢查工具實現(xiàn)了地籍空間數據中各宗地要素之間的重疊檢查,可直接對數據進行處理,生成定位重疊多變形的DWG文件。【結論】基于AutoCAD.NET開發(fā)的自動化檢查工具能夠準確地檢查出存在重疊的多邊形,避免了人工檢查工作量大且容易出錯的缺點,提高了地籍空間數據的質量和成圖效率。
關鍵詞:地籍空間數據;多邊形;AutoCAD.NET;重疊;拓撲
中圖分類號:P271" " " 文獻標志碼: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日啟動第二次全國土地調查,并于2010年開始全國農村集體土地確權登記發(fā)證工作。就集體土地所有權、集體建設用地使用權、宅基地使用權展開調查,依據《土地利用現(xiàn)狀分類》《城鎮(zhèn)地籍調查規(guī)程》等相關技術規(guī)定和標準,充分利用全國土地調查的現(xiàn)有成果,形成完善的土地利用數據庫和地籍信息系統(tǒng)。
地籍數據庫是現(xiàn)代地籍的生命所在,而地籍數據庫的人工交互存在編輯時間長、難以保證空間數據一致性等問題[1]。目前,地籍空間數據主要以AutoCAD的DWG格式為主[2]。CAD數據模型具有強大的繪圖功能和矢量圖形處理能力,但是,由于在實際內業(yè)成圖工作和權屬調查中存在不一致等原因,會導致相鄰宗地之間存在相互重疊等問題。這種情況在現(xiàn)實中是不允許的[3],不僅會造成地籍圖的數據質量低下,而且在建立地籍數據庫時,存在這種情況的地籍圖是不允許入庫的。因此,本研究基于AutoCAD.NET的AutoCAD二次開發(fā),采用C#語言設計出可以檢查多邊形重疊的拓撲檢查工具,精確地提取出每一個重疊的多邊形,避免人工檢查時容易出錯、遺漏等問題,同時提高了數據處理的效率和成圖質量。
1 AutoCAD.NETAPI
1.1 NET API概述
從AutoCAD 2006開始,Autodesk為其二次開發(fā)增加了.NET API。其提供了一系列托管的外包類(Managed Wrapper Class),使開發(fā)人員可在.NET 框架下,使用任何支持.NET 的語言,如 VB.NET、C#等對AutoCAD進行二次開發(fā)。這種開發(fā)方式的優(yōu)點是完全面向對象,在具有ObjectARX強大功能的同時還具有VBA使用方便、易用的優(yōu)點,并且AutoCAD.NET API比傳統(tǒng)的Lisp語言編程方法更優(yōu)越,是較為理想的 AutoCAD二次開發(fā)工具[4-5]。
1.2 NET下的AutoCAD對象層次
對象是AutoCAD.NET API的主要構成成分,每個公開的對象都準確地代表AutoCAD的一個部件[6]。所有對象以AutoCAD的Application對象為根對象。Document對象實際上就是一個AutoCAD圖形,提供了訪問與Document對象相關聯(lián)的Database對象的功能。Database指的就是當前圖形的數據庫對象。 當打開一個DWG圖形文件時,Database圖形數據庫會自動創(chuàng)建至少九個符號表:塊表、層表、符號樣式表、線型表、視圖表、UCS表、視口表、注冊應用程序表、標注樣式表[7]。而我們所要檢查的多邊形就位于塊表的模型空間記錄中。
2 重疊多邊形的識別方法分析
在地籍圖中,由于外業(yè)調查測量誤差與內業(yè)成圖的不一致性,會導致相鄰宗地之間存在重疊或重復繪制等問題。根據空間拓撲關系九交模型,兩面要素之間存在的關系為:相離、相接、相交、相等、包含。宗地房屋多邊形的重疊可以分為兩種情況如圖1所示。①部分重疊:即相交拓撲關系,兩個多邊形的面域部分存在交集。②完全重疊:包含相等、包含兩種拓撲關系,兩多邊形完全一致或者一個多邊形包含另一個多邊形。這兩種情況在繪制宗地圖和建立地籍空間數據庫都是不允許存在的。
針對以上的兩種情況可以通過對兩宗地對應的多邊形進行布爾運算來判斷二者交集所形成的面積是否大于0。若大于0,則說明這兩個多邊形所對應的宗地重疊,反之,則說明兩多邊形對應的宗地不重疊。AutoCAD.NET API的Autodesk.AutoCAD.DatabaseServices命名空間中Region類的BooleanOperation提供了進行布爾運算的方法,通過布爾運算后得到的面域Area屬性可以判斷兩多邊形是否存在重疊。本研究即是采用此算法。
通過計算兩條多段線相交之后形成的邊界線來判斷兩多邊形是否重疊。其基本原理是:①計算兩條多段線的交點[8-9]。②以交點數組為分隔點,通過使用Autodesk.AutoCAD.DatabaseServices命名空間中的Polyline類的GetSplitCurves方法獲得多段線分段后的結果。③根據得到的分段線段確定哪些分段線段屬于邊界線[10]。④刪除不屬于邊界線的分段線段,即得到兩條多段線的邊界線。⑤賦予屬于邊界線的分段線段顏色為藍色。通過以上步驟就可以根據兩條多段線是否存在邊界線來確定二者是否重疊并提取多邊形的重疊部分。但是,該算法不能檢測出圖1(b)中所示的完全包含的情況。該算法的流程如圖2所示。
3 算法設計
3.1 獲取多邊形對象的ObjectId
每當打開一個DWG圖形文件時,系統(tǒng)會為每個對象賦予一個ObjectId,每個對象的ObjectId在本次任務中都是獨一無二的,所以通常利用每個對象的ObjectId對其進行訪問。在地籍圖中,所要處理的宗地房屋線均位于圖形數據庫中的JMD圖層中,因此必須通過構建過濾器來提取位于JMD圖層中多段線的ObjectId。在AutoCAD.NET API中可以通過Autodesk.AutoCAD.EditorInput命名空間的SelectionFilter類來實現(xiàn)。步驟如下:
//創(chuàng)建一個TypedValue數組來定義過濾器條件
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 多段線重疊判斷
從閉合的多段線中獲得當前的兩條多段線,判斷二者是否重疊,若重疊,則改變重疊的宗地線的顏色為藍色。按此方法依次遍歷當前圖形數據庫中的所有宗地,直至所有宗地完成檢查。值得注意的是由于地籍圖中的宗地線在AutoCAD中屬于三維多段線,所以在形成面域的時候必須注意個別面域為空的現(xiàn)象。程序的設計流程如圖3所示。
4 實例分析
本實例結合某農村宅基地確權項目的實測數據,對設計的重疊檢查程序進行檢驗,結果發(fā)現(xiàn)該方法可以準確地發(fā)現(xiàn)重疊的多邊形,尤其是能夠提取出部分隱蔽在圖形數據庫中需要人工在AutoCAD圖形窗口界面放大才能發(fā)現(xiàn)的重疊多邊形。程序檢查效果示意如圖4所示。
5 結語
本研究主要介紹了在AutoCAD.NET API的基礎上對AutoCAD進行二次開發(fā)的方法,并對其發(fā)展情況和框架層次結構進行了簡要的闡述。在.NET環(huán)境下實現(xiàn)地籍空間數據中各宗地之間重疊的自動提取,避免了人工檢查時容易出錯、遺漏等問題,同時提高了數據處理的效率和成圖質量。上述程序同樣能夠實現(xiàn)地籍空間數據中各宗地所屬權屬線之間的重疊檢查,可直接對數據進行處理,生成定位重疊多邊形的DWG文件,便于工作人員快速檢查和修改。
參考文獻:
[1]周曉光.基于拓撲關系的地籍數據庫增量更新方法研究[J].測繪學報,2005(34):372.
[2]韓江峰,鄧敏,徐楓,等.CAD宗地數據向Geodatabase自動轉換方法研究[J].測繪通報,2009(9):58-61.
[3]馮杭建,麻土華,劉偉宏,等.地籍空間數據庫拓撲關系分析及基于規(guī)則的驗證方法[J].計算機應用,2006(10):2522-2524.
[4]王永輝,胡青泥,李紅彩.AutoCAD二次開發(fā)方法的研究 [J].計算機系統(tǒng)應用,2007(3):94-96,100.
[5]晁彩霞,魏永樂.AutoCAD 二次開發(fā)工具探討[J].機械,2008,35(S1):35-37,70.
[6]李冠億.深入淺出AutoCAD.NET二次開發(fā)[M] .北京:中國建筑工業(yè)出版社,2012.
[7]曾洪飛.AUTOCAD VBAamp;VB.NET開發(fā)基礎與實例教程[M].北京:中國電力出版社,2013.
[8]趙軍,劉榮珍.用最小回路求兩個簡單多邊形的交、并、差集[J].計算機應用,2012,32(11):3164-3167.
[9]朱愛軍,鄧安福,魏艷軍,等.以節(jié)點操作確定兩任意實心多邊形交集的方法[J].重慶大學學報(自然科學版),2004,27(12):56-59.
[10]齊東洲,吳敏.高效的多邊形布爾計算方法[J].計算機應用,2014,34(S2):78-82.