APP下载

基于AutoCAD的高程点检查工具设计与实现

2022-03-13高海建

现代测绘 2022年6期
关键词:配置文件参考点日志

高海建,朱 健

(1. 江苏省地质工程勘察院,江苏 南京 210013;2.江苏省地质测绘院 江苏 南京 211102)

0 引 言

高程点即标有高程数值的信息点,用于标识所在位置的实际高程值。与等高线一样,高程点是表达地形高低起伏的重要手段,是数字地形图的重要组成部分。高程点可以通过GPS-RTK、全站仪、水准仪、航测立体测图等方式获取并标绘到图上。在AutoCAD中一般通过块+属性标注的方式来表示高程点。检查高程点时,一般为人工目视检查,效率较低且不容易发现存在的问题。文献资料检索结果表明,高程点自动化检查虽受到了一定关注,但相关研究尚处于起步阶段。蔡伟明[1]编写的高程值检查工具能够提高生产效率与产品质量,但需要依赖高程点附近的等高线作为判断依据,对于没有勾绘等高线的地方无法检查。吴新广等[2]基于双线性插值法开发了检查高程点的工具,能够极大减少检查工作量,但对于单条等高线包围点和山顶点的计算,与实际存在一定的误差,且此工具AutoLisp编写,不便于二次开发。综上,为降低开发难度以及提高高程点检查工具的适用性,本文拟采用高程内插的方式来检查高程点的高程是否异常。主要思路是:将待检查高程点的高程值作为未知点,基于当前高程点搜索周边高程点生成高程模型,然后根据平面位置计算当前高程点内插高程值,如果内插高程值与标注高程值的差值超过阈值,则可认为此高程点的高程值可能存在问题,需要人工进一步核实。

1 高程内插方法

高程内插就是根据若干相邻参考点的高程值求出待定点上的高程值,在数学上属于插值问题。按内插点的分布范围,可以将内插分为整体内插、分块内插和逐点内插三类[3]。基于高程点检查的特点,采用逐点内插法比较合适。逐点内插法是以待检查高程点为中心,定义一个局部函数去拟合相邻的数据点,数据点的范围随着待检查高程点的位置的变化而发生变化,因此又称为移动曲面法。移动曲面法可分为移动拟合法、加权平均法、泰森多边形法等。本文设计的检查工具使用了移动曲面法中的移动拟合法与加权平均法。

使用移动拟合法时,对于每个待检查的高程点,可选取与其相邻的n个高程点作为参考点拟合成一个多项式曲面,多项式曲面的的参数方程为:

Z=AX2+BXY+CY2+DX+EY+F

(1)

式中,X、Y、Z是各个参考点的坐标值,A、B、C、D、E、F为待求的参数。参数方程中的各个参数可由选取的n个参考点用最小二乘法进行求解。为保证方程正常求解,要至少有6个参考点。此方法适用于测区内部、图幅内部等高程点均匀的地方。

使用加权平均法时,对于每个待检查的高程点,可选取与其相邻的n个高程点作为参考点,使用加权平均值作为参数方程,具体如下:

(2)

式中,Zp是待检查高程点计算后的高程值,Zi是第i个参考点的高程点的高程值,n为参考点的个数,Pi是第i个参考点的权重。此方便适用于测区边缘、图幅外部等高程点比较稀疏的地方。

2 参考点的选择与权重确定

使用移动拟合法时,选择参考点的思路是以待检查高程点为圆心,半径R范围内的高程点作为参考点。R值的确定取决于附近高程点的疏密程度,对于地形图而言,规范上要求的高程点平均个数为M,那么R值为:

(3)

式中,M为高程点的平均密度,A为待检查范围的总面积,N为待检查点的总个数。

如果通过此方法搜索到的高程点个数不足6个,那么就可以将计算方法切换为加权平均法。使用加权平均法时,参考点权值的计算方法为:

P= 1/r2

由表6可以看出,在其它变量不变的情况下,解释变量国内生产总值、年末人口数量和居民人均教育消费支出对被解释变量国家财政教育支出的影响显著.解释变量居民教育消费价格指数和财政教育支出占总支出的比例对被解释变量国家财政教育支出的影响都不显著,从回归模型中剔除,得到新的回归模型为

(4)

式中,P为参考点的权,r是参考点到待检查高程点的距离。

3 设计思路

通过对高程内插原理分析和参考点选择与权重确定方法的介绍,已经解决检查工具运行的核心问题。除此之外,还需要对高程值获取方法、阈值确定、日志输出等做出规定。检查工具的运行基本流程如图1所示。

图1 运行流程

3.1 高程点坐标信息的获取

在AutoCAD中,高程点一般以属性块的形式标注。如在CASS平台中,高程点的平面坐标保存于块插入点的X(东坐标)、Y(北坐标)属性中,而高程值H则属性标注(height)中,如图2所示。

图2 CASS高程点

不同AutoCAD平台中,高程点的表示方法大致相同。读取CASS平台中高程点时,获取到平面坐标后,需要进一步读取块参照中名称为height的属性标注值[4]。

3.2 日志文件设计

当检查出高程点超出指定的阈值后,需要将此点的检查结果以日志形式输出,供质检人员进一步确认。在AutoCAD中,每个DWG图中的所有实体对象都有一个句柄属性,且此值不会发生变化,也不会出现重复。通过句柄可以实现对实体的定位,方便质检人员查找“有问题”的高程点。本检查工具日志格式为:EID={句柄} 描述信息。其中{句柄}在实际运行时会被替换为高程点的句柄值,描述信息根据检查的出的差值输出,如图3所示。

图3 日志浏览器

3.3 配置文件的架构、读取与保存

配置文件基于XML(EXtensible Markup Language)格式保存,配置中包含整个工具运行的所有参数信息,只列出其他4个比较重要的属性项,其定义代码如图4所示。

图4 高程点检查配置代码(部分)

属性项PointCountPerUnit表示高程点的密度,即每平方千米有多个高程点。测图比例尺不同,比例尺的密度也不相同,需要根据实际情况输入相应的值。

属性项Threshold表示高程阈值,如果通过计算得到的高程值与此高程点原高程值之间的差值的绝对值超过此值,那么视此高程点为“问题点”,并将高程点对象的句柄及其它信息输出到检查日志中。阈值是一个经验参数,需要在实际运行中不断调整。

属性项ExpressionFilter表示过滤表达式,用于过滤DWG中哪些点可以作为高程点参与检查。尽管高程点一般情况下都采用属性块的方式来表达,但各个软件平台并没有遵循统一的标准。此外,地形图中除高程点之外,还有其地形、地貌要素,因此必须设置过滤条件,将非高程点过滤掉。

属性项ExpressionH表示获取高程值的表达式,因高程点的表达方式并没有统一,那么获取高程值的方法也是多样的,获取高程值的表达式需要根据高程点的具体类型来定制。

参数对象通过PropertyGrid显示,方便用户以窗口的方式来调整各个属性项,效果如图5所示。

图5 参数配置窗口

读取配置文件时,配置文件中的配置信息写入到配置对象中,是一种XML反序列化行为。保存配置文件时,配置对象中的配置信息写入到配置文件中,是一种XML序列化行为。在.Net Framework编程框架下,可以通过System.Xml.Serialization命名空间下的XmlSerializer类实现XML文件的序列化与反序列化。XmlSerializer对象中的Serialize方法用于将配置对象通过文件流写入文件,即保存配置文件。XmlSerializer对象中的Deserialize 方法用于将配置文件读取到配置对象中,即读取配置文件[5]。

4 程序实现

众所周知,AutoCAD向开发人员提供了丰富的二次开发接口,主要有ObjectARX、ObjectARX.NET、AutoLISP(VisualLisp)、VBA等。ObjectARX.NET二次开发接口既有ObjectARX功能强大的特点,又兼有VBA易用的特点。本文中的高程点检查工具采用ObjectARX.NET作为开发接口,基于AutoCAD2016提供的ObjectARX.NET开发框架,在Visual Studio2015开发环境中,使用VisualBasic.NET作为开发语言,实现了检查功能。

4.1 开发环境搭建

在Visual Studio2015中创建一个新的类库项目,依次引用acmgd.dll、acdbmgd.dll后,并修改acmgd.dll、acdbmgd.dll这两个文件的本地的属性为“否”。然后添加新的类文件并创建AutoCAD命令,主要结构如图6所示[6-8]。

图6 命令定制代码(部分)

CommandMethodAttribute类是AutoCAD二次开发环境提供的将方法暴露为AutoCAD命令的标识,其参数就是在AutoCAD中运行的命令名,命令名与过程名不必相同。Quality_ElevationPointCheck被标识后,就可以在AutoCAD命令行中输入相应的命令来执行此过程。

4.2 代码编译与加载

高程点检查代码编写完成后,即可对整个项目进行编译。项目编译后,会产生一个新的DLL文件,使用AutoCAD提供的netload命令可将此DLL文件加载到AutoCAD中,运行Quality_ElevationPointCheck选择参与检查的对象后进行高程点检查,如果出现超出阈值的情况,会将检查结果输出到日志浏览器中。

5 应用实例

我院承接的某地形图测绘项目中,包括300多平方千米的1∶1 000航空摄影、地形图测绘以及城区和乡镇镇区外1 000多平方千米的1∶2 000航空摄影、地形图测绘。测区范围较广,检查工作量大,通过人工目视检查高程点时,效率较低,一幅图需要近1 h的时间才能检查完,而且还容易出现错查、漏查的现象,给质检带来了很大的困扰。为了解决此问题,专门开发了此高程点检查工具。通过Quality_ElevationPointCheck命令执行检查任务,一幅图1 min内就可以将检查结果返回,借助于日志查看工具,可以快速对有问题的高程点进行定位(图7),如果确实存在问题,则进行修改。通过人工核实,平均每幅图的检查时间可以缩短到5 min内。此工具大大节约了质量检查人员的检查时间,同时也提升了检查的质量。

图7 检查工具运行界面

6 结 语

本文基于AutoCAD平台提供的二次开发接口,开发了一个新的工具,用于对高程点的高程值异常进行自动化检查,能够有效降低检查人员的工作量,提高检查质量,从而提升生产效率。目前检查工具只是对高程点进行检查,检查的结果还需要进一步人工核实,在今后的开发中,此检查工具还需要进一步改进计算内插高程点的方式,达到一定可信度后,可以将计算得到的高程值直接赋给有问题的高程点,从而实现查改全部自动化。

猜你喜欢

配置文件参考点日志
一名老党员的工作日志
FANUC数控系统机床一键回参考点的方法
扶贫日志
互不干涉混用Chromium Edge
参考点对WiFi位置指纹算法的影响
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
雅皮的心情日志
数控机床返回参考点故障维修
为View桌面准备父虚拟机