AutoCAD软件助力点云地物批量属性赋值转换的实现

摘要:利用RIEGL三维激光扫描仪的配套软件RiSCANPRO对点云数据进行去噪、拼接、滤波等预处理后可以实现地物的绘制。然而,由于缺少一套成熟的基于点云数据绘制地形图的专用软件,将所绘制的点云地物以数据交换文件格式(dxf文件)导入CASS软件时缺少必要的地物属性信息,需手动添加属性和编码,导致地形图绘制的自动化程度降低。因此,本文从实际应用出发,利用AutoCAD提供的VBA进行二次开发编写程序,结合实际扫描数据实现了无属性地物的批量属性赋值转换,实验结果表明,本文所设计的程序能够快速准确、自动完整地进行属性赋值,提高了内业工作效率。

关键词: VBA编程 二次开发 地形测绘 地物提取 属性转换 测绘学

1、引言

随着测绘方法和计算机技术的快速发展,以RTK、全站仪等高精度测量仪器为主的传统地形测量正逐渐被兴起的三维激光扫描技术所取代。因其具有高精度、高密度、快速、无接触测量等优势,被广泛应用于变形监测、三维模型重建、数字城市、地形测量等多个领域[1,2]。目前,地形测量的常用软件AutoCAD及南方CASS适用于传统测量方法获取的地形数据。然而,由于缺乏一套系统的基于点云数据的地形测绘专用软件,利用点云数据绘制地物时缺少相应的实体属性编码,虽然提高了数据采集速度,却降低了地形图的制作效率。

吴晓章[3]等以校园内一长方形区域为实验对象,将预处理完成的点云导入2013版CAD中,利用曲线工具绘制道路、房屋等特征要素,并以dxf格式输出后再导入CASS中,最后依据特征要素绘制地物符号完成地形图的绘制。然而大量点云导入CAD时,会造成路灯、井盖等局部点云缺失而无法提取完整地物,需在CASS中输入其坐标再以相应符号手动绘制,并且海量的点云数据使得CAD的操作变得十分缓慢。高绍伟[4]和郭琳娜[5]等将依据点云绘制的点状要素导出为txt文件,将线状要素导出为dxf文件,借助CASS对点状地物直接进行展绘;而线状地物导入CASS后需借助其原有线型并以相应的地物符号重新描绘。这种方法虽然实现了地形图的绘制,但地物符号的二次描绘降低了内业处理效率。

本文针对上述方法存在手动属性转换甚至二次描绘降低作业效率的局限性,基于AutoCAD二次开发编写程序,实现了点云地物属性的自动转换。

2、数据获取及预处理

2.1数据获取

因扫描条件的局限性,以校园内局部区域的道路及周围地物为扫描研究对象,包含教学楼、行道树、路灯、灯塔、人工花坛等,使用仪器为RIEGLVZ1000地面三维激光扫描仪。首先对扫描区域进行勘察,确定扫描仪和标靶的最佳位置,既要保证扫描过程不被遮挡,又要选择最少的测站数,并记录每栋建筑物的楼层数,用于后期属性转换。布设标靶时要选择合适的位置,每个测站的标靶要避免布设在同一直线上,同时要确保相邻两测站间至少有3个同名标靶,以便进行不同测站间的配准。点云数据采集的具体步骤文献[6]中已详细说明。

2.2数据预处理

使用配套软件RiSCANPRO对获取的实验区点云数据进行预处理,主要包括去噪、拼接和滤波。由于三维激光扫描仪的扫描范围较大,获取的扫描数据常常会包含非实验区的点云,增加数据量的同时降低了数据处理速度,对于这部分非扫描对象的数据,直接在软件中进行删除处理。

由于扫描区域较大,仅架设一个测站难以获取到完整的实验数据,通常需根据现场实际情况进行多站扫描测量,最后进行拼接得到完整的点云数据。拼接即将多个测站的数据统一转化到以第一测站为准的局部坐标系下[7],利用相邻测站间的同名标靶即可实现点云数据的配准。

相邻测站间的扫描数据会有重复区域,这部分区域在多站拼接完成后会产生大量的数据冗余,增加计算机的处理负担,利用软件对其进行滤波处理,选择合适的阈值,降低数据冗余度。经一系列预处理后的点云数据如图1所示。

图1预处理完成后的点云数据

3、地物特征提取

利用RIEGL三维激光扫描仪的配套软件RiSCANPRO结合人机交互可实现点云数据的地物绘制。在俯视状态下,选择合适的特征要素对实验区的地物进行绘制,行道树、路灯等地物选择点要素进行绘制,而道路、房屋、花坛、栅栏等选择封闭的线要素进行描绘。以地物名字的简拼对要素图层进行命名,不同的地物要素存放于不同的图层下,如线要素图层有:NBDL(内部道路)、TF(砼房)、HP(花圃)、ZL(栅栏),点要素图层有:HDS(行道树)、LD(路灯)、WXDGT(无线电杆塔)。绘制完成以dxf文件格式导出各个图层的地物要素,扫描区一共有7类地物,因此导出7个不同的dxf文件,用于后续地物属性编码的自动转换。提取的地物特征如图2所示。

图2地物特征

4、属性转换程序设计

一直以来AutoCAD在工程应用方面有广泛的作用,因其具有实用强大的功能、简单易于操作以及它是开放性的,提供了丰富的编程接口[8],它的二次开发方式主要有AutoLisp、VBA、ObjectARX、ADS、AutoCAD.NET[9,10]。其中VBA作为一种内嵌机制,具有简单易学、执行速度快、编程环境可视化等优点,并且利用VBA开发对话框界面比较方便,直接在窗体上放置控件,避免编写冗长的代码。因此,文中选用VBA进行二次开发。

4.1程序设计流程

在南方CASS中,以绘制一栋6层的砖结构房屋为例,按照输入通用绘图命令“DD—确定—输入141121—确定—依次输入或拾取房角点坐标—输入C—输入6”的步骤绘制地物,其中“141121”为砖结构房屋对应的CASS地物编码,“C”表示闭合当前绘制图形,“6”代表房屋层数,本文将绘图步骤中输入地物编码(如“141121”)之后的所有输入项(如“C”和“6”)统称为绘图参数。

图3程序设计流程图

因此,针对由点云数据进行地物特征提取完成后导出的多个dxf文件,本文程序设计的主要思路是首先将存放于多个独立dxf文件下的点要素和线要素分别逐一加入到点集合和线集合中;其次通过依次判断两集合中各要素的图层属性,依据图层名获取各地物要素所对应的CASS编码;最后调用南方CASS成图系统中所提供的通用绘图命令,按照给定比例尺自动重新绘制地物,实现两集合中各要素的符号(块名)、图层、颜色、线型、线宽以及扩展属性等地物属性的批量转换或赋值。程序设计流程如图3所示:

4.2解析dxf文件

由于在CAD的VBA开发方式中并未提供易于解析dxf文件的编程接口,因此本文借助DXFLIB开源库解析dxf文件。为了供VBA程序调用,只需在C++环境中对DXFLIB解析点和多段线要素的两个虚函数进行简单改造,即可将点要素和线要素分别逐一加入到点集合和线集合中。例如,在C++环境中改造DXFLIB解析点要素的虚函数代码如下:

4.3获取图层名的对应编码

为了实现地物要素符号、图层、颜色等地物属性的批量转换或赋值,需要准确地将要素图层名转换成相应的CASS地物编码,因此必须明确图层名和地物编码的对应关系,如表1所示:

图层名与地物编码对应关系表1

在VBA中,要素图层名转换成地物编码的实现代码如下:

4.4地物属性转换

完成dxf文件的解析以及明确了图层和编码的对应关系后,在VBA代码中分别遍历点、线集合,调用CASS通用绘图命令,在CASS环境中以一定比例尺重新绘制地物。以绘制房屋为例,其流程如图4所示:

图4房屋自动绘制流程图

5、实验演示及分析

运行VBA代码弹出程序窗口界面如图5所示。点击“读取dxf文件”按钮,打开在RiSCANPRO里完成矢量化并导出的多个dxf地物要素文件。读取文件完成,解析出待转换的图层总数为7,各地物要素总数为146,待转换的图层列表如图6所示:

图5程序窗口界面

图6待转换图层

点击“查看”按钮,可预览图层名所对应的地物编码,如图7所示,LD(路灯)对应的编码为155210,HDS(行道树)对应的编码为340402,最后点击“开始转换”按钮,将各个dxf文件中的点、线要素分别在CASS7.0环境中以1∶500比例尺自动重新绘制成图,待地物绘制完毕程序提示“转换完成”,如图8所示。点击“退出”按钮退出程序。

图7获取图层名的对应地物编码

图8属性赋值结束

图9是按照本文所编写的程序代码自动重新绘制的包含属性信息的地物要素。实验表明,该程序能够快速准确地将缺少属性信息的点云地物进行符号描绘及属性编码转换,且无须人工二次描绘,完全自动化地实现了由无属性地物向有属性信息地物的批量转换。

图9属性赋值后

为验证本文程序方法的效率,使用文中提到的第二种方法进行实验对比。在RiSCANPRO中将绘制的点状要素导出为一个.txt文件,线状地物导出为一个.dxf文件。将导出的点状.txt文件转换成.dat文件,在CASS中直接进行展绘,线状要素作为一个图块插入CASS图形文件中,此时的线状要素缺少相应属性编码,如图10所示,需要根据原有线型选择相应的地物符号进行重新描绘。二次描绘完成后地物被赋予了相应的属性编码,由于是在原有的线型基础上进行描绘的,如图11中红色框内所示,二次描绘的线状要素与原有要素之间存在一些偏差,难以完全精确到原有的线状地物,同时二次描绘使得地形图的制作效率较低。如表2所示,与原有方法相比,运用本文提出的方法制作地形图不仅效率得到提高,同时减少了因二次描绘而产生的偏差。

图10插入CASS中无属性的地物图块

6、结语

由于缺乏一套成熟的地形测绘专用软件,在分析总结由点云数据获取的地物缺少属性信息及传统属性赋值方法存在不足的基础上,本文通过对CASS中地物属性编码的方法及数据交换文件dxf进行研究,运用VBA二次开发编写程序实现了无属性地物的批量属性转换。与传统方法相比,提高了作业效率,减少了二次描绘的误差,避免了因数据过大造成的缺失。同时,设计的程序窗口简单美观,易于操作,在矢量化无属性点云地物的批量属性转换方面有较好的作用,对测绘工作效率的提高有一定的借鉴意义。