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

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

1、引言

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

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

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程序设计流程

图3程序设计流程图

4.2解析dxf文件

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属性赋值后

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

6、结语

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月10日
下一篇 2021年10月10日

相关推荐

e2022"} }