专栏名称: 城长数据
ArcGIS for Urabn planning.主要面向城市规划专业,通过全方位的ArcGIS技术与方法讲解,达到高效运用ArcGIS ,以辅助城市规划设计及研究的目的。
目录
相关文章推荐
51好读  ›  专栏  ›  城长数据

你会用ArcGIS的Modelbuilder(模型构建器)吗?

城长数据  · 公众号  ·  · 2016-05-04 22:49

正文

请到「今天看啥」查看全文


你会用ArcGIS的Modelbuilder吗?如果不会那现在来学吧。Modelbuilder是如此的强大,以至于不懂 Modelbuilder相当于你的 ArcGIS基本上是处于初级阶段。那什么是 Modelbuilder呢? Modelbuilder也叫 模型构建器,是一个用来创建、编辑和管理模型的应用程序。模型是将一系列地理处理工具串联在一起的工作流,它将其中一个工具的输出作为另一个工具的输入。也可以将模型构建器看成是用于构建工作流的可视化编程语言。也就是说,如果你不会arcpy,那么也可以运用 Modelbuilder来实现其大部分功能。并且, Modelbuilder是个可视化工具,可以清晰的列出其运行逻辑,使用比较方便。


现在,让我以一个案例来讲解Modelbuilder吧!


1、案例分析方法

在进行某项研究时,要对用地的破碎度进行分析。如表1所示,破碎度计算涉及四项指标:斑块数量(N)、平均斑块面积(P)、斑块面积标准差(I)和斑块聚集度(G)。相关解释见图1,即斑块数量越多、平均面积越小、板块面积标准差越大、斑块聚集度越低说明该类型土地呈现的空间景观格局越细碎、分散,反之越集聚。

表1:用地破碎度计算指标


图1  用地破碎度内涵解释


2、数据计算难点

(1)计算量大 :该研究对象有277个村,每个村有若干个斑块,数据分析量较大。

(2) 过程 复杂:特别是斑块聚集度(公式4),其计算较为繁琐。


3、解决策略

公式1-3的计算都较为简单,可直接进行数学计算,但公式4较为复杂。 经分析后,公式4可以用图2的步骤来实现。这样一来,四个步骤就可以用arcgis来一步一步实现。这是一个机械性的、重复性的工作。我们以前讲过,该类型工作可以交由计算机来自动实现。正好,ArcGIS提供的强大的Modelbuilder,正是用来解决这一问题的。


图2 对公式4的解析


4、 Modelbuilder建模

对于公式4, 首先 计算每个斑块的空间重心,可以用要素转点工具。 然后 ,以这个点为圆心绘制与斑块同等面积大小的圆,其半径为R=(S/π)^(1/2),这里运用到添加字段及计算字段工具。 随后 ,计算最近点的距离L,这里用到的工具是近邻分析。由于我们需要对277个村进行计算,因此这里需要增加一个迭代步骤(图3),以便一个村一个村的计算。另外,建议每个村的数据保存在文件地理数据库中(.gdb),这样我们就可以设置以村名为文件名自动保存要素文件 (图4)。 至此 ,运行整个模型后(图5),我们得到了公式4中要求的斑块面积A,半径R,最近点距离L。 最后一步 ,我们要 计算每个村的G值。但有个问题,每个要素类中只有单个斑块的A、R、L,有多少个斑块就有多少条记录。我们需要对这些记录进行求和计算,即 汇总每个村中所有斑块的面积与半径R的乘积后,除以每个村斑块的面积,并将最终值(G值)录入对应的村(图6)。如果人工去计算,显然不可行,并且也没合适的工具可用,我们只有用python编程来解决。


图3 迭代要素类

图4 保存要素类文件名为变量name


图5 G值计算模型


图6 计算G值


5、python编程实现最后一步计算

那么,我们来思考编程的逻辑。其实很简单,定义两个函数,一个计算 每个村中所有斑块面积A与半径R乘积的和(∑jjd_single),一个计算 每个村斑块总面积( ∑A )。最后计算G值(G= ∑jjd_single/ ∑A),并将值赋给对应字段( 字段名 = 表名)。这里,我就不详细讲解python了,直接贴出代码(图7),大家可以自行看看代码编写的逻辑。


图7 计算G值的代码


至此,G值计算完毕,其他破碎度指标计算就比较简单了。 本教程可能有点复杂,限于篇幅未能讲的透彻,后期我会录一个视频,敬请期待!


最后,我想说明的是, Modelbuilder并不是万能的,很多时候,数据计算仍需要借助python编程 。学python吧,不然最后一个计算仍需耗费大量精力。







请到「今天看啥」查看全文