1、浅谈基于 EPS开发城镇分类面积表 摘要:本文讨论了 EPS 软件的各种技术与编制原理;陈述了基于 EPS 开发城镇分类面积表的总体流程图;综合分析了 EPS脚本代码编写的各种原理与约定;最后,文章给出了基于 EPS开发城镇分类面积表的部份代码供读者参考,并分析总结了基于 EPS 二次开发的利与弊。 开题报告 关键词:清华山维;城镇;分类面积;脚本编写 1.前言 EPS 软件是北京清华山维新技术开发有限公司研发的一款专业面向测绘生产及基础地理信息行业的软件。本软件从测绘与地理信息角度构建数据模型,综合 CAD(计算机辅助设计,图形绘制平台)技术与 GIS(地理信息系统,空间数据管理)技术,以数
2、据库为核心,将图形和属性融为一体,从数据生产源头支持测绘的信息化转变。 EPS 软件支持各种测量成果数据,在外业采集时,测绘成果可随手入库,需要编辑更新时可随时下载,不需要转换,只是迁移,用户可方便地实现测量外业、内业、入库一体化。平台系统采用全新架构,进而实现信息化测绘、管理与更 新一体化,建库 GIS 与出图一体化,用一个平台解决测绘各种问题。软件所支持的测绘数据包括控制测量、地形测量、地籍测量、管线勘测、工程放样、沉降观测、航测调绘、图纸影像等多种类型 1-2。 从 EPS2008 版开始,清华山维在 EPS 平台中加入了 VBScript( Visual Basic Script),作
3、为 EPS 平台的一种用户开发工具。 VBScript 是微软开发的一种脚本语言,可以看作是 VB 语言的简化版,与 VBA 的关系也非常密切。它具有原语言容易学习的特性,并继承了 JavaScript的跨平台的特性。 VBA是 Office 中包含的用来扩展 Office 功能的 Basic 语言。(注: Basic 语言是高级程序设计语言的一种,简单易学,英文全名是 “Beginners All-Purpose Symbolic Instruction Code” ,中文意思是 “ 适用于初学者的多功能符号指令代码 ” 。) VB 是在早期的 Basic 语言基础上发展而来的,保持了原来
4、Basic语言简单易学的特点,同时增加了结构化和可视化程序设计语言的功能。 总结大全 2.开发流程图 基于 EPS 开发城镇分类面积表的总体流程图如下: 图 1 EPS 开发城镇分类面积表的总体流程图 3.脚本代码约定 命名约定 (Naming Convention) 描述如何定义程序中的变量和过程,从而方便地 指出每个变量和过程的精确涵义;格式约定 (Formatting Convention) 描述程序采用怎样的风格,包括各层的缩进格式;注释约定(Commenting Convention) 描述怎样组织程序的全过程和每个过程的说明。 3.1 命名约定 命名约定描述的是怎样给常量、变量、对
5、象和过程命名。使用该约定的主要 目的是为了清楚地表达常量的意义、变量所存储的数据类型、对象的用途及过程所做的工作等。你应该采用命名约定,因为这可使你通过命名得知对象是什么或做了什么,而不必到程序的其他地方查找该对象的定义。 下面所述 VBS 命名约定是匈牙利命名法的一小部分(匈牙利命名法是以Charles Simonyi 的国家命名的,他提出了这种命名风格来提高 C 语言和Windows 程序的可读性)。 常量命名 常量是一个存放不变值的变量,光速就是一个常量,其他如圆周率 Pi、水的沸点都是常量。常量的每 个字母均需大写,常量中 的每个词之间用下划线分隔。例如, MAX_TRIES 是定义了
6、一个某时间最多可重试次数的常量,DAYS_OF_WEEK 是定义了 个星期中有几天的常量。 变量命名 变量存放的是可变数值,可以定义一个变量用于存放用户的姓名,还可以利用变量从 1到 10 计数。这些命名约定明确地表示创建该变量的目的及其数据类型。 子过程和函数命名 子过程是所编写的并赋与一定名称的一段代码,子过程中代码的执行是通过调用 (calling)子过程名完成的。可以根据需要在一个程序中任意次或在任意多个地方调用一个子 过程。函数与子过程极为相似,只是它将返回一个值。 函数与子过程的不同之处在于它可以返回一个值,为了恰如其分地反映一个函数的返回值,需要给函数名中增加一个标识。例如,提示
7、用户的名字并把该名字作为一个字符串返回的函数可以这样命名: strGetLastName (),这意味着取得用户的名字并以字符串值的形式返回;一个在提供日期后返回是星期几的函数可以这样命名: intDayOfWeek(),表示返回这一天星期几的整数值。这种约定可方便地比较变量类型与函数所返回值的类型。例如,如果声明了一个变量叫作 intAge,然后将 strGetName 函数的返回值赋给它,那么会注意到,这是将字符串 (str)值赋给了整型变量 (int);同样,如果将 intGetNumber函数的返回值赋给 intAge变量,会发现这样正好类型匹配。 3.2 格式约定 程序中的最外层代码
8、缩进四个空格。每 个嵌套的代码块 (如条件选择语句: If Then Else End if ) 缩进四个空格。 不要在程序中使用 TAB 来缩进代码块 应使用空格。 TAB 键的外观依赖于你所使用的编辑器。 TAB 键在各人的计算 机上看起来并不一样,在许多场合看起来十分混乱,而空格在每台计算机上看来都是相同的。 3.3 注释约定 注释是加入到程序中的一段文本,它不做任何事情,它存在唯一的目的就是解释一段不太直观的程序。每段注释从单引号 () 开始。 VBScript 将忽略掉单引号以后至行尾的全部内容。可以用单引号注释一行,也可以在一行代码之后加一注释。 每个过程的开始都要有一个简短的注释
9、 (注释部分 )来描述过程的作用。不要描述细节它是怎样工作的 ),因为这些细节经常变化,这将使注释的更新非常困难。实际上,只需描述过程的 作用。换句话说,当写一段注释时,把一段过程设想成一个黑匣子,为黑匣子提供输入数据,黑匣子提供输出结果,而不必在意过程是怎样发生的;所有需要际做的就是描述输出结果。 4.部份代码 基于 EPS 开发城镇分类面积表的部份代码如下: Const XZQAttrTable =“行政区面属性表 “ Const XiangAttrTable =“街道面属性表 “ Const CunAttrTable =“街坊面属性表 “ Const DLTBAttrTable =“地类
10、图 斑属性表 “ 作文 Const ZDAttrTable =“宗地面属性表 “ Dim DLDM1 DLDM1 =Array(“01“,“02“,“03“,“04“,“05“,“06“,“07“,“08“,“09“,“10“,“11“,“12“) Dim xlsApp, xlsBook, xlsSheet, xlsFileName Function SetActiveSheet( sheetName ) Set xlsSheet = xlsB t.Activate End Function 设定活动工作表 Function SetActiveSheetByIndex( sheetindex
11、) Set xlsSheet = xlsB End Function 复制 Function CopySheet(srcSheetName, tagSheetName) Dim xlsSheet0, xlsSheet1 Set xlsSheet0 = xlsB xlsSheet0.Copy xlsSheet0 Set xlsSheet1 = xlsBName = tagSheetName End Function 拷贝表格 Function CopySheetTable( beginRow, count, pageRowCount ) For i=0 To count-1 xlsShlect xlsw rows = row & “:“ & row xlsSh End Function 5.小结 总之, EPS平台下的 VBS脚本编写需要熟悉了解 VBS本身的一些语法规则,同时也要了解 EPS 平台所提供的 SSProcess 对象所具有的一系列用于和 EPS平台交互的函数和方法,才能自如写出自己所要的功能。 参考文献 : 清华山维 EPS2008 使用手册 吴信才,郭际元,郑贵州,王琪,刘修国地理信息系统设计与实现fM1北京电子出版社, 2002 李庆扬,王能超,易大义数值分析 fM华中科技大学出版社, 2004