一种图形化的纵横断面数据处理方法及实现
2011-12-20蒲生亮
[ 作者简介:蒲生亮(1986 - ),男,助理工程师,主要从事水利水电工程测量,2009年毕业于武汉大学,大学本科。]
(内蒙古自治区水利水电勘测设计院,内蒙古 呼和浩特 010020)
摘要: 常见的纵横断面数据处理方法主要从数据或格式着手,往往容易忽略了其“图形”意义,本文尝试从“图形化”角度编写了基于VISUAL LISP 的纵横断面数据处理程序,可以应用于各种纵横断面测量数据处理。
关键词: 图形化,纵横断面测量,数据处理,VISUAL LISP, AUTOCAD二次开发
A Graphical Data Processing Method and Implementation of Vertical and Horizontal Cross-Section
PU Shengliang1
(Inner Mongolia Water Resources and Hydropower Survey and Design Institute,Inner Mongolia Hohhot 010020)
Abstract : The common methods of data processing of vertical and horizontal cross-section mainly started from data or format, often easy to overlook its "graphics" meaning, this paper attempts from the "graphical" point of view to write the vertical and horizontal cross-section of data processing program based on VISUAL LISP, can be applied to the kinds of vertical and horizontal cross-section measurement data processing.
Keywords: Graphical, Vertical And Horizontal Cross-Section Measurement, Data Processing, VISUAL LISP, AUTOCAD Secondary Development
引言
隨着GPS-RTK技术在测量工作中的广泛应用,传统的测量手段得到了大程度地提升,以测点为主要方式的测绘任务面临着“多文件”、“大体积”的数据整理及处理困境。虽然众多断面测量软件大放异彩,可是各有其千秋,并且大多基于纯程序设计语言的文本操作得以实现,有的以“固定”格式的数据成图为主,有的仅以本职工作出发编写而其他行业应用有限或繁琐,而且都有一个共同的特点:无不使程序使用者容易陷于“文(件)山点海”,极为不方便,且不得不牺牲了测点数据的可见性与直观性,稍有特色者也不过参考点图而已。正是基于以上思考,本文尝试从点数据的图形角度出发,增加了纵横断面数据整理及处理过程的形象直观性、简易性。
1 需求分析与功能设计
首先,我们必须知道“要解决的问题是什么?”也即如何从测点源数据得到目标数据,从而生成测绘最终成果。其次,也要知道“是否有行得通的解决办法?”也即采用何种编程方法,达到什么样的功能效果,实现数据的转化,因而本文选择了AUTOCAD VISUAL LISP集成开发环境作为程序编码与测试工具。最后,要弄明白“怎样具体实现?”也是程序开发最关键的步骤,需要反复进行模块编码、调试、精化与集成,从而实现程序编写所预期的各项功能。
图表 1.1 E-R图
(1)开发目标。如图1.1 所示,我们要实现测量点的集合AI到成果元数据的集合BJ的转化,I为源点数据的数目,J为目标元数据的数目,也是众多纵横断面数据处理程序的设计思路和目标,而我们要实现“图形化”的目的,即要完成数据图形化(DI)和图形数据化(ID)两个过程,其功能转化过程如图1.2 所示。
图表 1.2 功能图
(2)应用范围。从理论上讲,可以实现纵横断面设计与成图。在实际测量工作中可以应用于渠道、河道纵横断面等相关数据成果的生产过程。
2 流程设计与编码实现
(1)根据图表 1.2 ,其功能所对应的程序流程图如图表2.1 所示:
图表 2.1 程序流程图
(2)根据图表 2.1 我们可以编写相关函数,以实现功能,函数列表如下:
主程序单元 C:ZD () C:HD ()
纵断面数据处理程序 横断面数据处理程序
一级调用单元 C:E2C() C:L2C ()
高程点生成数据文件 复合线输出XY坐标
二级调用单元 C:STRPARSE () C:L1R ()
字符串转换为字符串列表 判断点在直线上的位置
图表 2.2 函数功能及其关系调用
(3)根据图表2.2 我们可以得到其抽象数据类型定义,如下所示:
ADT ZD_HD {
数据对象:C={AI,BI|AI为点数据集合;BI为元数据集合}
数据关系:R={
基本操作:
C:ZD (/ LSTS LSTZ B D Z C ZA ZZ S SA FF Z1 ZA1 ZZ1)
// 操作结果:返回一个非NIL值
C:HD (/ LSTS LSTZ P PP P1 FF STR B Z C ZA S SA ZZ ZN FLAG D)
// 操作结果:返回一个非NIL值
E2C (/ SN LSTS P1 P2 SS I SI PT Y X H)
// 操作结果:返回一个XYH点列表
L2C (/ PL ENTDATE A N LSTZ FIND KEY YY XX)
// 操作结果:返回一个XYH点列表
STRPARSE (STR DELIMITER / SEARCHSTR STRINGLEN RETURN N CHAR)
// 操作结果:返回一个子字符串列表
L1R (P1 P2 P3 / B C P)
// 操作结果:返回一个INT值,等于0时点在线上,大于0时点在线的左侧,小于0时点在线的右侧。
} ADT ZD_HD
3 程序测试与成果生成
(1)打开AUTOCAD,加入CASS环境,展绘点号和高程点。输入命令APPLOAD,选择和加载文件“*.FAS/*.LSP/*.VLX”;若命令无效可重复加载。开启圆心和节点捕捉,从上游至下游(前进方向)连接纵断线,从前进方向左端至右端连接横断线。输入命令“ZD”,框选高程点(包含纵断线),生成纵断数据文件及成果图。输入命令“HD”,框选高程点(包含横断线),选择(横断线),选择中心桩和方向点(前进方向),输入中心桩号,生成纵断数据文件及成果图。
(2)以某长1KM纵横断测量项目所采集数据为实例,其原始数据格式为“点名,注释,东坐标,北坐标,高程”,展绘后散点图如3.1所示。目标纵断成果和横断成果格式为“距离,高程”,并生成横断面图(以第一条为例,如图3.2所示)和纵断面图(如图3.3所示)。
图表 3.1 测点数据散点图
图表 3.2 纵断面成果图
图表 3.3 横断面成果图
4 结语
(1)通过该程序的设计、编码与测试,以及成果生成,取得了预期的结果,操作更加简便、尤其适合于电脑操作不太熟练的同志。
(2)通过断面线的绘制,避免了多人协作测量数据凌乱无章的特点,断面点的选择也更具灵活性,断面数据的可靠性更高,出错率更低。
(3)LISP语言在人工智能方面有着称奇的优势,虽然本程序在生产实践中应用尚可,但是仍立足于简单数据源、图元素,本质上还是文本操作处理,因而将来在数据处理智能化方面有着很大的空间,需要结合本职工作进行更深一步的学习和研究。
参考文献:
[ 1 ] 阎聚群.AUTOCAD 2000 VISUAL LISP开发[M ] .武汉:华中理工大学出版社, 2000.
[ 2 ] 孙江宏,丁立伟,米洁. VISUAL LISP编程与应用[M]. 北京:科学出版社,1999.
[ 3 ] 郭剑峰,陈杉,王宁. 用VISUAL LISP开发AUTOCAD 2000应用程序[M]. 北京:人民邮电出版社, 2000.
[ 4 ] 鲁玉甫. 用LISP程序扩展AUTOCAD在测量上应用[A]. 河南省土木建筑学会2009年学术大会论文集[C], 2009 .
[ 5 ] 陈驰原,刘占奎. VISUAL LISP编程在渠道纵断面设计中的应用[J]. 新疆水利, 2009, (02) .