Modelbuilder进阶教程

By 李远祥

Modelbuilder 进阶1 自定义变量

参数是用来交互操作的,因此,参数具备非常大的灵活性,包括参数的定义和调用。

除了工具里面的参数之外,还可以通过自定义变量,自定义变量可以非常灵活的在工具的参数中调用。

????变量包括了ArcMap大部分对象和数据,如文档、图层、数据类型、字段等,也包含了其他通用变量,如字符串、数值等

?

变量的调用一般使用%%括住变量名称,可以混合在参数中使用。

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

?

模型构建器进阶2-前提条件

前提条件是工具在执行前首先检查的条件,如果条件满足,可以执行工具;不满足,则创建这些前提条件。

前提条件一般用在没有前后关系的操作,不同于前后参数;

另一方面,在没有前提条件的设置下,arcgis的某些操作也会执行,但约束性不强

前提条件可以很好的强制执行工具调用前的一些基本操作。

例子中使用了创建固定的目录作为前提条件,这样,可以限制在没有对应目录的情况下执行工具。

?

?

?

前提条件也可以用作异步操作

任何变量都可用作工具执行的前提条件,并且任何工具都可以有多个前提条件。

该例子是先检查是否存在对应的文件夹,如果没有,则创建目录,并在目录中创建符号命名规则的地理数据库。

?

模型构建器进阶3-迭代器

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

?

基本上自动化的操作都需要使用迭代器去构建模型,迭代器就是循环操作

下面的例子是利用行政区划的shapefile 数据,分别创建所有县的目录,并单独将县的边界到处到目录中

?

For 循环,执行多个操作。

使用迭代器的注意事项

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

?

模型构建器进阶4-行内变量

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

该例子中创建的地理数据是一个输出变量,但其使用了行政代码这个变量进行组合替换,则这个变量就是行内变量

  • 行内变量可分为两类:

    • 模型变量 - 模型中的任何变量:%variable name%。
    • 系统变量 - 模型构建器中包含两个系统变量:表示变量列表编号的 %i% 和表示模型迭代次数的 %n%。
  • 行内变量的使用规则

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

      ?

模型构建器进阶6-仅模型工具

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

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

?

模型构建器进阶5-工具帮助

在工具中加入适当的说明是十分有必要,方便模型的使用

模型的说明可以ArcCatalog中使用右键【项目描述】进行设置

时间: 2024-10-19 22:42:24

Modelbuilder进阶教程的相关文章

Nodejs爬虫进阶教程之异步并发控制

Nodejs爬虫进阶教程之异步并发控制 之前写了个现在看来很不完美的小爬虫,很多地方没有处理好,比如说在知乎点开一个问题的时候,它的所有回答并不是全部加载好了的,当你拉到回答的尾部时,点击加载更多,回答才会再加载一部分,所以说如果直接发送一个问题的请求链接,取得的页面是不完整的.还有就是我们通过发送链接下载图片的时候,是一张一张来下的,如果图片数量太多的话,真的是下到你睡完觉它还在下,而且我们用nodejs写的爬虫,却竟然没有用到nodejs最牛逼的异步并发的特性,太浪费了啊. 思路 这次的的爬

duilib进阶教程 -- 响应windows原生消息和自定义消息(13)

duilib进阶教程 -- 响应windows原生消息和自定义消息(13) 一.windows原生消息 同样,入门教程只是给出了响应windows原生消息的方法,并没给出例子,这里以自适应屏幕分辨率为例.迅雷播放器虽然可以在启动的时候自动调整窗口大小,但是当屏幕分辨率实时改变时并没有调整窗口,所以我们给播放器加上实时调整大小的功能,很明显,应该响应WM_DISPLAYCHANGE消息,而duilib自己处理windows消息的函数是在HandleMessage里,因此我们重载HandleMess

点赞和吐糟Adblock Plus~进阶教程

前言:Adblock Plus后文都简称ABP,这是一篇ABP进阶教程!用ABP实现flashBlock和NoScript.推荐有相当基础的阅读!初学者先看懂这里:http://adblockplus.org/zh_CN/filters 先夸夸ABP,它是最流行.语法最完善严谨的过滤软件,其它同类都以它为标准!它把网络资源按以下选项分几大类: script -- 外部脚本,由 HTML script 标签加载 image -- 正常图片,通常由 HTML 的 img 标签所载入 styleshe

Numpy库进阶教程(二)

第一篇在这里:Numpy库进阶教程(一)求解线性方程组 求解特征值和特征向量 关于特征值和特征向量的介绍,可以点击这里 首先创建一个矩阵 In [1]: A=mat("3 -2;1 0") In [2]: A Out[2]: matrix([[ 3, -2], [ 1, 0]]) 在numpy.linalg模块中,eigvals函数可以计算矩阵的特征值,而eig函数可以返回一个包含特征值和对应特征向量的元组. 使用eigvals函数求解特征值 In [3]: linalg.eigval

Android高手进阶教程(二十八)之---Android ViewPager控件的使用(基于ViewPager的横向相册)!!!

分类: Android高手进阶 Android基础教程 2012-09-14 18:10 29759人阅读 评论(35) 收藏 举报 android相册layoutobjectclassloaderencoding 大家好,相信大家用的ListView控件一定很多的,是竖向滑动的,复用convertView,我们可以加载成千上万的数据,但有时候我们会有 这个需求比如相册,我们想横向滑动,并且数据有好多,这时候ViewPager控件就派上用场了,ViewPager使用时候我们需要导入第三方包 an

《饿了么大前端 Node.js 进阶教程》—Javascript 基础问题—引用传递

<饿了么大前端 Node.js 进阶教程>地址:https://github.com/ElemeFE/node-interview 1.如何编写一个 json 对象的拷贝函数 function clone(obj){ var result; if (Array.isArray(obj)) { result = []; obj.forEach((item) => { result.push(clone(item)); }); } else if (typeof obj === 'objec

《饿了么大前端 Node.js 进阶教程》—Javascript 基础问题—作用域

<饿了么大前端 Node.js 进阶教程>地址:https://github.com/ElemeFE/node-interview 作用域从某种意义上来说是个难点,它需要你真真正正的了解JS的分词.词法分析,语法分析,代码生成,LHS查询,RHS查询等深层的东西. 如果不知道可以读一下<你不知道的JavaScript:上卷> let和var的区别 1.let只在声明的代码块中有效,{}中使用let声明变量,外面是访问不到的,这就是块级作用域 2.不存在变量提升问题 3.重复声明会报

shell进阶教程

背景:就自己常用的shell脚本写作风格,总结了一些知识点.也是作为交接工作的一部分文档.部分内容单独写 #!/bin/sh # shell脚本进阶教程 # 1.常用知识点:变量设置/日期设置/格式化输出/定义函数/函数传参/脚步传参/变量的嵌套和迭代 # 2.常用环境:/数据库监控/本地日志监控/批量处理/定期获取表数据/备份 # 3.常用循环:for/while # 4.常用命令:sed/cut/awk/ # 5.crontab 计划任务 # 第一部分:常用知识点 # 1.[变量设置及变量替

《饿了么大前端 Node.js 进阶教程》—Javascript 基础问题—类型判断

lodash的类型判断源码 <饿了么大前端 Node.js 进阶教程>地址:https://github.com/ElemeFE/node-interview  lodash介绍:lodash是目前很流行的JS工具库,它封装了许多JS常用到的工具方法,在阅读源码时,你会发现代码冗长:官网说这是性能优化,不管你信不信,反正我信了! (1)null 类型 function isNull(value) { return value === null; } (2)number类型 function i