地理处理框架是指一组用于管理和执行工具的窗口和对话框。本主题将重点介绍这一框架所隐含的高级概念和构想,而不涵盖它的使用技巧。
地理处理隐含的核心理念是将您的想法轻松快捷地转变为可执行、可管理、可修改、可记录且可与 ArcGIS 用户社区交互共享的软件对象。这里的“软件”表示的是一种可以指示 ArcGIS 执行您所要进行的操作的事物。例如,地理处理模型就是通过一种名为 ModelBuilder 的简单易用的可视化编程语言所构建的新软件。
本部分重点表达了这样一个概念,即地理处理是一种新的实用软件的创建方法。目的是希望您对于如何和为何使用地理处理产生更广泛且更深刻的理解。
要创建任一类型的软件,必须具备以下两个必要元素:
- 用于对系统中所捕获数据执行操作的正式语言。
- 用于创建、管理和执行基于此语言的软件的框架。包括编辑器、浏览器和文档工具等。
地理处理的语言即为各工具的集合。而地理处理框架则是用于组织和管理现有工具以及创建工具的小型内置用户界面集合。地理处理快速浏览一节中列出了此框架的基本组成部分,包括下列内容:
- 搜索窗口,可在其中查找并执行工具;目录窗口,可在其中浏览到工具箱以管理或执行工具
- 工具对话框,用于以交互的方式填写工具参数并执行工具
- Python 窗口,可在其中输入工具参数来执行工具
- ModelBuilder 窗口,用于将一系列工具链接在一起
- 用于创建脚本并将其添加到工具箱的方法。
地理处理模型和 ModelBuilder
可通过工具对话框执行单个工具。您可将其视为通过编程语言执行单个指令。虽然执行单个工具非常实用,但只有将多个工具串联在一起,将一个工具的输出作为另一个工具的输入(如同一种编程语言一样),才能体现出本系统的优势。
在地理处理框架中,可在 ModelBuilder 窗口中将地理处理语言中的各个要素(工具)按顺序链接在一起,以轻松快捷地将您的想法转化为软件。意识到模型即软件这一点非常重要,因为它们同样是指示计算机执行某些任务。不过,地理处理的编程语言是可视化的(如您在 ModelBuilder 中所见),而不像传统编程语言那样是基于文本的。
这里最需要注意的是:模型是工具。它们的行为同系统中其他工具一模一样。您可在对话框或 Python 窗口中执行它们。由于模型是工具,因此可以将模型嵌入模型中;ArcGIS 随附的多个系统工具均为模型。
可以将模型复杂化。模型中可使用任何系统工具或自定义工具,也可以使用其他已经完成的模型(因为模型即为工具)。还可以通过使用循环和条件来控制模型的逻辑工作流。
模型可能很简单,但仍非常高效。您可以创建一个模型,使其仅包含一个工具但嵌入了该工具的多个参数。例如,缓冲区工具共包含六个参数,但您清楚,对于当前的这组任务,这些参数中的三个参数将始终不变。为了避免每次执行缓冲区工具时都填写这些参数,您可以快速创建一个模型并设置这三个参数,然后将此模型保存为“我的缓冲区”工具,这样一来,便可仅使用此模型工具对话框,而无需使用缓冲区对话框。在删除之前,您可能只需要执行几次“我的缓冲区”工具,但由于该工具创建方便快捷并能提高效率,因此值得一试。
脚本
还可使用脚本语言来创建实用软件。使用脚本语言的程序即是脚本。在软件编程中,可以将语言分为两个基本类别:系统语言和脚本语言。系统语言是诸如 C++ 和 .NET 一类的语言,用于通过计算机的低级图元和原始资源从头开始创建应用程序。脚本语言(例如 Python 和 Perl)用于将多个应用程序组合到一起,该语言使用计算机内置的高级功能并且回避了系统语言编程程序必须处理的具体细节。与系统语言相比,脚本语言更加易学易用,对编程有基本的了解便足以很好地使用它们。
在地理处理框架中,脚本与模型相类似,因为它们都可用来创建工具。模型是使用可视化编程语言(ModelBuilder)创建的;而脚本是使用基于文本的语言和文本编辑器创建的。
与模型一样,脚本也是工具。可使用分步向导将脚本引入至自定义工具箱中,该脚本随即会变为另一个工具以供在模型或另一个脚本中使用。系统工具中有多个都是脚本。从技术角度而言,您可以编写一个脚本但不将其引入工具箱;此时,该脚本便不属于工具,而是磁盘上的一个独立脚本。
出于以下原因,您可能想要使用脚本:
- 您可能需要高级程序设计逻辑,例如条件执行和高级错误处理;高级数据结构,例如字典和列表;或更多功能,例如字符串、数学和文件操作功能。许多脚本语言已经通过高等数学和统计、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 用户均可使用和部署地理处理以自动执行他们的工作、构建可重复使用且定义明确的方法和过程以及为重要的地理过程建模。