摘要: 在ArcGIS的Desktop中使用了Python之后,再谈AML已经有些过时了。但是不管怎样,AML在GIS的发展过程中,应该是具有重要的作用,而且AML本身也有其精妙之处,在一些应用之中,依然有其大展身手之处。 一、 AML介绍 AML是Arc Macr...
在ArcGIS的Desktop中使用了Python之后,再谈AML已经有些过时了。但是不管怎样,AML在GIS的发展过程中,应该是具有重要的作用,而且AML本身也有其精妙之处,在一些应用之中,依然有其大展身手之处。
一、 AML介绍
- AML是Arc Macro Language(ArcInfo宏语言)缩写,适用于任何ArcInfo环境(Unix或Windows等)。
- ArcInfo AML提供AML命令与AML菜单。通过前者将单一功能的ArcInfo命令组织成解决复杂的地理问题的程序。后者将AML命令集成到简单易用的用户图形界面。
- AML是一种逐行解释的编程语言。这意味着,不管您在ArcInfo命令提示符下还是通过AML程序文件来执行AML命令,它们都是一行一行地边解释边执行。
- AML简单易学,非常适合于编写进行地学处理的应用程序。
二、 AML功能
- 具有批处理功能,节省运行时间,可以将经常使用的ArcInfo命令组合成一个AML文件。通过运行AML文件实现ArcInfo命令批处理。
- 实现经常运行、高度重复的GIS任务的自动化,并且具备较高的运行效率。没人愿意在命令提示符下键1000次build cover poly。
- 创建专用程序,用于解决专门应用。如在互联网上可以找到一些免费的水文方面的AML代码,如watershed.aml等。
- 建立交互式菜单,提示并验证用户输入。进行流程控制,减少键入错误等。
- 维持重复任务的一致性。保证多次重复的任务在每一次运行时都得到正确的执行。
- 将工作流程与方法保存到文档,可用于下一次的重复利用。
三、 AML综览
- 一个AML程序是一组事先定义好的命令,用于完成某一个专门目的。
- AML程序是纯粹的ASCII文本文件,包括了让ArcInfo执行的指令。
一个AML文件可能包括以下几个方面:
- ArcInfo命令
- 注释
- 指示符(Directive):以&打头的命令
- 函数
- 变量
有两种方法可用于创建AML程序。
- 方法一,用任何一个文本编辑器如记事本、写字板等。
- 方法二,使用专门的AML命令自动记录执行的ArcInfo命令,并将这些命令保存进一个AML文件。
1) &watch;命令:在ArcInfo环境里将您的动作记录到监视文件 如:
&watch; my_record.txt
…
&watch; &off;
2) &cwta;命令:该命令将监视文件转换成AML文件 如:
&cwta; my_record.txt my_aml.aml
- AML程序经常是以.aml为扩展名的文本文件。AML可以保存成其它扩展名,但此时在运行该AML时,必须指定该AML的扩展名。如:&run; myaml.txt
- 使用&retun;指示符结束一个AML程序。
- 运行一个AML程序 Arc: &run; steromate.aml 或Arc: &r; steromate.aml 或Arc: &r; steromate
- AML程序可在任何模块里实现与其它模块的交互。 比如:Arc: workspace roads Arc: &workspace; roads
第一行是正常的ArcInfo命令,位于Arc模块;第二行是AML命令,在命令提示符下被AML解释器解释,可用于任何模块。比如在ArcEdit模块内,执行第一行是无效的,但可以正常运行第二行。*在AML程序里可以调用另外AML例程。
四、 帮助
- 使用&usage;指示符,得到AML的简单提示
- Arc: &usage; &terminal; Usage:&termal; {&cursor;|&table;|&mouse;|&keypad;}
- &commands;指示符
Arc:&commands;,列出所有的AML指示符与函数 Arc: &commands; &c;,列出所有以c打头的指示符 Arc: &commands; c,列出所有以c打头的函数。
- 通过ArcDoc查找AML指示符或函数的详细帮助
- 最好的AML参考书是,ESRI, 1997. Arc Macro Language for Unix and NT: developing Arc/Info Menus and Macros with AML. (ISBN 1-879102-18-8)
五、 语言要素及语言
注释语句
- 注释语句用于描述AML命令的功能
- 注释语句不被AML解释器解释
- 每行注释语句以/*打头
AML指示符
- 指示符是指那些AML命令,用于指示AML处理器如何执行一个任务、设置一个变量或改变序列执行的次序。
- 指示符语句以&打头
- AML指示符可在任何模块里执行(Arc, ArcEdit, Tables等)
- 每个指示符关键词以&分隔
- 例子 &echo; <&off;|&on;|&brief;>(是否在屏幕上回显AML命令)
&workspace;(改变当前工作空间,类似于Arc下的workspace命令)
&run;(运行一个AML)
&return;(AML文件结束语句,解释器返回上层调用处的末端)
&show;(列出指来参数的当前值)
&commands;(列出所有的AML指示符与函数)
&usage;(列出AML指示符或函数的使用语法)
&stop;(挂起一个AML文件,执行权返回上层调用)
&type;(在屏幕上打印信息)
&system;(&sys;)(发送一个操作系统命令)
&args;(接收输入参数)
&pause;(暂停AML的执行,直至用户输入&return;)
&atool;(Atool路径)
&workspace;(改变当前工作空间)
&describe;(创建一组相关于数据集结构的数量)
&call;(调用其它AML子例程)
&routine;(子例程)