| 第一节 Model基础前面讲了很多的地里处理的概念,涉及好几个地里处理运行方式。在这章中,我们来看看Model Builder的具体的框架结构与功能。Model Builder具有几个优势,而且在目前ArcGIS Server的地理处理发布,也是通过Model Builder来实现。
 Model Builder的优势:(一)、自动地理处理流程。Model Builder可以把你分析和准备数据过程所用到的所有分析工具和数据通过流程化结合在一起。每次更新操作都可以保存,并且重新运行。(二)、共享地理处理知识。Model的数据,工具都通过图形方式表示,通俗易懂,并且可以保存下来与别人共享,同时也可以保存在SDE数据库中,或通过ArcGIS Server实现互联网共享。(三)、记录与文挡化。Model的运行可以象Toolbox中的工具一样运行,并且还提供了图文结合的帮助,方便共享。(四)、根据需要添加复杂模型。模型可以包括复杂的处理过程,而一个模型中还可以包含子模型,实现更复杂的应用。
 Model Builder的元素如图3-1:
 ·    Tools—与ArcToolbox一样,可以直接拖拽到Model中来使用。在Model中,默认用金黄色的方框表现。
 
 ·    Project data—在工具执行之前存在的任何数据. Project data 作为工具的输入数据,用兰色的椭圆来表现。
 
 ·    Derived data—衍生数据,是根据项目数据与工具分析之后生成的新数据。衍生数据可以作为项目数据来作另一个处理,衍生数据用绿色的椭圆来表现。
 
 ·    Values—参考工具参数而不是数据集;例如缓冲工具的缓冲距离。值通过浅兰色椭圆表现。
 
 ·    Derived values—运行工具以后创建的参考值,例如计算默认簇容限工具的输出值。用浅绿色椭圆表现。
 
 
 下面举个简单的Model Builder例子:
 任务:我们假设有全国的河流数据,现在通过Model Builder做一个长江2公里范围缓冲区。
 步骤:1、打开ArcMAP,并且添加河流数据
 1、  打开ArcToolbox,并鼠标右击-->New Toolbox,在ArcToolbox下列表中,会添加一个Toolbox的工具箱,可以修改此工具箱的名称。鼠标右击-->NewàModel,建立一个新的Model.
 2、  把河流数据和Select工具以及Buffer工具拖拽到Model中,通过Add Connection,把数据与工具连接在一起,如图3-2所示。
 3、  双击Select和Buffer,设置Select的SQL语句,选择河流名称,如[NAME] = '长江',设置Buffer的缓冲区为2KM.并设置输出的结果的文件路径和名称。
 4、  点击”Run”运行模型
 5、  保存Model
 上面是一个简单的建立Model的例子,在Model里边可以添加的不仅仅是已有工具,也可以是自己写的Script脚本工具,以及SubModel。
 
  
    
| 第二节 Model参数 当你定义模型的时候,你可能需要设置一些变量作为模型的参数(model parameters)。这样做有两个目的:首先,可以让你在对话框中运行模型,其次,可以与子模型结合。如图3-3所示。这里还要强调一点,当我们需要把模型通过ArcGIS Server作为地理处理服务发布出去时候,我们就必须要设置这样的参数。
 模型对话框
 模型可以在ModelBuilder或在对话框中运行。和其他的任意工具一样,在运行模型以前必须设定参数值。当你创建好了自己的模型,你必须定义什么样的参数在对话框中可见;否则,是无法实现在对话框中运行的。在对话框中运行模型,只有模型参数的变量显示。而且变量值在每次运行模型时候都可以改变。例如,一个水质量模型对话框,可以让用户指定水域的名称来做分析,并对选择的井做缓冲分析。
 
 子模型
 我们知道,使用子模型可以把一个大的模型分成许多的小模型,这样更容易进行管理。在一个子模型添加到主模型之前,首先需要把子模型的输出变量设置为模型的参数。这样可以让这些输出变量在模型之间共享。
 
  |    第三节 Model条件循环在任何一种处理中,都希望有实现与程序交互的功能,有时候我们经常可以把这种交互处理过程认为循环。对于大多数编程语言来说,交互式关键的概念。那么使用交互,你可以不断使用不同的数据来执行处理过程。
 在ModelBuilder里,你可以使用iteration来对整个模型进行交互,或则只是对某个单独的处理过程进行交互。
 批处理就是其中一个例子,它交互时候使用不同的数据,从而实现对整个模型的交互。使用批处理过程,你可以使用模型参数来设置数据和条件值的参数,完成每个交互的过程。
 批处理可以在ArcToolbox中实现,而不是在ModelBuilder中完成。在ModelBuilder中,你可以使用集中方法来执行过程或模型的交互,这些方法在下面中描述,为了方便,我用英文原文来表示名称。
 Lists: 你可以声明一个或多个变量做为列表变量。一旦你声明了一个变量作为列表值,打开这个变量将显示批处理对话框。当这个列表变量连接到一个工具以后,这个工具和所有下游的处理(这个处理依赖这个工具的输出内容)将把这个列表的变量都执行一遍。
 Series: 你可以声明一个或多个变量作为系列参数。系列参数与列表相似,它可以包含多个值。所不同的地方在于,对于系列中的每个值,整个模型只执行一次。你可以在模型中设置多个系列变量,但是你只能够声明一个模型交互控制。见图3-4
 
 Boolean condition: 你可以指定模型进行交互,直到它的参数变量值为false为止。你可以使用Boolean或Long型变量。如果你使用Long变量,那么负数或0表示false。所有的正数都认为是true.
 Count: 你可以设置模型交互的次数,直到达到某个Count数。
 Feedback:反馈是设置把某个处理的输出作为最开始的输入。见图3-5
 
 更多内容请参考ArcGIS桌面帮助系统。
 
  
  第四节 模型执行可视界面与帮助我们的所有处理可以直接在ModelBuilder中执行,并得到结果。ModelBuilder还提供另外一种选择,就是它可以作为一个工具来进行使用。象ArcToolbox中其它的工具一样,可以在窗口中打开,通过设置输入数据,参数,输出结果参数等来执行。并且和其它tools一样,可以提供帮助系统。如图:3-6
 
 对于上图的这个模型工具,我们参考一下图3-7,看在实际模型当中这些输入框是怎么设置的。
 
 从上图可以看到四个输入的参数数据和输出的参数数据都是设置为P参数。即在ModelBuilder中我们通过设置参数,把这些作为变量,以便执行操作时候,可以提供交互式的选择。输入参数的名称可以在ModelBuilder的属性项à参数,然后添加名字和数据类型,如上图的Input Feature Class,数据类型为Feature Layer。这样就可以实现模型的人机界面的交互。
 对于使用帮助帮助系统,ModelBuilder提供了一套方便的工具。通过点击模型鼠标右键àEdit Documentation,如图3-8。
 
 在这里可以添加每个参数的说明,并且可以添加一些图片说明。具体如何使用请参考ArcGIS桌面帮助。
 
  
 
  
 
  |