原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区

1 使用ArcGIS进行空间分析

1.1 GIS分析基础

GIS的六大功能是数据获取、存储、查询、分析、表达、输出。在前面的内容里已经介绍了使用ArcGIS进行数据获取、存储、查询、表达和输出的过程,本章将介绍如何在ArcGIS中进行地理分析。分析是GIS的核心和灵魂,是GIS区别于一般的信息系统、CAD或者电子地图系统的主要标志之一。

GIS分析,就是研究数据的地理分布模式以及地理要素之间的关系的过程。在大量的地理数据中,利用GIS软件所提供的工具找出对我们有用的信息,这就是一个地理分析的过程。GIS分析可以用来观察地理数据的空间模式和空间关系,分析结果会帮助人们集中精力做出全面的、最好的选择或计划。

GIS分析能解决的问题很多,包括基于空间关系的查询(查找距离黄河1公里之内的城市)、缓冲区分析(计算某加油站如果发生事故对周围地区的影响)、叠加分析、网络分析(查找两个地方之间的最短路径)、空间统计分析(找出某个犯罪高发地区)。



1.2 用ArcGIS进行分析

ArcGIS为GIS分析提供了很多工具和模块,常用的地理分析功能都能实现。比如查询功能可以进行基于空间关系的查询,编辑工具条和buffer工具可以进行缓冲区分析,Analysis Tools工具箱可以进行叠加分析,网络分析扩展模块可以进行网络分析,空间统计工具箱提供了空间统计分析的工具。在本章中,以一个选址分析作为例子,来介绍ArcGIS中的地理分析过程。案例背景:在某地区计划兴建新的公路,但公路会影响某种受保护鸟类的栖息环境,因此在公路规划中必须考虑此问题。本案例的目的在于从该地区找出适应此种鸟类栖息的地方,以供公路规划部门参考,建设公路时可以避开这些生态保护区。根据专家研究,适应此种鸟类生活的地方应符合以下要求:



· 植被类型是此种鸟喜爱的食物;

· 坡度小于40度;

· 与公路有一定距离;

· 面积不能太小,要大于1089000平方英尺;

根据以上条件,就可以找出最适合鸟儿生活的地方。案例数据包括:



· 该地区的公路数据。包括每条公路的位置和公路的影响距离;

· 植被类型数据;

· 坡度数据;



分析步骤如下:



1. 双击打开…\DATA\Analysis\生态区选择.mxd地图文档,查看几个图层的数据。文档中共有3个图层,其中“主要道路”是该地区的主要道路图,“植被类型”是植被类型分布图,“坡度小于40”是该地区坡度小于40度的区域。



2. 首先找出植被类型符合鸟类食物的区域。在植被类型图层的属性表中, VEG_TYPE是表示植被类型,HABITAT是说明该植被是否适宜当鸟类的食物,1为适宜,0为不适宜。因此这一步就是要选择HABITAT=1的区域。



1) 点击菜单栏上的Selection菜单,选择Select By Attributes。打开基于属性选择的对话框。







2) 按照下图设置Select By Attributes对话框,选择目标图层为“植被类型”,选择表达式为HABITAT=1。设置好后点击“OK”,便可看到部分多边形被选中。







3) 在保持部分多边形要素选中的状态下,在内容列表中右键单击“植被类型”图层,在弹出菜单中选择Selection—>Create Layers From Selected Features,用选中的要素创建一个新图层。







生成的图层名为“植被类型selection”。不显示“植被类型”图层。在右边的显示区域可以明显看到符合植被类型条件的区域仅仅是一小部分。







3. 第3步是要在第2步的结果中选择那些坡度小于40度的区域。这里我们使用Editor工具条中的Clip工具来完成。此工具可以使用一个多边形要素去切割其他要素,切割时可以选择保留或丢弃相交部分,因为我们的目的是找到两个图层里的要素的公共部分,因此选择保留相交部分。



1) 首先点击工具栏上的调出Editor工具条,并选择Editor工具条上的Editor下拉菜单中的Start Editing开始编辑会话。



2) 在内容列表右键单击“坡度小于40”图层,弹出菜单中选择Open Attribute Table打开属性表。在属性表中可看到,此图层中有7个多边形要素。由于Clip工具只能用一个多边形要素去切割其它要素,因此先把这些要素合并成一个。



3) 点击属性表中的Options按钮,在弹出菜单中选择Select All,选中全部7个要素。







4) 然后点击Editor工具条上Editor下拉菜单的Merge,在弹出对话框中选择第一个要素,这时7个要素就合并成了一个。







5) 显示“植被类型selection”和“坡度小于40”图层,其他图层关闭显示。用Editor工具条上的Edit Tool选中“坡度小于40”图层的唯一的要素,点击Editor工具条上的Editor下拉菜单中的Clip,在弹出对话框中选择 “Preserve the area that intersect(保留相交部分)”,就得到了植被类型和坡度条件都符合要求的区域。







4. 第4步是在第3步的结果中排除距离道路过近的地方。



右键点击内容列表中的“主要道路”图层,在弹出菜单中选择Open Attribute Table打开属性表。在属性表中看到,有个CLASS字段表示路的等级,Distance字段表示路的影响距离(即保护区应该远离道路的距离)。







观察发现,不同等级的道路,影响距离不同。其中CLASS=1的道路影响距离和其它3个等级不同。因此,在下面的操作中,我们分别对CLASS=1的道路和CLASS=2、3、4的道路进行操作。下面以第一级为例给出对每级道路的操作步骤。



1) 首先选择所要操作的等级,打开属性选择对话框,设置如下。这样就选中了所有CLASS等于1的道路。







在分析中的目的是要把这些受道路影响的区域从可选择的区域中排除掉,可以使用Editor工具条上的Clip工具。但使用Clip工具时,是用一个要素去切割其他要素,因此,先把这些CLASS=1的道路要素合并成一个,再使用clip。



2) CLASS=1的道路要素都处于选中状态,点击Editor工具条上的Editor下拉菜单中的Merge,在弹出对话框中选择第一个要素,点击OK。







3) 显示“植被类型selection”和“主要道路”这两个图层,点击Editor工具条上的Editor下拉菜单中的Clip,在弹出对话框中选择Discard the area that intersects(丢弃相交部分),在Buffer Distance中输入1312,点击OK,就把道路影响区域从满足植被类型和坡度的区域(即第3步的结果)中去掉了。







以上是CLASS=1的道路的操作步骤,完成后,对于CLASS=2、3、4的道路重复此过程。步骤和上面步骤一样,不过在选择道路的时候,选择表达式应该为“CLASS”=‘2’OR“CLASS”=‘3’OR“CLASS”=‘4’。另外缓冲区距离为820。完成以上步骤后,关闭所有图层,就可以看到满足前3个条件的区域。



4) 由于裁剪后的图形可能有多要素的情况,即一条属性记录对应多个图形。这时候我们可以采用高级编辑工具条上的“拆分”工具拆分图形。高级编辑工具条在菜单栏的空白处单击右键,选择Advanced Editing。







5) 点击Editor工具条上Editor下拉菜单中的Save Edits保存编辑,并点击Stop Editing结束编辑状态。



5. 在第4步的基础上,要其中找出面积大于1089000平方英尺区域。这可以通过基于属性的选择得到。点击菜单Selection > Select By Attributes。在打开的对话框中设置如下:







6. 到第5步为止,已经得到了满足4个条件的区域,最后可以将这部分区域导出到一个新的要素类中去,这个要素类就是最终满足条件的结果。在保持第5步结果(即符合面积条件的区域被选中)的状态下右键点击“植被类型selection”图层,在弹出菜单中点击Data > Export Data。







在弹出的对话框中,设置新生成的要素类放置的路径(可以选择生成Shapefile或者Geodatabase要素类),点击OK后就生成了最终结果。











结果(叠加主要道路图层)如下图:







1.3 基于Geoprocesing进行地理分析

Geoprocessing即地理处理,是核心的GIS操作——从现有的或者提取出来的数据中创建新的空间数据。也就是说,GIS中除了地图绘制、数据创建和编辑、数据库方案管理和可视化外,几乎所有的基本功能都可以规划到Geoprocessing中。ArcGIS 10.4中有许多Geoprocessing工具(简称GP工具),几乎包括了所有ArcGIS桌面的功能,其中包括很多分析工具。因此要进行地理分析,也可以通过Geoprocessing进行,非常方便。



在ArcGIS的Geoprocessing框架下的一系列工具可以通过不同的方式,从不同的位置调用。Geoprocessing框架中有三种常用环境:内置工具、环境工具和脚本工具。用户可以根据实际应用的需要来选择合适的使用环境。对于不熟悉ArcGIS工具的用户,最好使用内置工具,即对话框工具能让用户更明白每一个工具以及参数的功能和意义。而模型工具以及脚本工具都具有对工具进行重用和组合的能力,比简单的使用对话框工具可以更有效的完成分析任务。除了一小部分工具以外,脚本是唯一可以实现批处理操作的Geoprocessing环境,也就是说,脚本可以同时处理多个输入数据。



在使用Geoprocessing工具时,如果需要的话,要进行环境设置。环境设置包括很多在工具运行时可能都用到的一些设置,比如输入输出的路径(文件夹或Geoprocessing)、输出的坐标系统、输出范围等等。



使用Geoprocessing工具最常用的方式是通过ArcToolbox窗口调用。在ArcMap或ArcCatalog中都可以通过点击工具栏上的图标调出ArcToolbox窗口。







如上图所示,ArcToolbox中,将相近用途的工具进行了归类,并将它们分组存放。在ArcToolbox中,有很多工具箱、工具集和工具。工具箱是一个存放工具和工具集的容器。工具集则是一个存放工具和其它工具集的逻辑容器,就像ArcCatalog里一个文件夹包括文件夹或地理数据一样。工具便是执行特定Geoprocessing操作的单一实体。



要执行一个工具,直接在ArcToolbox窗口中双击此工具,就打开了工具的对话框。在对话框中,可以点击右下角的Show/Hide Help按钮来切换显示帮助。每个工具都有需要填充的参数,其中必填参数前面会带一个绿色的小圆点。填充好参数后,点击OK,工具就会执行。







如果一个数据处理或分析的过程需要调用多个工具来完成的话,一个一个的打开工具太麻烦,而且流程也不清晰,这种情况下可以考虑使用模型工具ModelBuilder,即通过创建执行模型的方式来使用Geoprocessing工具。



ModelBuilder是ArcGIS中使用Geoprocessing的一种方式,可以通过直接拖拽的方式把工具组织成完整的流程并执行,对于要使用多个工具的操作过程来说非常方便快捷,而且可以得到清晰生动的流程图,有助于理解整个操作过程。



下面以本章开头的生态区选择分析为例子,举例说明此分析在ModelBuilder中如何实现。



1. 创建工具箱以及模型



模型是放在工具箱中的。调出ArcToolbox的时候,可以看到在ArcToolbox窗口有很多系统工具箱。这些工具箱是系统提供的,里面的工具也是固定的,无法更改。如果要创建模型,就必须在自定义的工具箱中创建。因此在创建模型之前,首先要创建一个工具箱。在ArcMap右侧的Catalog窗中找到实验数据所在的文件夹(Analysis),右键点击选择New > Toolbox。







给新建的工具箱命名为HabitatTool。







在新建的HabitatTool工具箱上右键单击,弹出菜单中选择New > Model,便新建一个模型。







这时会弹出ModelBuilder界面,选择Model菜单下的Model Properties。







在Model Properties对话框里是关于整个模型的一些设置。选择General选项卡,在Name和Label中均输入Habitat,点击确定。Name是模型的名称,如果在Geoprocessing中使用到这个模型的时候,用name来引用;而Label是模型显示在工具箱里的显示名称。







然后点击工具栏上的 保存模型。一个空的模型就创建完成了,现在可以关闭ModelBuilder界面。此时在ArcToolbox窗口的Habitat工具箱下就可以看到刚才创建的Habitat模型了。







2. 从第2步开始,就是编辑模型的过程了。右键单击Catalog窗口的Habitat模型,在弹出菜单中选择Edit,打开ModelBuilder界面,开始编辑Habitat模型。



模型的组成元素主要有工具、数据、数值和连接器(Connect)。数据是指地理数据,包括输入数据和输出的派生数据;数值是指非地理数据,如某个常数;工具是指对输入数据进行处理的操作,由黄色长方形表示;连接器(Connect)是一条表示过程顺序的线条。数据元素和工具元素由此相连,连接器的箭头指明过程的方向。另外,在ModelBuilder中,输入数据经过工具处理得到派生数据的这样一个流程,称为过程(Process)。模型可繁可简。最简单的模型可能只有一个过程,但一般模型都是由多个过程组合而成。



工具的添加可以直接从ArcToolbox窗口拖拽到ModelBuilder窗口来,地理数据的添加可以直接从ArcCatalog拖拽。另外,也可以用ModelBuilder界面工具栏中的Add Data 来添加。



首先创建选择满足第一个条件——植被类型的过程。在ArcToolbox窗口点击Analysis Tools工具箱打开,里面有4个工具集,点击打开Extract工具集,在此工具集中点击Select工具。此时的工具是没有填充颜色的,说明这个工具还不是一个可以运行的状态,往往是缺少必填参数。







点击添加植被类型vegtype数据,添加后如下图所示。







点击 ModelBuilder 窗口里工具栏上的连接器(connector)按钮,先在数据vegtype 上单击一下,然后在工具Select上单击一下,就在两者之间添加了连接,选择Input Feature,使得vegtype成为Select工具的输入参数。此时工具和派生数据都填充了颜色,表明工具已经是一个可以运行的状态。







Select工具是用基于要素类属性的表达式去选择输入数据中的某些要素,然后把选中的要素作为派生数据输出为一个新的要素类。所以在此工具中还需要输入选择表达式。右键点击(或双击)模型中的Select工具,在弹出菜单中选择Open,打开此工具的对话框。







可以在弹出的工具对话框中直接填写其他参数,此时可以看到Input Feature这个参数已经有值,就是刚才用连接器连接的vegtype。点击Expression参数下的SQL图标。







在弹出的Query Builder对话框中设置选择表达式如下,点击OK。针对第一个条件——植被类型的过程就创建好了。







3. 第3步创建针对第三个条件——公路影响来创建过程。用上面提到的拖拽方法添加Analysis Tools工具箱里的Buffer工具。此工具可以对输入的要素类产生制定缓冲距离的缓冲区。







用第2步中的方法添加道路数据majorrds,用连接器连接道路数据和Buffer工具。



指定输入数据后,就要确定缓冲距离,即道路影响的距离。右键单击Buffer工具,弹出菜单中选择Open打开工具对话框。在Distance参数的选项中,选择Field,即用字段值作缓冲距离,因为在道路要素类的属性中有一个Distance字段表示每条路的影响距离,所以此处使用字段值来作为缓冲距离。然后设定缓冲字段为Distance,点击OK。







设置完后模型如下图。Buffer工具的派生数据为道路影响的缓冲区。







4. 第4 步是要把第3 步的结果从第2步结果中去除,即找出满足植被条件又不在道路影响范围内的区域。可以使用Erase工具。这个工具有两个输入地理数据参数,一个是Input Features,一个是Erase features,工具的输出结果要素类为Input Features中不与Erase Features相交的部分(即相交部分被丢弃)。在这里把植被数据设定为Input Features,道路影响缓冲区数据作为Erase Features。







往模型中添加Erase工具,然后用连接器依次将vegtype_select和majorrds_Buffer和Erase工具连接。



在连接vegtype_select时,选择Input Features;在连接majorrds_Buffer时,选择Erase Features。







连接后可以右键单击Erase工具打开工具对话框,查看Input Features和Erase Features两个参数是否设置正确,如果不正确可以修改。完成后如下图。











5. 第5步是在第4步结果的基础上再添加第2个条件,即在第4步结果里找出坡度小于40度的区域。因为已经有了小于40度的区域数据,这个操作的实质就是找出小于40度的区域和和第4步结果区域中公共的部分。这里使用Intersect工具来完成这个操作。







从ArcToolbox窗口添加Intersect工具到模型,添加小于40度的区域数据slopelt40。



用连接器分别将坡度数据及第4步的输出结果与Intersect工具连接。Intersect工具有多个输入要素类,输出结果为输入要素类的公共部分。连接后模型如下图。







还需要做一步图形拆分的操作,从ArcToolbox窗口添加Multipart To Singlepart工具到模型。











6. 第6步是在第5步的基础上再增加第4个条件,即面积必须大于1089000平方英尺。



用第1步中的方法添加Select工具,添加到模型后此工具显示名称为Select(2),因为在同一个模型中已经有一个Select工具。用连接器连接第5步的结果和select(2)工具,然后右键单击select(2)工具打开工具对话框,设置最终输出要素类和选择表达式如下:







7. 运行模型。点击Model菜单下的Run Entire Model或点击工具栏中的按钮,运行模型。模型运行过程中,各种状态会有不同的显示。例如运行完的结果显示中增加灰色阴影,当前正在运行的工具显示为红色。全部运行完成后,右键单击结果选择Add To Display,用来将结果数据添加到地图文档中进行显示。模型运行完后查看结果Result,与7.2中的结果一致。







练习数据下载:链接: http://pan.baidu.com/s/1i4FuY9n 密码: sk6y





本入门教程各章节连接:

ArcGIS for Desktop入门教程_第一章_引言: http://zhihu.esrichina.com.cn/?/article/524

ArcGIS for Desktop入门教程_第二章_Desktop简介: http://zhihu.esrichina.com.cn/?/article/525

ArcGIS for Desktop入门教程_第三章_Desktop软件安装: http://zhihu.esrichina.com.cn/?/article/526

ArcGIS for Desktop入门教程_第四章_入门案例分析: http://zhihu.esrichina.com.cn/?/article/527

ArcGIS for Desktop入门教程_第五章_ArcCatalog使用: http://zhihu.esrichina.com.cn/?/article/528

ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图: http://zhihu.esrichina.com.cn/?/article/529

ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析: http://zhihu.esrichina.com.cn/?/article/530

ArcGIS for Desktop入门教程_第八章_Desktop学习资源 : http://zhihu.esrichina.com.cn/?/article/531

最新文章

  1. Eclipce结合Ant进行编译、打包、传输、运行
  2. php中mysql操作的buffer知识
  3. 用Quartz进行作业调度(转)
  4. spring-mysqlclient开源了
  5. 【BZOJ2653】【主席树+二分】middle
  6. WPF - EventSetter
  7. linux下怎么卸载自带的JDK和安装想要的JDK
  8. SQL-Oracle游标
  9. php xml DOM编码
  10. java之内存分布图
  11. LoadRunner接口测试方法
  12. ssm项目跨域访问
  13. java web----URL
  14. POJ 1179 - Polygon - [区间DP]
  15. remmina从linux远程桌面连接windows失败解决方法
  16. 客户端服务端web问题
  17. Spring对象依赖关系处理
  18. Visual Studio新的 .csporj 文件
  19. sqlserver 获取数据库、表和字段相关信息
  20. QSerialPort-Qt串口通讯

热门文章

  1. 微信小程序从零开始开发步骤(二)
  2. 分布式ID解决方案
  3. 跟上 Java 8 – 了解 lambda
  4. 最好用的中文速查表(Bash,Gdb,VIM,Nano)
  5. 二分图之最小边覆盖(poj3020)
  6. [Android]TextView实现分散对齐(两端对齐)
  7. Java、JVM、JRE、JDK等组件的理解
  8. WPF 使用不安全代码快速从数组转 WriteableBitmap
  9. RGB值得计算公式
  10. Real-time storage area network