摘 要:【目的】为解决地籍数据建库过程中出现宗地要素重叠的问题,提高地籍空间数据的质量,保证数据的拓扑空间一致性,设计出一种提取重叠宗地要素的自动化检查工具。【方法】根据空间拓扑关系九交模型对要素间的重叠类型进行识别,在AutoCAD平台上借助AutoCAD.NET的布尔运算机制实现要素重叠的自动提取。【结果】自动化检查工具实现了地籍空间数据中各宗地要素之间的重叠检查,可直接对数据进行处理,生成定位重叠多变形的DWG文件。【结论】基于AutoCAD.NET开发的自动化检查工具能够准确地检查出存在重叠的多边形,避免了人工检查工作量大且容易出错的缺点,提高了地籍空间数据的质量和成图效率。
关键词:地籍空间数据;多边形;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年开始全国农村集体土地确权登记发证工作。就集体土地所有权、集体建设用地使用权、宅基地使用权展开调查,依据《土地利用现状分类》《城镇地籍调查规程》等相关技术规定和标准,充分利用全国土地调查的现有成果,形成完善的土地利用数据库和地籍信息系统。
地籍数据库是现代地籍的生命所在,而地籍数据库的人工交互存在编辑时间长、难以保证空间数据一致性等问题[1]。目前,地籍空间数据主要以AutoCAD的DWG格式为主[2]。CAD数据模型具有强大的绘图功能和矢量图形处理能力,但是,由于在实际内业成图工作和权属调查中存在不一致等原因,会导致相邻宗地之间存在相互重叠等问题。这种情况在现实中是不允许的[3],不仅会造成地籍图的数据质量低下,而且在建立地籍数据库时,存在这种情况的地籍图是不允许入库的。因此,本研究基于AutoCAD.NET的AutoCAD二次开发,采用C#语言设计出可以检查多边形重叠的拓扑检查工具,精确地提取出每一个重叠的多边形,避免人工检查时容易出错、遗漏等问题,同时提高了数据处理的效率和成图质量。
1 AutoCAD.NETAPI
1.1 NET API概述
从AutoCAD 2006开始,Autodesk为其二次开发增加了.NET API。其提供了一系列托管的外包类(Managed Wrapper Class),使开发人员可在.NET 框架下,使用任何支持.NET 的语言,如 VB.NET、C#等对AutoCAD进行二次开发。这种开发方式的优点是完全面向对象,在具有ObjectARX强大功能的同时还具有VBA使用方便、易用的优点,并且AutoCAD.NET API比传统的Lisp语言编程方法更优越,是较为理想的 AutoCAD二次开发工具[4-5]。
1.2 NET下的AutoCAD对象层次
对象是AutoCAD.NET API的主要构成成分,每个公开的对象都准确地代表AutoCAD的一个部件[6]。所有对象以AutoCAD的Application对象为根对象。Document对象实际上就是一个AutoCAD图形,提供了访问与Document对象相关联的Database对象的功能。Database指的就是当前图形的数据库对象。 当打开一个DWG图形文件时,Database图形数据库会自动创建至少九个符号表:块表、层表、符号样式表、线型表、视图表、UCS表、视口表、注册应用程序表、标注样式表[7]。而我们所要检查的多边形就位于块表的模型空间记录中。
2 重叠多边形的识别方法分析
在地籍图中,由于外业调查测量误差与内业成图的不一致性,会导致相邻宗地之间存在重叠或重复绘制等问题。根据空间拓扑关系九交模型,两面要素之间存在的关系为:相离、相接、相交、相等、包含。宗地房屋多边形的重叠可以分为两种情况如图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图形文件时,系统会为每个对象赋予一个ObjectId,每个对象的ObjectId在本次任务中都是独一无二的,所以通常利用每个对象的ObjectId对其进行访问。在地籍图中,所要处理的宗地房屋线均位于图形数据库中的JMD图层中,因此必须通过构建过滤器来提取位于JMD图层中多段线的ObjectId。在AutoCAD.NET API中可以通过Autodesk.AutoCAD.EditorInput命名空间的SelectionFilter类来实现。步骤如下:
//创建一个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中筛选出闭合的多段线,并改变未闭合的多段线的颜色以作区分。在.NET API中可以通过访问多段线的Closed属性来提取闭合多段线。
3.3 多段线重叠判断
从闭合的多段线中获得当前的两条多段线,判断二者是否重叠,若重叠,则改变重叠的宗地线的颜色为蓝色。按此方法依次遍历当前图形数据库中的所有宗地,直至所有宗地完成检查。值得注意的是由于地籍图中的宗地线在AutoCAD中属于三维多段线,所以在形成面域的时候必须注意个别面域为空的现象。程序的设计流程如图3所示。
4 实例分析
本实例结合某农村宅基地确权项目的实测数据,对设计的重叠检查程序进行检验,结果发现该方法可以准确地发现重叠的多边形,尤其是能够提取出部分隐蔽在图形数据库中需要人工在AutoCAD图形窗口界面放大才能发现的重叠多边形。程序检查效果示意如图4所示。
5 结语
本研究主要介绍了在AutoCAD.NET API的基础上对AutoCAD进行二次开发的方法,并对其发展情况和框架层次结构进行了简要的阐述。在.NET环境下实现地籍空间数据中各宗地之间重叠的自动提取,避免了人工检查时容易出错、遗漏等问题,同时提高了数据处理的效率和成图质量。上述程序同样能够实现地籍空间数据中各宗地所属权属线之间的重叠检查,可直接对数据进行处理,生成定位重叠多边形的DWG文件,便于工作人员快速检查和修改。
参考文献:
[1]周晓光.基于拓扑关系的地籍数据库增量更新方法研究[J].测绘学报,2005(34):372.
[2]韩江峰,邓敏,徐枫,等.CAD宗地数据向Geodatabase自动转换方法研究[J].测绘通报,2009(9):58-61.
[3]冯杭建,麻土华,刘伟宏,等.地籍空间数据库拓扑关系分析及基于规则的验证方法[J].计算机应用,2006(10):2522-2524.
[4]王永辉,胡青泥,李红彩.AutoCAD二次开发方法的研究 [J].计算机系统应用,2007(3):94-96,100.
[5]晁彩霞,魏永乐.AutoCAD 二次开发工具探讨[J].机械,2008,35(S1):35-37,70.
[6]李冠亿.深入浅出AutoCAD.NET二次开发[M] .北京:中国建筑工业出版社,2012.
[7]曾洪飞.AUTOCAD VBAamp;VB.NET开发基础与实例教程[M].北京:中国电力出版社,2013.
[8]赵军,刘荣珍.用最小回路求两个简单多边形的交、并、差集[J].计算机应用,2012,32(11):3164-3167.
[9]朱爱军,邓安福,魏艳军,等.以节点操作确定两任意实心多边形交集的方法[J].重庆大学学报(自然科学版),2004,27(12):56-59.
[10]齐东洲,吴敏.高效的多边形布尔计算方法[J].计算机应用,2014,34(S2):78-82.