Modelbuilder进阶教程

4
分享 2016-12-31
Modelbuilder进阶教程
By 李远祥
Modelbuilder 进阶1 自定义变量
参数是用来交互操作的,因此,参数具备非常大的灵活性,包括参数的定义和调用。
除了工具里面的参数之外,还可以通过自定义变量,自定义变量可以非常灵活的在工具的参数中调用。
变量包括了ArcMap大部分对象和数据,如文档、图层、数据类型、字段等,也包含了其他通用变量,如字符串、数值等




变量的调用一般使用%%括住变量名称,可以混合在参数中使用。
下面例子中使用一个行政代码区创建地理数据库,给字符串变量重命名为【行政代码】,在参数中使用了字符串的组合







模型构建器进阶2-前提条件
前提条件是工具在执行前首先检查的条件,如果条件满足,可以执行工具;不满足,则创建这些前提条件。
前提条件一般用在没有前后关系的操作,不同于前后参数;
另一方面,在没有前提条件的设置下,arcgis的某些操作也会执行,但约束性不强
前提条件可以很好的强制执行工具调用前的一些基本操作。
例子中使用了创建固定的目录作为前提条件,这样,可以限制在没有对应目录的情况下执行工具。







前提条件也可以用作异步操作
任何变量都可用作工具执行的前提条件,并且任何工具都可以有多个前提条件。
该例子是先检查是否存在对应的文件夹,如果没有,则创建目录,并在目录中创建符号命名规则的地理数据库。

模型构建器进阶3-迭代器
迭代是指以一定的自动化程度多次重复某个过程,通常又称为循环。迭代很重要,因为自动重复任务会节省执行这项任务所需的时间和精力。在"模型构建器"中进行迭代时,可以在每次迭代中使用不同的设置和数据来反复执行同一个过程。"模型构建器"中的迭代操作还具有灵活性,用户可以迭代整个模型,或只是重复执行单个工具或过程。



基本上自动化的操作都需要使用迭代器去构建模型,迭代器就是循环操作
下面的例子是利用行政区划的shapefile 数据,分别创建所有县的目录,并单独将县的边界到处到目录中














For 循环,执行多个操作。






使用迭代器的注意事项
  • 同一个模型里面只能使用一次迭代器;如果需要多次迭代,可以将带迭代器的模型加载到另一模型再进行迭代
  • 迭代器中没有针对数据本身的条件选择功能,这些条件设置一般可以在系统工具中进行设置(如筛选、过滤等)
  • 迭代器的类型有限,但巧妙利用迭代器能够高效率的解决问题。



模型构建器进阶4-行内变量
在模型构建器中,可通过以百分号 (%) 将替换变量括起来的方式,用一个变量的内容替换另一变量。这种变量替换方式称为行内变量替换

该例子中创建的地理数据是一个输出变量,但其使用了行政代码这个变量进行组合替换,则这个变量就是行内变量
  • 行内变量可分为两类:[list][*]模型变量 - 模型中的任何变量:%variable name%。
  • 系统变量 - 模型构建器中包含两个系统变量:表示变量列表编号的 %i% 和表示模型迭代次数的 %n%。

[/*]
[*]行内变量的使用规则
  • 变量名称使用百分号 (%) 括起。
  • 变量名称中允许存在空格。
  • 替换不区分大小写。Initial Value 和 initial value 是等同的。
  • 执行模型时,将按以下顺序确定和使用行内变量:
  • 模型变量。
  • 模型环境设置。
  • 系统变量(%i% 和 %n%)。
  • 父模型中的变量。如果当前运行的模型是一个子模型,则将一并搜索其父模型的变量。

[/*]
[/list]

模型构建器进阶6-仅模型工具
  • 仅模型工具仅用于"模型构建器"中。其中的有些工具可用来控制处理流程,而其他工具则是些简单的支持工具。
  • 模型构建器只提供7种仅模型工具
  • 仅模型工具更像编程语言里面的条件控制、字符分析等方法和函数
  • 仅模型工具可以用于模型运行过程中的计算和判断



例如:解析路径 工具,可以很好的反映数据的各层路径


模型构建器进阶5-工具帮助
在工具中加入适当的说明是十分有必要,方便模型的使用
模型的说明可以ArcCatalog中使用右键【项目描述】进行设置

Modelbuilder快速入门:http://zhihu.esrichina.com.cn/article/2686
Modelbuilder进阶教程:http://zhihu.esrichina.com.cn/article/2691

文章来源:http://blog.csdn.net/liyuanxiang1984/article/details/52774287

2 个评论

模型工具可以实现多幅图片(jpg格式)自动批量“假拼接”吗?所谓的假拼接就是很多小块的图片在arcmap中呈现出来是一副完整的图,但是没有真正的拼接。
案例:
我有一副超大图被分成1-1,1-2....2-1,2-2......3-1,3-2...好多块(每一块都是相同尺寸的正方形,左上角为第一块1-1,右侧分别为1-2,1-3...1-N,第二行分别为2-1,2-2...2-N,按照这个规律对切图进行命名),由于jpg图片没有坐标信息,导入到arcmap中会全部叠加到一起。现在想利用模型工具可以实现假拼接吗。?(目前我都是手动的通过配准工具进行假拼接,可以通过计算坐标准确拼接,但是很麻烦)
理论上可行

要回复文章请先登录注册