EPS2008脚本开发探讨

时间:2022-10-19 05:50:28

EPS2008脚本开发探讨

摘要: 文章简要介绍了测绘软件清华山维2008自带的脚本开发语言;细致描述了EPS2008脚本开发的优势与长处;并给出了EPS2008脚本开发的总体流程图;详细分析了EPS2008脚本的各项功能;剖析了EPS2008脚本开发的各部内部结构与规则;最后,笔者给出了一个脚本开发的实际应用案例,分析了脚本开发中遇到的问题并给出了解决的方案;希望能对广大同行业人士带来一定的理论与实践意义。

Abstract: The article synopsis introduced to survey and map the software Chin Hua mountain Wei 2008 develop language from the script taking;The delicacy described the advantage and strength of EPS2008 script development;Combined to the total flow chart of EPS2008 script development;Analyzed each function of EPS2008 scriptses in detail;Analyzed the each internal structure and rule of EPS2008 script development;Finally, the writer gives a script develop of actual application case, analyzed to meet in the script development of the problem combine to understand definitely of project;Hope to large go together an industry of the personage bring certain theory and fulfillment meaning.

关键词:EPS2008,脚本,测绘开发,软件应用

Keyword:The EPS2008, the script, surveys and maps a development, the software applies

中图分类号: P211文献标识码:A文章编号:

从EPS2008版开始,清华山维在EPS平台中加入了VBScript(Visual Basic Script),作为EPS平台的一种用户开发工具。VBScript是微软开发的一种脚本语言,可以看作是VB语言的简化版,与VBA的关系也非常密切。它具有原语言容易学习的特性,并继承了JavaScript的跨平台的特性。VBA是Office中包含的用来扩展Office功能的Basic语言。(注:Basic语言是高级程序设计语言的一种,简单易学,英文全名是“Beginner’s All-Purpose Symbolic Instruction Code”,中文意思是“适用于初学者的多功能符号指令代码”。)VB是在早期的Basic语言基础上发展而来的,保持了原来Basic语言简单易学的特点,同时增加了结构化和可视化程序设计语言的功能[1]。

本文主要从学习的角度,探讨EPS平台用VBS进行功能开发的具体实践过程,并对一些具体脚本应用中的一些典型代码做一个汇集,作为EPS平台下VBS脚本编写的一份参考资料。

1 脚本的优势

以前一直对脚本不看好,最主要考虑的是脚本的执行速度较慢。但是经过这几年开发EPS和HMI过程的过程,最近又试用了LUA和Squirrel等嵌入式脚本,觉得脚本确实是个比较好的解决方案,在EPS的开发中尤为有用。

(1) 性能问题“不明显”。

脚本速度确实不够快,但是脚本调用的功能一般都是都用其他语言开发的功能,也就是比较耗时的功能可以用其他的语言开发之后封装好,脚本只是对现有功能的重新组织和再次利用,因此性能问题不会那么明显。

(2) 易用性。

脚本一般是对具体的系统开发的,脚本的代码一般是面对任务的。用户使用脚本的时候一般就是要用最简单的方法,最少的代码实现自己的功能。用户这个时候很讨厌要去考虑头文件,系统调用等跟任务没有直接关系的工作。

(3)跨平台特性。

脚本一般即时编译,一般和硬件和操作系统的关联会尽量的屏蔽,因此代码移植性相当好。真正一次编译到处运行。

(4) 解决用户定制化需求

在HMI开发的中,即使考虑的再多,还是有用户的需求是想不到的,脚本就是一个很好的补充,脚本的使用确实没有点击几下对话框来的容易,但是在需要实现特殊定制化功能的时候,脚本的作用就凸显出来[2-3]。

2 开发流程总图

EPS2008脚本开发的总体流程图如图1所示:

图1 EPS2008脚本开发的总体流程图

3 EPS脚本功能与编写约定

3.1 EPS脚本功能

EPS平台下的VBA脚本主要是用来做一些批量的自动化数据处理,这些处理工作有严格的逻辑规律,而且数据的处理过程中几乎不需要进行人机交互。SSProcess是EPS脚本语言固有的对象,是与EPS平台交互的主要入口对象。SSProcess决定着EPS脚本的功能与用途。EPS平台下的菜单功能很多为用户所熟知,可以说EPS平台下菜单的大部分功能都是SSProcess所具备的功能。通过菜单我们通常需要用鼠标这里那里那里这里操作个不停,但如果这一系列动作,只要你能组织好作业脉络,然后用脚本语句把它们串起来,SSProcess就帮你大显神通了。

脚本程序肯定会为作业团队提高效率,节约了劳动时间与生产成本,下面是EPS脚本的作用与功能:

(1) 编辑操作:生成点、线、面、注记对象;删除点、线、面、注记对象;

修改对象的基本属性和扩展属性。

(2) 地模处理:创建三角网、格网;删除三角网、格网;生成三角网外接多边形;转换三角网为图形;生成等高线。

(3) 工程管理:关闭当前打开的EPS EDB数据库;打开已存在的EPS EDB数据;创建EPS EDB数据。

(4) 数据检查:读取检查记录;删除检查记录;保存检查记录;添加检查记录;显示检查结果。

(5) 数据库操作:添加表记录;删除表记录;修改表记录;执行SQL语句;

输出图形属性。

(6) 数据整理:合并相近的两个注记、两个地物;合并与线相近的点地物;

选择集对象符号识别;对象处理器;修复选择集对象的非法高程值。

(7) 数据转换:执行数据导入;执行数据导出。

(8) 图幅与打印:设置当前图廓。

(9) 系统设置:设置比例尺;设置系统表。

(10) 选择集操作: 设置或清空选择;修改所选择对象的属性;删除选择对象。

(11) 坐标转换: 坐标换带;七参数转换。

3.2 EPS脚本编写约定

EPS三种不同的约定,它们分别描述了:事物如何命名、程序看上去是什么样子以及怎样注释程序。下面是这三种不同类型约定的详细解释:

命名约定(Naming Convention)描述如何定义程序中的变量和过程,从而方便地指出每个变量和过程的精确涵义;格式约定(Formatting Convention) 描述程序采用怎样的风格,包括各层的缩进格式;注释约定(Commenting Convention) 描述怎样组织程序的全过程和每个过程的说明。

(1) 使用命名约定

命名约定描述的是怎样给常量、变量、对象和过程命名。使用该约定的主要目的是为了清楚地表达常量的意义、变量所存储的数据类型、对象的用途及过程所做的工作等。你应该采用命名约定,因为这可使你通过命名得知对象是什么或做了什么,而不必到程序的其他地方查找该对象的定义。

1、常量命名

常量是一个存放不变值的变量,光速就是一个常量,其他如圆周率Pi、水的沸点都是常量。常量的每—个字母均需大写,常量中的每个词之间用下划线分隔。例如,MAX_TRIES是定义了一个某时间最多可重试次数的常量,DAYS_OF_WEEK是定义了—个星期中有几天的常量。

2.变量命名

变量存放的是可变数值,你可以定义一个变量用于存放用户的姓名,你还可以利用变量从1到10计数。这些命名约定使你明确地表示创建该变量的目的及其数据类型。

3、子过程和函数命名

子过程是你所编写的并赋与一定名称的一段代码,子过程中代码的执行是通过调用 (calling)子过程名完成的。你可以根据需要在一个程序中任意次或在任意多个地方调用一个子过程。函数与子过程极为相似,只是它将返回一个值。

(2) 格式约定

程序中的最外层代码缩进四个空格。每—个嵌套的代码块 (如条件选择语句:If ...Then...Else ...End if ) 缩进四个空格。不要在程序中使用TAB来缩进代码块---应使用空格。TAB键的外观依赖于你所使用的编辑器。TAB键在各人的计算机上看起来并不一样,并么在许多场合看起来十分混乱,而空格在每台计算机上看来都是相同的。

(3) 注释约定

注释是你加入到程序中的一段文本,它不做任何事情,它存在唯一的目的就是解释一段不太直观的程序。每段注释从单引号’开始。VBScript将忽略掉单引号以后至行尾的全部内容。你可以用单引号注释一行,也可以在一行代码之后加一注释。

4 示例

EPS脚本可以实现很多功能,以下是“房屋内高程点检查”脚本的具体代码,该脚本剔除了人工检查的繁琐,大大提高了作业效率。

Sub OnClick()

SSProcess.RemoveCheckRecord"" ,""

'选择高程点

SSProcess.ClearSelection

SSProcess.ClearSelectCondition

SSProcess.ClearSelectConditionGroups

SSProcess.SetSelectCondition "SSObj_Code", "==", "72010011"

'判断是否落在房屋线内

SSProcess.SetSelectCondition "{OuterObj}", "=", "房屋范围线"

SSProcess.SetSelectConditionGroup "房屋范围线", "SSObj_Code", "==", "31030131"

SSProcess.SelectFilter

Geocount = SSProcess.GetSelGeoCount

'SSProcess.UpdateSysSelection 1

For i =0 To Geocount -1

GCDID = SSProcess.GetSelGeoValue(i, "SSObj_ID")

SSProcess.GetSelGeoPoint i, 0, x,y,z,ptype,name

'加入到检查列表

SSProcess.AddCheckRecord "必填属性检查" ,"异常高程点检查", "自定义脚本类->脚本编程检查","落在房屋内高程点的ID:" & GCDID& ",高程:" & z, x, y, "0", "0", GCDID, ""

Next

SSProcess.ClearSelection

SSProcess.ClearSelectCondition

SSProcess.ClearSelectConditionGroups

End Sub

5 问题与建议

以上可知,EPS脚本着简单易用、高效节能的特点。笔者从多年的从事测绘行业的实战经验出去,探讨了EPS脚本开发的基本特点、常用语法以及相关函数的调用,希望能对广大从事相关行业的读者带来一定的帮助。

参考文献

[1] 吴信才,郭际元,郑贵州,王琪,刘修国.地理信息系统设计与实现[M].北京电子出版社,2002.

[2] 蒋宇清. 新一代嵌入式脚本语言PHP[J]. 计算机时代 , 2000,(10)

[3] 刘超. 嵌入式风云[J]. 微电脑世界 , 2002,(10)

注:文章内所有公式及图表请以PDF形式查看。

上一篇:建筑工程中需处理好给排水设施 下一篇:高频感应钎焊聚晶金刚石复合片对比试验