(四川省测绘技术服务中心有限责任公司,四川 成都 610081)
摘要 当前基础测绘项目中有很大一部分地形图矢量数据是基于AutoCAD软件绘制的,为了保证数据成果质量,必须经过严格质量检查,地形图精度评定以平面中误差是否超限为准,其中坐标精度评定是反映地形图成果质量的一个很重要的精度指标,通常做法主要依靠人工进行精度统计。本文应用Visual LISP对AutoCAD进行二次开发,在野外检测点采集完成后进行精度检查时,只需要将采集点导入地形图数据即可生成本次的地物精度检查报告和该地形图的精度检查报告,从而提高坐标精度检测的自动化程度。
关键词 AutoCAD;地形图;野外检测点;自动检查
中国分类号: 文献标识码:
0.引言
在基础测绘中,地形图测绘占有非常大的比例。地形图测绘工作中,野外测量工作繁琐,内业图形采集、编绘工作量大,一幅完整的地形图往往包含大量地理要素,既要保证图面的美观,又要保证图形数据的准确性,野外采集检测点工作必不可少。在将野外检测数据与图形数据进行地物匹配精度检查过程中,若采取人工对比的方式会增加大量的人力成本,对比结果可能存在不准确的情况,影响对该地形图成果整体精度的评定。
本文就提高地形图地物精度检查的效率和准确率,采用AutoCAD Visval LISP 进行二次开发,在进行地形图精度检查时,仅需提供野外检测点固定格式的文件、野外检测点所在的AutoCAD图形内展点的图层,即可自动识别野外所测点位的地物类别、地物精度,并导出精度计算结果及该图形精度评定报告。
1.AutoCAD Visual LISP编程简介
Visual LISP是AutoCAD自带的一个集成的可视化Auto Lisp开发环境;Auto Lisp可以实现直接增加、修改AutoCAD命令,随意扩大图形编辑功能,建立图形库和数据库并对当前图形进行直接访问和修改[1]。
2.野外检测点精度自动检查算法设计
2.1 数据准备
2.1.1待检查地图矢量成果
完成采编的地形图成果数据,内容符合相关标准规范的图层、线型等要求(图1)。
图1 某地地形图样式
2.1.2野外检测点数据文件
从待检区域的地形图上预选取特征地物,使用测量设备野外实测预选取的特征地物对应的实地地物点,将测得的数据转化为固定格式的点文件数据,供精度检查使用。野外检测点数据文件格式如下:
2.2 野外检测点精度自动检查算法分析
点位精度检查主要使用检查点与被检查地物点的平面距离和精度要求值作对比,若检查点和被检查点的平面距离大于精度要求值,则该地物点点位精度超限,若检查点和被检查点的平面距离小于等于精度要求值,则该地物点点位精度未超限。
实现流程(图2)如下:
图2 野外检测点精度自动检查算法实现流程图
获取检查点和被检查地物点的平面距离有如下两种方法:
第一种:
由地形图图面地物的节点去搜索该节点一定范围内(此范围应大于精度要求值)是否存在检查点,若存在则使用该地物节点和搜索到的检查点间的平面距离与精度要求值作比较;若不存在则认为该地物未进行精度检查。
第二种:
由野外实测检测点搜索该检测点一定范围内(此范围应大于精度要求值)是否存在地物节点,若存在(以搜索到最近的一个地物节点为准)则使用该地物节点和搜索到的检查点间的平面距离与精度要求值作比较;若不存在则应排查此实测点是否合理。
两种方法相比较而言,第一种方法需要遍历地形图图面所有实体,第二种方法仅需遍历野外实测点数据,就检查效率而言,第二种方法优于第一种方法,本文主要讨论第二种方法的实现过程。
2.3 野外检测点精度自动检查算法的实现
功能实现具体算法如下:
第一步:将野外检测点数据点文件导入AutoCAD,并将其归入“检查点”层。
第二步:要求用户输入检查点所在图层、精度要求值、检查点最大搜索范围、检查记录文件保存位置等信息,若用户没有合理输入就点击回车键,则提示用户重新输入,直至输入合理的数据或按下Esc键。
部分代码如下:
(Setq Layer (GetString "\n输入检查点所在层:")))
(While (= Layer nil)
(Setq Layer (GetString "\n输入检查点所在层:")))
(Setq S (GetReal "\n输入精度要求值:")))
(While (= S nil)
(Setq S (GetReal "\n输入精度要求值:")))
(Setq L (GetReal "\n输入检查点最大搜索范围:")))
(While (= L nil)
(Setq L (GetReal "\n输入检查点最大搜索范围:")))
(Setq File (GetFiled "检查记录文件保存位置:" "c:\\点位精度检查记录" "TXT" 1))
(While (= File nil)
(Setq File (GetFiled "检查记录文件保存位置:" "c:\\点位精度检查记录" "TXT" 1))
第三步:获取“检查点”层的检查点集合。部分代码如下:
(Setq ssjc (ssget "X" (list '(0 . "POINT") (cons 8 “检查点”))))
第四步:遍历检测点集合,对遍历的每一个检测点进行如下操作:
①获取当前遍历到的检查点的坐标;
(List (Cadr (Assoc 10 (EntGet (SSname ssjc jci))))(Caddr (Assoc 10 (EntGet (SSname ssjc jci)))))
②在以当前遍历到的检查点为圆心,以检查点最大搜索范围为半径的范围内搜索图面地物节点,若搜索到地物节点,则获取该地物的属性信息并将该地物节点与检查点的平面距离和精度要求值作比较,保留比较结果。
③若未搜索到地物节点,则记录为“未找到相关地物”,用于事后排查。
④将每一个遍历到的检查点分别建立一条检查记录,保存至“点位精度检查记录.TXT”中。
点位精度检查记录内容如下:
第五步:计算检查中误差进行精度评估·
公式如下:
S=
----每条记录的检查点和地物节点的距离;
----检查记录总的条数( N > 20);
3.案例分析
本文以成都市某地的1:500矢量地形图进行了测试。测试过程如下:
该区域面积较大,从待检查区域选取200个检查点,选取的点位包含房屋角点、道路拐点、花圃角点、涵洞、台阶、加固坎等角点,电线杆中心点。使用RTK和全站仪等设备进行野外检测点采集,并将采集数据整理为所需格式的文件。
将野外采集的检测点导入至AutoCAD,并将其归入到“检查点”图层;将包含检查点的图层与成果地形图进行合并,并保存为两份数据,供自动精度检查和人工精度检查作比较。
3.1自动检查
把包含检测点图层的地形图打开,加载本应用程序至AutoCAD,并运行相应的命令;在命令提示下依次输入:
检查点所在层:检查点;
精度要求值:0.05m;
检测点最大搜索范围:0.20m;
检查记录保存位置:C:\检查记录.xls;
以上数据输入完成后程序开始运行,在一分钟内完成了检查过程,并在地形图上“检查点”图层绘制出颜色为“红色”,半径为5m,圆心在精度检测超限的地物节点处的标识圆。
检查记录部分数据如下:
根据中误差是否超限对整个地形图进行精度评定。
3.2人工检查
把包含检测点图层的地形图打开,人工逐一量取、记录检测点和被检查地物的平面距离,填入检查记录表、计算平面中误差,对地形图进行精度评定。
图3 检测点与被检地物的关系
根据被检查数据的检查点数量,人工检查所需时间相应改变;量取距离或者获取坐标可能因为人为因素、图形捕捉等原因使获取的距离和坐标不准确,导致对地形图成果精度评定产生影响。
经过比较,自动检查测试结果与人工检查结基本果一致,但人工检查仍然存在数据获取不准确,从而影响评定结果,但自动检查效率远高于人工检查,故本方法能显著提高野外检测点精度自动检查的效率。
4.结论
本文研究成果在地形图矢量数据的野外检测点精度自动检查提高效率和准确性方面得到了很好地验证,避免了人工检查可能对检查造成的错误,能切实反映图形成果的精度情况。实现了对野外检测点的自动检查,若需要增加高程精度评定,仅需在本方法的基础上稍加改动即可实现。
参考文献:
[1]百度百科
[2] Auto CAD 2017实用教程/薛山 编著.
—北京:清华大学出版社,2017
[3]AutoCAD完全应用指南.AutoLISP +DCL+Visual LISP程序设计/吴进勇,林美樱编著.—北京:科学出版社,2009
作者简介:粟万芬,1979年9月,女,汉,四川达州,测绘工程师,本科。