没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1、AVENUE 基础
1.1 AVENUE 简介
ArcView 提供了显示、浏览、查询与分析地理数据的方法。AVENUE 是 ArcView 面向对象的程序设计语言。ESRI
公司开发 AVENUE 的目的是为用户提供按自己的要求建立 ArcView 应用程序。用户编写的 AVENUE 程序可以在
任何具有 ArcView 的平台上运行。ArcView 自身的某些部分以及许多直接服务于用户的功能都是用 AVENUE 实现
的。
利用 AVENUE 可以做如下工作:
① 定制 ArcView 的界面:可以去除不需要的控制单元,改变控制单元的排列及显示形式。如我们可以汉化
ArcView 的界面。
② 开发新的功能:用户可以通过 AVENUE 开发 ArcView 没有提供的功能。
③ 连接 ArcView 和其它应用程序:在工作中可能同时用到几个软件,如利用 WORD 进行文字处理,利用 EXCEL
管理数据,利用 ArcView 分析地理数据。有时侯需要在软件之间进行数据交换,如利用 ArcView 更新 EXCEL 数
据,执行其它的应用程序等。
④ 按用户的要求开发应用系统:根据用户要求,包括功能、界面、人机对话方式等开发应用系统。
1.2 Script (脚本)编辑器
ArcView 提供了 Script (脚本)编辑器用于建立、编译和修改 AVENUE 程序(即 Script)。与其它 ArcView
文档一样,Script 编辑器也有一套自己的菜单、按钮和工具。
ArcView 中的每一个标准菜单、按钮和工具都有相应的 Script,这些 Script 称为系统 Script。通过 Script 编辑窗
口可以打开和编辑 Script。可以通过对系统 Script 的修改来产生新的满足要求的 Script,如我们希望在显示某一
特征时同时进行放大,可以把放大工具的 Script 文件增加到显示属性信息工具的 Script 中。任何 Script 都是与项
目文件一同存储的,但也可以把它存储为文本文件。
Script 输入
Script 编辑器提供各种控制单元,帮助用户创建 Script 源代码。源代码的输入有三种方式:
从键盘输入:可以将 AVENUE 的语句直接从键盘输入到 Script 窗口。ArcView 提供了方便编辑操作的按钮,可以
实现文本内容的剪切、粘贴等。
装载文本文件:用户可以使用该按钮 选择某个文本文件,并将它插入到 Script 窗口中。被装载的文本文件可以用
任何一种文本编辑器编辑。
拷贝已有的 Script:当用户点击该按钮 系统将打开 Script 管理器,选择需要拷贝的 Script,该 Script 将插入到
Script 编辑窗口中。
编译和运行 Script
点击编译(Compile)按钮 ,AVENUE 将检查源代码的语法错误。如果没有错误,用户就可以执行该 Script。如
果 Script 语法有错,用户必须根据错误信息,修改并再次编译,一直到编译没有错误。
点击运行(Run)按钮 ,将执行经编译的 Script。以下是一个 Script 及运行后的结果。
Script 的调试
Script 编辑器提供了一些调试按钮,用于帮助用户调试 Script 代码。
逐步追逐调试按钮 : 当 Script 已经正确编译,利用该按钮可以使用户逐步跟踪 Script 的运行。
断点按钮 :可以通过设置断点中止 Script 的正常运行。如果 Script 在编译过程中出错,光标会停留在 Script 出
错的地方。这时。可以在此行之前设置一个断点,然后编译并运行 Script,并在断点处检查变量的值。该按钮是开
关按钮。
显示变量值的按钮 :可以显示全局和局部变量的值。
1.3 事件(Events)与 Script 的运行
当用户点击一个按钮、在某个文档窗口使用一个工具或更新一个文档,都称为事件的发生。AVENUE 支持三种类
型事件:点击(Click)、应用( Apply)和更新(Update)。
1
点击:当用户点击一个按钮、一个菜单子项或工具时,就发生了一个点击事件,这个事件会立即引起相应的 Script
的执行。
应用:当用户在某个窗口中使用某个工具,就发生了一个应用事件。同样,该事件也会立即引起相应的 Script 的
执行。
更新:当文档的状态发生变化(例如,向视图中加入主题,激活表格中的某个字段)时,就会发生一个更新事件。
不同的控制单元识别不同类型的事件。按钮和菜单子项识别点击和更新事件。工具识别应用、点击和更新事件。菜
单仅识别更新事件。
菜单菜单子项按钮工具 更新点击点击点击 更新更新应用 更新
在 ArcView 应用程序的总体设计和建立符合用户需求的 ArcView 界面时,必须考虑到这些差异。例如,如果编写
的 Script 需要用户从视图中选择时,Script 必须与某个工具的 Apply 事件相联。
1.4 定制对话框(Customize Dialog Box)
定制对话框提供了可视化的框架,用户可以利用它,按照自身的要求安排 ArcView 的菜单、按钮、和工具。
Arcview 提供了两种方法打开定制对话框:从项目的 Project 菜单中选择 Customize 项,或者两次点击按钮或工
具条的空白区。
双击空白处
定制对话框有 6 个部分:
文档类型(Document Type) 用户可以在此选择具有所需控制单元的文档类型。
控制单元的分类(Control Category) 在此选择用户所需的控制单元集合。用户作出选择后,对应的控制单元集
合就会显示在控制单元编辑器(Control Editor)。
控制单元属性列表(Properties List) 与选中的控制单元及当前的设置相关的所有属性信息显示在控制单元属性
列表中。通过属性列表可以修改和设置菜单、按钮、工具的事件响应程序及属性信息。
Reset 按钮 “Reset”按钮用于将当前文档类型重新设置为初始的安装设置。初始设置存在 ArcView 的安装目录的
ECT 子目录下的 default.apr 文件中。
Make Default 按 钮 使 用 “Make Default” 按 钮将 当 前 文 档 设 置 为 用 户的 缺 省 设 置 。它 替 代用 户 家目 录 下
default.apr 文件。
控制单元编辑器中有一系列的按钮,它随着文档类型和控制单元的不同而不同。然而有三个按钮保持不变 ,
New、Separator、Delete。New 按钮是新建一个控制单元,Separator 是分割不同类的控制单元,Delete 是
删除控制单元。下面以 View 文档为例来介绍控制单元编辑器的操作。
上图是《上海市河网演变系统》的一个界面,是通过定制对话框用户化和汉化的结果。汉化操作是对控制单元
Label 属性修改的结果,由于 Arcview 地理信息系统软件的内核支持双字节,所以只需在 Label 中输入汉字即可。
首先选中“File”,双击其 Label 属性,输入“文件”,如图所示,确定后就可得到上图所示的结果。
在《上海市河网演变系统》中没有 Graphics 菜单,我们可以通过两种方法达到这一结果。一种是选中此菜单按
Delete 钮删除,这样同时删除其子菜单,且无法恢复,因此一般不推荐此方法;第二种是选中此菜单修改其
Invisible 属性,把“False”改为“True”即隐藏此菜单,这种方法可以再次修改 Invisible 属性而恢复原先的情况。
New 按钮可以在选中的控制单元之后创建一个新的控制单元。选中 Graphics 按 NewMenu,则产生一个新的菜
单,在其 Label 属性中输入“图层”,选中“图层”按 NewItem 生成子菜单。如图所示:
以上是对菜单的操作,对按钮(Buttons)和工具(Tools)的操作与之相类似。不同的是按钮有一个 Icon(图标
属性),双击弹出图标管理器,从中选择或导入所需图标。如图所示:
至于快捷菜单(Popups)除了本身响应右击事件外,与一般菜单的设计完全相同。
建立 Script 与控制单元的关联
建立 Script 与控制单元关联的方法是双击控制单元属性列表中的事件属性,并从出现的 Script 管理器中选择当某
个事件发生时需要执行的 Script。
一个 Script 可以同时与多个控制单元建立关联。例如,诱发更新事件(如使控制单元生效或无效)的 Script 可以
2
为多个控制单元所共享。
建立 Script 和项目的关联
在项目属性表中可建立 Script 与项目的启动(Startup)与关闭(Shutdown)事件的关联。当项目文件打开时,
StartUp 事件执行一个 Script ,而关闭项目文件时,ShutDown 事件执行另一个 Script。这类事件可用于项目的
环境初始化,例如,数据库联结,删除临时文件或表格。
视图、表格、图表等其它一些文档打开或关闭时也执行 Script。
2 AVENUE 是如何工作
2.1 理解对象
AVENUE 是面向对象的程序设计语言。面向对象程序设计实际上是把复杂的问题分解成很多单元(称为对象),
这些对象是封装的,包含了数据和数据操作的代码。编程人员不需要去了解对象内部情况,如果要操作这些对象,
只要发送相应请求。如要制造汽车,不需要了解汽车如何生产,只要发送命令。
对象有特性(properties)、动作(Actions)和状态(States)。如汽车,型号、颜色、车门数等特性;有启动、
停车、左转、右转等动作;有方向(北)、速度(60mph)等状态。
一个对象可以以很多方式与其它对象联系。一个对象可以包含其他对象,如汽车可以有音响、方向盘和座位等。一
个对象也可以利用其他对象,如汽车使用燃料运行。对象也可以被其他对象利用,如某人驾驶汽车。
在 ArcView,我们操作的每一事都是对象,打开一个视图,我们就操作视图对象;增加一个主题到视图,我们就操
作主题对象;增加按钮到界面,我们就操作按钮对象;利用用户界面的操作实际上就操作 ArcView 对象。面向对
象的编程就是操作对象。
在 ArcView 中,除了项目、视图和主题是对象外,还有一些我们原先可能不认为是对象,如数字和文本,Nil—空
对象,布尔值。
具有相同特性的对象被组织成类。在某一类中的所有对象被定义成有相同特性,同一类中产生的对象是类的例子
(instances),如图中下面两辆车是车这一类型的例子,具有车这个类型的特性(如,有轮子、车门等)。同样
在 ArcView,View1、View2、View3 都是 View 这一类型的例子。类分抽象类和具体类。抽象类没有直接的例子,
它仅用于组织所有下级类共有的特性。具体类有自己直接的例子。
类可以通过层次图(class hierarchy)进一步组织,定义类之间关系。类关系可以以三种方式描述:继承、集合
和关联。演示这些关系的一种方式是通过对象模式图。对象模式图的基本组成是方框(表示类)和线(连接类显示
类之间关系)。通过分析类模式图,我们可以类及对象之间的关系。
继承表示一个类型,轿车是汽车的一个类型。汽车是一个超类,定义了所有汽车的一些特性。子类可以继承超类定
义的特性。通过继承,层次中的特性只需要定义一次,没有继承的特性在类本身中定义。继承的符号是一个开放的
三角形。
汽车
轿车 卡车 救护车
同样,ArcView 中,视图是文档的一种类型,视图继承文档的特性,如包含在一个窗口,有图形用户界面等,但它
也定义了自己的特性,如视图有主题和内容表。
集合表示组成关系,一辆汽车包括一个发动机,四个轮胎,一个汽车音响,座位。当然,一辆有很多东西组成,在
示意图显示所有内容是不可能的。在 ArcView 关系图上,实际上只显示最重要的关系。集合的符号是菱形。另外,
一个实心圆表示不止一个,空心圆表示可选。
关联表示类之间物理上或概念上的联系;汽车用汽油来运行,同样,汽车需要人来驾驶。单一线指示一个相关对象。
对象模式图显示了类之间的关系。一旦理解了这些关系,就可以操作属于某一类的对象。如放大音响声音,首先确
定音响所在的汽车,然后确定音响进行操作。同样,通过我们要控制视图中的一个主题,首先要确定包含这个主题
的视图。当然,关键是确认正确的对象,要求它做一些它所知道如何做的事情。例如,我们不能要求汽车座位对象
放大声音,但我们可以要求它倾斜(只要它能倾斜)。
汽车
发动机 轮胎 汽车音响 座位
3
调音器 磁带
2.2 对象请求(Requests)
在 ArcView 中,对对象的操作实际上是对对象提出请求。当我们按一个按钮或点击菜单,ArcView 将发送请求给
对象。一个请求可能将产生一个新的对象,如一个新的主题;也可能提取一个对象的信息,像当前视图名;也可能
改变一个对象的属性,如改变主题名或使它成为活动主题。
大多数请求是提取或修改已有的对象。这些请求称为例子请求。如显示或隐藏图例。另一种请求称为类请求,类请
求一般是产生新的目标类对象或返回影响类的事情信息。如增加一个主题对象。
在 AVENUE 中,定义了很多类以及对这些类的请求,对象的请求实际上是按照它所属类的请求方式进行操作,如
汽球可以定义一个类,不同的汽球有共同的特性,当我们用针刺汽球,汽球就会爆炸;当我们松开汽球,汽球将会
升上天。这些请求及结果在类中已经定义,对具体对象的请求将产生相应的结果。
不同的类支持不同的请求,如视图可以有放大请求,但数据表不能理解这个请求。
AVENUE 请求命名一般是以动词开始指示它的动作,如,GetProject、FindScript、AddDoc 和 Setvalue,这里
Get、Find、Add 和 Set 是动作,Project、Script、Doc 和 value 接受动作。下表显示了一些关键词以及它们的
作用
关键词 作用 例子
Add 增加对象 aView.AddTheme
As 对象类型转换 aNumber.AsString
Can 确认对象是否可操作 aTheme.CanEdit
Find 搜寻指定对象 aView.FindTheme(“Roads”)
Get 返回一个参考给对象 aView.GetThemes
Has 指示对象是否有指定的条件或状态 aScript.HasError
Is 返回“真”或“假” aButton.IsVisible
Make 产生一个新例子 View.Make
Return 产生一个新对象并返回一个参考给它 aFileName.ReturnDir
Set 给对象赋特征 aButton.SetIcon
2.3 对象请求语句
Avenue 语句包含两个部分:对象和对这些对象提出请求。其中,请求可以带参数,这些参数使请求更加明确 。
Avenue 语句执行的结果是产生一个新的对象。
用一个赋值符号(=)可以将产生的对象赋给一个变量。
如 theName = theView.GetName
对象请求的标记方式有三种:后缀式标记、内缀式标记和前缀式标记。
后缀式标记:这是对象请求最常用的方法,是在对象和请求之间加一个圆点,如 theView.Print,请求在对象之后。
内缀式标记:数字对象请求的标记,请求放在数字对象之间,如 25+15。
前缀式标记:这种标记方式用于布尔对象,请求防在对象之前,如 Not True。
2.4 变量
许多程序设计语言要求在使用变量之前必须确定变量的数据类型(例如:整数、浮点数、字符串)。AVENUE 的
变量不需要事前定义,也不需要事先确定数据类型。变量定义是通过一个赋值语句来完成,变量出现在赋值号
(=)的左边。
例如:
Variable = Statement
TheNumber = 45
AString = “abcdefg”
4
变量名必须以字母开头,其中可以包括数字。变量名的长度没有限制。AVENUE 不区分大小写,但采用一定的大
小写规范有助于程序的清晰和保持统一的风格。
AVENUE 编译器会自动识别变量名与类名和请求的冲突。
以下划短线(_)开头的变量称全局变量。一旦定义了全局变量,在应用程序处于活动状态时,任何项目的任何
Script 均可使用这些变量。全局变量会占用很多内存,因此,如果在一个项目中需要用到全局变量,一定要在项目
关闭后使用 av.RemoveGlobalVars 删除全局变量,否则全局变量仍然占有分配给它的内存空间。
2.5 类和请求在线帮助
对于初学者来说类和请求在线帮助可能用处不大,但是对于 Avenue 编程人员来它是不可缺少的。因为它包含了
Avenue 所有的类和请求,内容丰富,而且通过目录和索引可以方便的获取所需信息。如果你想知道视图类有那些
请求,那么你只要打开帮助,在索引中键入“view”按回车,就可得到所有有关视图的请求。
3Avenue 的组成要素
3.1 字符串
有两种方法可以产生字符串对象:
将双引号括起来的字符串赋给一个变量,如 Var = “Shanghai”;或将请求返回的字符串对象赋给一个变量,如
Var = theView.GetName。
用“+”或“++”请求可以拼接字符串。其中,用“++”时串之间包括一个空格。如:
Var1 = "Sahnghai"
Var2 = "China"
Var = Var1 ++ Var2
MsgBox.Info(Var,"")
Avenue 有一些特殊的字符串,NL、TAB、CR,分别表示换行符、制表符和回车符。
可以使用“=”、“ <”、“ >”、“ < =”、“ >=”、“ <>”等比较算符进行字符串的比较,在条件语句中常用到这种
比较。
用关键词 As 打头的转换请求可以将字符串转换为其它类,例如,可以用 AsNumber 这个请求将一个字符串转换
为数字。
还有许多其他的字符串操作请求,可以用这些请求实现大小写转换、互换字符串等。
3.2 数字
数 字 可 以 直 接 赋 给 一 个 变 量 , 也 可 以 通 过 请 求 赋 值 。 Avenue 所 支 持 的 标 准 运 算 包 括 + 、 - 、 * 和 / 、
Max、Min、Cos、Sin、Ln、Sqrt、Mod、Round 等。
+、-、*和/等请求采用标准的数学标记方式(中缀式标记)。但 Cos、Sin、Tan 和 Round 等以通用标记方式表
示。
TheNumber = 7 +12 TheNumber = 35.Cos
除非使用括号,否则 Avenue 算子的优先级是从左到右。如:
x = 2+3*3 x=15 x = 2+(3*3) x=11
利用以关键字 As 打头的请求,可以将数字转换为其他对象。例如,三角函数需要以弧度作参数,这时就可以使用
AsRadians 和 AsDegrees 两个请求实现度数与弧度之间的变换。
利用格式化(formatting)字符串可以控制数字的格式。例如“D.DD”使数字的格式在小数点左边至少有一位,而
在小数点右边则必须有两位数字。
3.3 布尔对象
布尔类有两个例子:True 和 False。可以直接将 True 或 False 赋给一个变量,如:
done = false
也可以利用请求的返回值,如:
status = aTable.HasSelections
5
剩余45页未读,继续阅读
资源评论
w32784616
- 粉丝: 2
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功