内容提要:本文介绍怎样用AutoLISP编程,自动提取和整理DINI03的观测成果。
关键词:AutoLISP编程;DINI03数据;提取和整理。
一、前言
随着科技的不断进步,特别是电子计算机技术的飞速发展,使测绘仪器向数字化、智能化方向转变。基于此,我单位的仪器设备在不断更新,现在所有仪器都已是数字化设备,其中有一台天宝DINI03电子水准仪。这台水准仪不但能够记录测量数据,还能对单一附(闭)合水准路线进行平差,但也只能对单一附(闭)合水准路线进行平差。若观测的是水准网,就只能将其记录的观测数据文件传输到电脑上,对数据进行整理后才能用于相应的平差软件进行平差。本文介绍的就是,怎样利用AutoLISP语言编程,提取和整理观测数据,从而使观测数据能够用于平差软件进行平差。
二、DINI03电子水准仪的数据结构
DINI03电子水准仪,有两种数据记录格式:R-M和RMC。其中R-M只保存测量数据,RMC既保存测量数据,又保存计算数据。测绘人员大都采用RMC,本文要处理的数据,就是针对这种记录格式的。
仔细观察分析RMC格式记录下来的数据,结合在DINI03水准仪上的查询结果,得知它记录的每一行观测数据,只要是相同属性的数据,都记录在相同的列上。例如:所有的控制点名称记录的起始列号是相同的,系统预留的控制点名长度也是固定的。其他如后视读数等的起始列号也相同,系统预留的长度也是固定的。这就为编程处理数据,提供了依据和便利。
三、编程思路及难点解决方案
通过上面对DINI03电子水准仪的数据结构分析,相应的编程思路也就出来了。首先,要明确提取什么观测数据,其次,要确认好欲提取的数据其起始列号和长度。这样,就可以利用AutoLISP提供的字符串处理函数,提取相应的数据。编程思路有了,真正要达到目的,还要解决以下几个难点问题。
首先,是怎样分辨出固定控制点和转站点。其次,是怎样累计两个固定控制点间的高差和视距。再次,是怎样剔除作废的观测数据。只有解决了这几个问题,所提取的数据才是正确的。
对于第一个问题,涉及水准点的编号规则。我单位在水准路线的观测过程中,给水准点的编号规则是:固定水准点的名称是以字母开头后缀数字,转站点只用数字编号。这就为程序判断固定水准点和转站点,提供了方法:只要判定控制点名称是否以字母开头就可以了。第一问题解决了,第二个问题就迎刃而解了,只需累计两个固定控制点间的高差和视距就可以了。对于第三问题,通过仔细观察数据文件,发现只要是作废的数据,其控制点号后面,都跟有字符串“####”。这样,只要在程序中加一判断语句,对控制点名称后有“####”字符串的,此行的数据不提取就行了。将上述几个难点问题解决了,剩下的问题就是怎样将提取的有效数据,输出到指定文件中了。
本程序输出的数据文件格式,是为满足科傻平差软件而制定的。若在人机对话时输入了已知点高程,则可直接被软件读取,瞬间完成平差计算。
为了减少代码,也为了简化程序操作,还为了便于文件管理,输出的数据文件采用固定文件名,并保存到D盘根目录。
期刊文章分类查询,尽在期刊图书馆
四、核心程序清单
下面列出核心程序代码,能够确认有效数据:前后视点名及前后视读数。
(if(and(/= jh "#####")(/= rb " "))
(progn
(if(= rb "Rb")
(setq jsq(1+ jsq)hdm(substr xyh 27 3)ham(ascii hdm)
rb(substr xyh 60 7)hjl(substr xyh 83 7)
erb(+ erb(atof rb))ehj(+ ehj(atof hjl))
)
)
(if(= rb "Rf")
(setq jsq(1+ jsq)qdm(substr xyh 27 3)qam(ascii qdm)
rf(substr xyh 60 7)qjl(substr xyh 83 7)
erf(+ erf(atof rf))eqj(+ eqj(atof qjl))
)
)
)
)
五、程序使用说明
AutoLISP是内嵌于AutoCAD大型辅助设计绘图软件中的语言,要运行此语言编写的程序,必须先启动AutoCAD软件,使用AutoCAD相应的命令加载程序。
本文提供的程序加载后,在命令行键入“dzsz”后回车,就可运行此程序了。启动程序后,屏幕上将出现文件选择框。此文件框只显示以dat为后缀的DINI03的数据文件,其它类型的文件都被程序过滤掉了。选定数据文件后,接着询问“现在输入已知高程吗(Y/N)?<N>:”,默认选项是“N”不输入,直接回车接受默认选项。若要输入已知高程,键入“Y”(大小写均可)。随后提示输入控制点名称及高程,接着提示键入下一控制点名称和高程。若控制点数据输入完毕,再次提示输入控制点名称时回车,就结束已知控制点数据的输入。程序运行结束前,提示生成的数据文件名称及存储位置。点击“确定”后,程序运行完毕。
若采用本文的程序,须采用前述编号规则。
六、结束语
用任何程序设计语言,都可以开发出DINI03的数据提取和整理软件。考虑到AutoCAD的广泛应用,AutoLISP语言简单实用,因此介绍了用此种语言编写的程序,望对同行有所帮助。
论文作者:张文瑞
论文发表刊物:《基层建设》2019年第10期
论文发表时间:2019/7/2
标签:数据论文; 程序论文; 水准仪论文; 高程论文; 水准论文; 文件论文; 名称论文; 《基层建设》2019年第10期论文;