基于AutoCAD的数字线划图重叠要素去除的设计与实现

2018-08-30 00:35王保国
城市勘测 2018年4期
关键词:点状图层阈值

王保国

(蚌埠市勘测设计研究院,安徽 蚌埠 233000)

1 引 言

AutoCAD以其强大的图形绘制与编辑功能、友好的界面设计、参数化命令与可视化操作相结合的工作模式,成为主流的制图软件之一[1]。数字线划图(DLG)是数字化地形图的重要产品类型,通过点、线及地物注记的方式反映空间地理信息。南方数码基于AutoCAD研发的南方CASS系列数字地形图生产软件提供了包括居民地、水系、道路、独立地物及地物注记等全要素地形图绘制功能,并且能够通过编码实现与国家地理信息数据的有机统一,满足大多数测绘生产需要。虽然南方数码制图软件已经比较充分地实现了AutoCAD制图与测绘的有效结合,但AutoCAD软件本身的一些缺陷仍无法克服,如图形易串图层、属性库缺陷等[2]。国内测绘行业多用AutoCAD作为地形图绘制工具,而在多次重复的地形图编辑处理后,不可避免地存在重叠地物要素,而软件本身没有重叠要素检测及处理功能。过多重叠图形要素的出现,既增加了冗余数据,降低了数据成果质量,也影响了图面美观。因此,如何去除数字地形图成果中的重叠要素是一个必须考虑的问题。可以借助第三方软件来实现,但过程烦琐且操作复杂[3]。本文尝试采用AutoCAD VBA二次开发技术,制作一个数据处理工具,通过检测数字线划图中的重叠要素,实现重叠要素的去除,以期满足图面整饰与GIS入库需求。

2 AutoCAD VBA开发技术

AutoCAD是一种面向各行业的通用软件平台,作为一种重要的、简单易用的制图软件,成为数字线划图的重要生产工具之一。AutoCAD VBA二次开发环境是AutoCAD软件结合VB语言与AutoCAD本身特性的一种强大的软件二次开发技术。不但具有VB语言的语法简单、易学且功能强大的基本特征,且能与AutoCAD运行于同一处理空间,并通过ActiveX Automation接口实现对AutoCAD模型空间的编程控制,调用AutoCAD软件本身的图形处理资源。通过AutoCAD命令VBAIDE启动VBA开发环境,进行程序编写[4]。

3 技术方法

3.1 技术流程

本文中处理的地物图形要素主要包括点、线和文本注记。通过对DLG数据成果的检索,检测其中的重叠图形要素,并统一归入一个临时图层中。首先,对检测区域建立二维网格,将DLG数据划分到一定的空间网格中。然后,分别对每个网格内的地物要素进行遍历,分类检测出重叠的地物要素,并归入临时图层。最后,对临时图层中的重叠要素进行认知判断,是否符合检测要求,符合要求的予以删除,达到去除重叠要素的目的。总的技术流程如图1所示。

3.2 重叠要素检测方法

南方CASS生产的全要素数字线划图信息量巨大,地物要素类型丰富,涵盖现状地物与抽象地物要素。但要素表现形式主要包含3种:点、线和文本注记。其中点要素包含独立的点状要素,也包含独立地物,如路灯等;线要素表示线状地物及面状地物轮廓线等;文本注记为对地物要素的注记说明,如地名、建筑属性、道路名称等。本文对三种类型分别进行处理,已达到检测重叠要素的目的。

图1 DLG重叠要素去除方法技术流程图

(1)点状要素的重叠检测

在数字线划图中,点状要素主要包括图形类型、空间位置、地物类型属性。在重复检测过程中,首先筛选出图形类型相同的点状要素,然后空间位置距离满足设置的空间距离阈值,且地物类型相同,则可初步判为重叠要素。

(2)线状要素的重叠检测

线状要素有多种类型,在重叠检测中,首先判断两个要素是否为同一种线型。其次判断地物要素类型是否相同,最后检测线的节点是否相同,都满足的则可初步判为重叠要素。

(3)文字注记的重叠检测

数字线划图中文本注记也是多种多样,无论文字类型和文字注记所表示的地物类型与文字内容都不尽相同。在重叠文字注记的检测中,首先筛选相同的文字类型,然后检测是否为同一类地物注记,最后判断注记位置是否在阈值内以及注记内容是否一致,都满足则判为重叠要素。

4 程序实现

4.1 实现方法

在重叠要素检测过程中,首先设置二维格网,并计算每个网格的范围,然后采用VBA选择集的acSelectionSetCrossing方法提取网格内地物要素。以检测重叠文本注记为例,简述主要的实现过程。

提取网格内的文字注记,主要代码如下:

Dim sset As AcadSelectionSet

Set sset = ThisDrawing.SelectionSets.Add("sset") ’定义选择集

sset.Select acSelectionSetCrossing,corner1,corner2,groupCode,dataCode

acSelectionSetCrossing是AutoCAD中选择集的一种选择模式,通过两点定义一个矩形,然后选择矩形范围内的图形要素。corner1,corner2为定义矩形的两个角点,此处为当前网格的两个对角点。groupCode,dataCode为选择集获取数据的过滤器,限定为选择文本注记。

获取网格内的所有文本注记后,首先检测ObjectName属性,是否与目标文本相同类型(单行文本、多行文本等)。若文本类型相同,进而检测文本内容及两个文本的插入点距离是否满足阈值要求,主要代码如下:

txtInsertionPoint1 = objtxt1.InsertionPoint ‘获取文本的插入点坐标

GetDist2D(x1,y1,x2,y2) < dist ‘GetDist2D为自定义过程函数,计算两个点(x1,y1)、(x2,y2)的距离值,dist为预设阈值。

objtxt1.TextString ‘获取文本注记的内容属性

若满足距离阈值限值与文本内容相同,则初判重叠要素,移入临时图层“重叠要素”中:

objtxt1.Layer = "重复实体" ‘将文本要素移入临时图层中

点状要素、线状要素的重叠检测过程类似,只在检测的内容上略有差异。

提取的重叠要素统一放在临时图层中,经过最终检查后,决定是否进行去除处理。

4.2 实现样例

对蚌埠市某区域约5.2 km21∶1 000数字线划图进行重叠要素检测,设置点状要素空间距离阈值 0.5 m,文本注记空间距离阈值 1 m,共用时约 12 min,检测出重叠要素共有点状要素31个,线状要素15个,文本注记60个。如图2(a)为数字线划图原图,图2(b)为检测出的重叠要素临时图层。从重叠要素检测结果上看,文本注记重叠最多,点状地物次之,线状要素相对较少。使用该检测方法,并对蚌埠市 1∶1 000全要素数字线划图进行重叠要素检测,较好地达到预期目标,解决了实际问题。

图2 1∶1 000数字线划图重叠要素检测

5 结 论

使用本文的检测方法,编写的重叠要素检测工具,可以快速、有效地去除数字线划图中的文字、单一线状要素等重叠地物要素,进一步提高了数字线划图的成果质量。在检测过程中,阈值的设置直接影响点状要素及文本注记的精度,而网格设置的大小对检测速度有重要影响。但本方法尚有不足之处,首先对椭圆、样条曲线等复杂曲线线型地物精确度不足,其次无法准确对复合图形或包含多图形的块参照进行处理,这些将是后续改进与完善的方向。

猜你喜欢
点状图层阈值
Ⅰ型肢根型点状软骨发育不良家系的遗传学分析
某住宅楼的混凝土点状爆裂原因分析
小波阈值去噪在深小孔钻削声发射信号处理中的应用
基于自适应阈值和连通域的隧道裂缝提取
浅谈地理事物空间分布特点的描述
解密照片合成利器图层混合模式
巧用混合图层 制作抽象动感森林
比值遥感蚀变信息提取及阈值确定(插图)
室内表面平均氡析出率阈值探讨
跟我学添加真实的光照效果