地理处理框架
地理处理框架是指一组用于管理和执行工具的窗口和对话框。本文档将重点介绍此框架隐含的高级概念和想法,而不是使用此框架的技巧。
地理处理隐含的核心理念是将您的想法轻松快捷地转变为可执行、可管理、可修改、可记录且可与 ArcGIS 用户社区共享的新软件。此处,软件表示的是可以指示 ArcGIS 执行您所要进行的操作的事物。例如,地理处理模型便可视为通过名为“模型构建器”的简单易用的可视化编程语言构建的新软件。
本部分重点阐述的是这样一种概念,即地理处理是创建新实用软件的一种方法。这样做的目的是希望您对于如何与为何使用地理处理产生更广泛且更深刻的理解。
要创建任何类型的新软件,都需要具备两个重要元素:
- 用于对系统中所捕获数据执行操作的正式语言。
- 用于创建、管理和执行基于此语言的软件的框架。其中包括编辑器、浏览器和文档工具等内容。
地理处理的语言即为各工具的集合。而地理处理框架则是用于组织和管理现有工具进而创建新工具的较小的内置用户界面集合。地理处理快速浏览中已展示了此框架的基本组成部分,它们由以下内容组成:
- 查找和执行工具的搜索 窗口以及用于浏览到工具箱以管理或执行对应工具的目录 窗口
- 以交互方式填写工具参数并执行工具的工具对话框
- 通过输入工具的参数执行该工具的 Python 窗口
- 将多个工具按顺序连接在一起的模型构建器 窗口
- 创建脚本然后将其添加到工具箱的方法。
地理处理模型和模型构建器
通过工具对话框可执行单个工具。您可将其视为通过编程语言执行单个指令。虽然执行单个工具通常非常实用,但只有将多个工具串联在一起,然后将一个工具的输出送入另一个工具(如同一种编程语言一样),才能显示出本系统的优势。
在地理处理框架中,通过模型构建器 窗口便可将地理处理语言中的各个要素(工具)按顺序连接在一起从而轻松快捷地将您的想法转变为软件。意识到模型属于软件这一点非常重要,因为它们可以指示计算机执行某些任务。其编程语言是可视化的(如您在模型构建器中所见),而不像传统编程语言那样是基于文本的。
这里最需要注意的是:模型是工具。它们的行为同系统中其他工具一模一样。您可在对话框窗口或 Python 窗口中执行它们。由于模型是工具,因此模型可以嵌套使用。实际上,随 ArcGIS 提供的多个系统工具都是模型。
模型的复杂程度可由您自行决定。模型中可使用任何系统工具或自定义工具,也可以使用已经写入的其他模型(因为模型即为工具)。还可以通过使用循环和条件来控制模型的逻辑流。
模型完全可以既极其简单又非常高效。您可以创建一个模型,使其包含一个单个工具但仅嵌入该工具的某些参数。例如,缓冲区工具共包含六个参数,但您清楚,对于当前的这组任务,这些参数中的三个参数将始终不变。为了避免每次执行缓冲区工具时都填写这些参数,您可以快速创建一个模型并设置这三个参数,然后将此模型保存为“我的缓冲区”工具,这样一来,仅使用此工具的对话框即可,无需使用缓冲区对话框。使用了“我的缓冲区”工具几次之后便可能需要将其删除,但由于该工具创建方便快捷并能提高效率,因此值得一试。
脚本
您还可使用脚本语言来创建新的实用软件。使用脚本语言的程序即是脚本。在软件编程领域中,语言可基本分为两类:系统语言和脚本语言。系统语言是诸如 C++ 和 .NET 一类的语言,用于通过计算机的低级图元和原始资源从头开始创建应用程序。脚本语言(例如 Python 和 Perl)用于将多个应用程序组合到一起,该语言使用计算机内置的高级功能并且回避了系统语言编程程序必须处理的具体细节。与系统语言相比,脚本语言更加易学易用,对编程有基本的了解便足以很好地使用它们。
在地理处理框架中,脚本与模型相类似,因为它们都可用来创建新工具。模型是使用可视化编程语言(模型构建器)创建的;而脚本是使用基于文本的语言和文本编辑器创建的。
和模型一样,脚本也是工具。您可使用分布向导来将脚本引入至自定义工具箱中,然后该脚本就会成为您可在模型或其他脚本中使用的另一个工具。系统工具中有多个都是脚本。从技术角度而言,您可以编写一个脚本但不将其引入工具箱;此时,该脚本便不属于工具,而仅是磁盘上的一个独立脚本。
使用脚本的目的可能有多种:
- 在某些情况下,您可能需要较高级的程序设计逻辑(如条件执行和高级错误处理)、较高级的数据结构(如字典和列表)或更多的功能(如字符串、数学和文件操作功能)。许多脚本语言已经通过高等数学和统计、Web 自动化、数据库查询和高级系统工具等内容的第三方库进行了扩展。
- 有些低级地理处理功能仅在脚本中可用。例如,通过光标在表的各记录中循环、读取行或写入行以及插入新行。脚本还具有访问 ArcGIS 数据属性的功能,例如某个要素类的范围或表中各字段的各种属性。
- 脚本非常适合封装其他软件,即可将多个应用程序组合到一起。例如,您的模型可输出一个简单的文本文件,其中包含受到分区规则变化影响的宗地所有者及其地址,并且您需要启动另一个程序读取该文本文件并为受影响宗地的所有者生成正式的通知书。您可以使用脚本封装此通知书生成程序,然后将该脚本引入工具箱,这样便可将其直接用于模型中。
- 脚本可在 ArcGIS 外部执行。也就是说,可以通过操作系统提示符直接执行脚本。(由于需要访问地理处理工具,因此还需在计算机上安装 ArcPy 站点包。)
用于创建和管理软件的框架
构建地理处理框架的目的是使您可以轻松快捷地将自己的想法转变为系统可以管理并且可在用户之间共享的新软件。
地理处理属于一种语言,由运算符或工具组成,用于对 ArcGIS 中数据(表、要素类、栅格、TIN 等)执行操作,还可用于执行操作和分析多种不同领域中地理信息时所必需的任务。
以模型和脚本的形式,您可以轻松快捷地创建新软件。这些新工具执行的任务并不是标准 ArcGIS 包的一部分。例如,ArcGIS 中没有任何菜单、按钮或编程对象可执行什么是地理处理中介绍的简单“投影”模型和“剪裁”模型。
各工具通过地理处理框架进行管理,这表示用户无需管理工具。尽管并不十分显而易见,但这一点看似微不足道实则非常重要。
- 包括系统工具和自定义(由用户写入)工具在内的所有工具,均可通过对应的工具箱进行访问。假设存在一种这样的情况:模型、脚本、系统工具和自定义工具需要通过不同的界面和方法进行访问,则对其进行使用和管理将会变得非常困难。在地理处理中,无论是组件工具、模型工具还是脚本工具,所有内容的创建和管理方式相同。
- 存档所有工具的方式也相同。创建工具后,该工具可存档在目录 窗口中,这样系统便可以将其编入目录并执行搜索。这样一来,制定存档标准和管理的工作便无需由用户来实施。
- 工具的用户界面相同:对话框。这些对话框将根据工具的各个参数自动创建。您无须执行任何用户界面的编程操作。这样一来,用户界面设计和编程工作便无需留给工具创作者来完成。
工具易于共享。包含自己的所有工具和工具集的工具箱可以使用 .tbx 扩展名保存在磁盘的文件中,也可以保存在地理数据库中。任何有权访问该文件或地理数据库的用户均可运行其中的工具。
突出之处就在于,您的工具将成为地理处理框架中的正式成员,从而将具有形同的文档、用户界面、访问方法和共享方法。
地理处理和 ArcObjects
ArcObjects 是包含大量低级编程对象的库,这些低级编程对象将作为 ArcGIS 软件开发工具包 (SDK) 的一部分提供。开发人员可使用 ArcObjects 构建新的应用程序或扩展 ArcGIS 应用程序的现有功能。(正式声明,大部分系统工具和整个地理处理框架的构建均是由 ArcObjects 完成。)与地理处理相同,ArcObjects SDK 也可用于创建新软件。
ArcObjects SDK 和地理处理的作用互补;两者都不会使另外一个废弃。作为一个常规表达式,ArcObjects 可用于通过新行为来扩展 ArcGIS,而地理处理是专为自动执行任务而设计的。可使用 ArcObjects 执行诸如添加新用户界面、向要素类添加自定义行为或创建特殊制图渲染器之类的操作。地理处理用于创建可在正常运行框架的限制范围内自动执行任务的软件(模型和脚本)。
ArcObjects 应该和系统编程语言一起使用,此时程序员需要访问低级图元以执行复杂的逻辑和算法。这就是 ArcObjects 中包含数以千计不同对象和请求的原因,因为这样便可以使程序员执行各自所需精细程度的控制。由于 ArcObjects 将与系统编程语言配合使用,因此要求具有大量的编程知识,而不仅仅是地理处理及其模型和脚本的相关知识。
相反,地理处理则属于一种普通功能,所有 GIS 用户均可使用和部署地理处理以自动执行他们的工作、构建可重复使用且定义明确的方法和过程以及为重要的地理过程建模。