需要 Spatial Analyst 许可。
在本练习中,您将通过 ArcGIS Spatial Analyst 扩展模块 工具构建一个适宜性模型来为新学校查找合适的位置。以下内容概述了构建此适宜性模型的步骤。
本练习中的输入数据集为 landuse、elevation、rec_sites 和 schools。根据这些数据集,您需要派生出坡度、到娱乐休闲场所的距离以及到现有学校的距离 3 个数据集,然后按照相同级别(从 1 到 10)对这些派生数据集重分类。您需要根据影响百分比对派生数据集和 landuse 数据集赋予权重,之后合并这些数据集以生成一个显示新学校适宜位置的地图。然后,您需要从可选位置中选择新学校的最佳位置。
完成此练习大约需要 45 分钟的时间。开始本练习前,请确保已打开在练习 1 中创建的 Site Analysis 地图文档。
创建新工具箱
首先需要创建一个新工具箱来存储在本练习和下一练习中创建的模型。
- 在 Spatial Analyst 文件夹中创建一个新的工具箱,并将此工具箱命名为 Site Analysis Tools。
创建新模型
您需要创建一个模型来执行 Spatial Analyst 任务。在模型构建器中将多个工具串连在一起即可构建一个模型。模型创建完毕后,您可以轻松地使用参数值、不同的输入数据或反复运行模型以进行测试并与其他用户共享此模型。要了解有关模型构建器的详细信息,请转至什么是模型构建器。
在本次练习中,您将创建一个模型来为新学校查找合适的位置。
- 右键单击 Site Analysis Tools 工具箱,然后单击新建 > 模型。
将打开一个空的模型构建器会话。
重命名模型
- 在模型的主菜单上,单击模型 > 模型属性。
- 单击常规选项卡。
- 在名称文本框中输入 FindSchool,在标注文本框中输入 Find location for school。
名称有可能在脚本和 Python 窗口中调用。而标注则是模型本身的显示名称。
- 选中存储相对路径名(不是绝对路径)复选框。
选中此框可相对于工具箱的位置设置工具引用的所有源路径;因此,即便模型被移至不同的目录,仍然能够被成功执行。
指定环境设置
对数据执行分析之前,您应对所有相关的环境设置进行设定。有关如何设置环境以及分析环境之间级别的详细信息,请转至 ArcGIS Spatial Analyst 扩展模块 的分析环境。
由于您的环境设置只适用于此模型的各个过程,因此您将为整个模型设定环境设置参数。
- 单击环境选项卡。
- 展开处理范围,然后选中范围。
- 展开栅格分析,然后选中像元大小。
- 单击值。
- 展开处理范围。设置范围,方法是单击下拉箭头,然后选择与图层 elevation 相同。
- 展开栅格分析。设置像元大小,方法是单击下拉箭头,然后选择与图层 elevation 相同。
elevation 图层的像元大小将被应用于后续的所有栅格输出。elevation 数据集具有最大像元大小(30 米)。
- 在环境设置 窗口中单击确定。
- 在模型属性 窗口中单击确定。
- 在工具条上,单击保存按钮 。
派生数据集
接下来就可以开始处理专题数据以定位适合新学校的区域。将从高程数据中派生出如下内容:
- 从 elevation 数据集中派生出“坡度”。
- 从 rec_sites 数据集中派生出“距娱乐休闲场所的距离”。
- 从 schools 数据集中派生出“距现有学校的距离”。
模型的第一部分如下图所示:
- 将图层 elevation、rec_sites 和 schools 从内容列表拖至模型中。
- 单击坡度工具并将其从 Spatial Analyst“表面分析”工具集拖至模型中,然后将该工具与 elevation 数据对齐。
这样,即会在显示窗口中创建一个引用坡度工具的元素。
- 在“Spatial Analyst Tools”工具箱下的“距离分析”工具集中找到欧氏距离工具。单击欧氏距离工具并将其拖至模型中,然后将该工具与 rec_sites 对齐。
- 重复上一步骤,将欧氏距离工具与 schools 对齐。
请注意,每次向模型添加同一工具时,在工具元素的名称后边都会附加一个数字。当第二次向模型添加欧氏距离时,标注中工具名称的后边会附带 (2)。如果需要,您可以更改这些标注,但本示例中没有必要进行此操作。
- 单击添加连接工具 。
- 使用添加连接工具将 elevation 数据集与坡度工具相连接。要执行此操作,请单击 elevation,然后单击坡度工具。
- 重复上一步骤,这次需要将 rec_sites 连接到欧氏距离工具,而将 schools 连接到欧氏距离 (2) 工具。
- 在模型工具条上,单击选择工具 ,因为您不再需要添加连接工具。
- 单击自动布局按钮 ,然后单击全图按钮 将当前图示属性应用于元素并将元素放置在显示窗口内。
- 在工具条上,单击保存按钮 。
从 elevation 派生坡度
由于该区域多为山地地形,因此您需要寻找地形相对平坦的区域来建造学校,这就需要将坡度列入考虑范围之内。
- 右键单击坡度工具,然后单击打开,或者双击坡度工具。
- 保留输入栅格和输出测量单位的默认值。
- 接受输出栅格参数值的默认位置,输入 slope_out 作为名称。
设置一个有意义的输出名称 (slope_out) 有助于在练习 3 的后半部分中定位该数据。
- 对于 Z 因子,请输入 0.3048 以将 Z 值转换为与 x,y 单位相同的测量单位(从英尺转换为米)。
- 单击确定。
- 右键单击坡度工具的输出变量,然后单击重命名。
- 输入 Slope Output,然后单击确定。
派生距娱乐休闲场所的距离
要查找紧邻娱乐休闲场所的位置,您必须先计算到娱乐休闲场所的“欧氏”(直线)距离。
- 将鼠标悬停在与 rec_sites 连接的欧氏距离工具上。您可以轻松查看为此工具设置的所有默认参数。无需调整其中任何一个参数。
您接受了最大距离的默认值,因而将该参数留空。因此,会将输出栅格的边用作最大距离。从先前针对高程数据的输出像元大小设定的环境设置中获取输出像元大小。在本练习中,不需要输出方向栅格数据。
- 将欧氏距离工具的输出变量重命名为距娱乐场所的距离。
派生距学校的距离
要查找远离现有学校的位置,您必须先计算到学校的“欧氏”(直线)距离。
- 将鼠标悬停在与 schools 连接的欧氏距离 (2) 工具上。您可以轻松查看为此工具设置的所有默认参数。无需调整其中任何一个参数。
- 将欧氏距离 (2) 工具的输出变量重命名为距学校的距离。
运行模型以派生数据集
- 右键单击各输出变量(输出的坡度、距娱乐场所的距离和距学校的距离),然后单击添加至显示。
在启用添加至显示属性的情况下,每次运行模型时都会向视图中添加变量所引用的数据。
- 在模型工具条上单击运行按钮 以在模型中执行这三个工具 - 坡度、欧氏距离和欧氏距离 (2)。
请注意,当工具运行时,在进度对话框中会显示其进度,并以红色高亮显示正在引用该工具的工具。当工具完成运行时,工具及其输出会出现阴影,表示已在磁盘上创建了输出。
- 如果当前进度对话框可见,则选中成功完成时关闭此对话框复选框,然后单击关闭。
- 检查添加到 ArcMap 显示中的图层。
对于“输出的坡度”图层,在输出图层中会以红色显示较为陡峭的坡度,以绿色显示相对平缓的坡度。对于“距娱乐场所的距离”图层,随着距娱乐休闲场所越来越远,距离会随之增加。而对于“距学校的距离”图层,随着距学校越来越远,距离会随之增加。
对数据集进行重分类
构建适宜性模型时,第一步是派生数据集(如坡度)。接下来,对于每个输入条件(如坡度、土地利用类型、距娱乐休闲场所的距离和距学校的距离),研究区域内都有一个像元包含对应的值。您需要对这些派生数据集进行合并,以创建一幅适宜性地图,从而在其中标识出新学校的可能位置。然而,由于这些数据集的格式各不相同,无法直接对它们进行合并(例如,将坡度等于 15 度的像元值与土地利用等于 7(森林)的像元值进行合并),也无法获得有意义的答案来与其他位置进行对比。要合并这些数据集,首先需要将其设置为统一的度量级,如 1 到 10。这种统一的度量级用于确定特定位置(各像元)对于建造新学校的适合程度。值越高表示该位置越适合建学校。
通过加权叠加工具,您可以对各数据集的值进行加权,然后合并这些值。但“加权叠加”工具的输入必须包含离散整型值。土地利用数据已被归为离散值一类;例如,森林对应的值为 7,因此您可以直接将此数据集添加到加权叠加工具中,并为每个像元分配一个 1 到 10 范围内的度量级(将在教程的稍后部分执行此操作)。在先前步骤中派生出的数据集的值都是浮点型连续数据集(归为范围一类),所以您必须先对这些值进行重分类,以便各个值范围都能分配到一个离散整型值。如果您记得值所对应的范围,则指定给各范围的值可以是任意数字。这是因为您可以在加权叠加工具中对这些值进行加权(对派生的数据集进行重分类后的下一步操作)。然而,在重分类时对派生数据集的像元值进行加权更为简单。在加权叠加工具中,您可以接受默认值并使用输入值作为级别值。
您需要将各派生数据集重分类为统一的度量级,为每个范围指定一个介于 1 到 10 之间的离散整型值。各数据集中较适宜建立学校的属性将被分配较高的值。
此部分模型如下图所示:
- 在“Spatial Analyst Tools”工具箱的“重分类”工具集中找到重分类工具。单击重分类工具并将其拖至模型构建器中,使其与输出的坡度对齐。然后再添加两个重分类工具,使它们分别与距娱乐场所的距离和距学校的距离对齐。
- 单击添加连接工具 。使用连接工具进行连接:
- 将输出的坡度连接到重分类工具
- 将距娱乐场所的距离连接到重分类 (2) 工具
- 将距学校的距离连接到重分类 (3) 工具
- 单击模型工具条上的选择工具 。
- 单击自动布局按钮 ,然后单击全图按钮 。
重分类坡度
通常情况下,在相对平坦的地表上选定新校址更为合理。基于此条件,您需要对坡度输出进行重分类,从而按照相等的间隔对值进行划分。为最适宜的坡度(角度最小的坡度)范围指定值 10,为最不适宜的坡度(角度最陡的坡度)范围指定值 1,中间的值则进行线性排列。
- 打开连接到输出的坡度变量的重分类工具。
- 接受重分类字段参数的默认值,以便使用 Value 字段。
- 单击分类。
- 单击方法下拉箭头,然后单击相等间隔。
- 单击类别下拉箭头,然后单击 10。
- 单击确定。
- 单击对新值取反。
对值取反会将较高的新值应用于表示坡度较平缓的值,因为这些区域更适合工程建筑。
- 接受输出栅格参数的默认值。
- 单击确定。
- 将重分类工具中的输出变量重命名为 Reclassed slope。
重分类到娱乐休闲场所的距离
学校位置应尽可能靠近休闲娱乐休闲设施。您需要对“到娱乐休闲场所的距离”的输出值进行重分类,为表示距娱乐休闲场所最近的区域(最适合的位置)的值范围指定数字 10,为表示远离娱乐休闲场所的区域(最不适合的位置)的值范围指定数字 1,中间的值则进行线性排列。
- 打开连接到距娱乐场所的距离变量的重分类工具。
- 接受重分类字段参数的默认值,以便使用 Value 字段。
- 单击分类。
- 将方法设置为相等间隔,并将分类编号设置为 10。
- 单击确定。
- 单击对新值取反。
单击对新值取反,以使靠近娱乐休闲设施的位置能分配到较高的新值,因为这些区域更适合建学校。
- 接受输出栅格参数的默认路径和名称。
- 单击确定。
- 将重分类 (2) 工具的输出变量重命名为重分类的到娱乐场所的距离。
重分类到学校的距离
有必要使新建学校远离现有学校以避免位于这些学校的招生区范围内。为此,您需要对“距学校的距离”图层进行重分类,为离现有学校最远的区域(最适合的位置)指定值 10,为靠近现有学校的区域(最不适合的位置)指定值 1,中间的值则进行线性排列。通过此操作,您可以确定紧邻现有学校以及远离现有学校的区域。
- 打开重分类 (3) 工具。
- 接受重分类字段参数的默认值,以便使用 Value 字段。
- 单击分类。
- 将方法设置为相等间隔,并将分类编号设置为 10。
- 单击确定。
要使新校址远离现有学校,因此您需要为表示较远位置的值范围指定较大数值,因为这些位置是建立学校的最理想位置。由于默认情况下会为旧值的较高范围(离现有学校较远的位置)分配较高的新值(更合适的位置),因此此处您不必更改任何值。
- 接受输出栅格参数的默认值。
- 单击确定。
- 将重分类 (3) 工具的输出变量重命名为重分类的到学校的距离。
执行重分类操作
- 右键单击各变量输出 - 重分类的坡度、重分类的到娱乐场所的距离和重分类的到学校的距离,然后单击添加至显示。
- 单击运行按钮 执行模型中的三个重分类工具。
- 在工具条上,单击保存按钮 。
- 检查添加到 ArcMap 显示中的图层。
具有较高值的位置(即梯度坡度平缓、紧邻娱乐休闲场所和远离现有学校的位置)比具有较低值的位置(即坡度较陡、远离娱乐休闲场所和紧邻现有学校的位置)更适合建立新学校。
为数据集设置权重和合并数据集
接下来可以将重分类的数据集和土地利用数据集进行合并以查找最适合的位置。用于表示坡度、到娱乐休闲场所的距离和到学校距离的重分类数据集的所有值已使用统一的度量级进行了重分类(较适合的像元具有较高的值)。土地利用数据集仍为原始格式,因为您可以将此数据集的像元值作为加权叠加过程的一部分进行加权。表示水域和湿地的区域的值将受限。您还需要将小于 4 的坡度值(由于坡度太陡,因此最不适合)标记为受限,以便排除这些值。如果所有数据集同等重要,则只需合并这些数据集,并赋予各数据集相同大小的影响即可;然而,在前文中我们已经了解到,在紧邻休闲娱乐设施并远离其他学校的位置处建立学校更为合适。因此您需要对所有的输入进行加权以便为各输入分配影响百分比。特定输入的百分比越高,则它在适宜性模型中的影响力也就越大。
您需要为输入分配以下影响百分比:
重分类的到娱乐休闲场所的距离:50% 重分类的到学校的距离:25% 重分类的坡度:13% 土地利用: 12%
此部分模型如下图所示:
- 单击加权叠加工具(位于 Spatial Analyst 工具箱的“叠加分析”工具集中)并将其拖至模型构建器中。
设置加权叠加操作
- 打开加权叠加工具。
- 在起始、终止和增量文本框中分别输入 1、10 和 1。
默认评估级别为 1 至 9(以 1 为增量)。重分类数据集时使用了范围为 1 至 10 的级别,因此在向加权叠加工具添加输入栅格之前,您需要将评估级别范围设置为从 1 至 10(以 1 为增量)。这表示您在添加输入数据集后将不必更新级别值。
- 单击应用。
- 向加权叠加工具添加重分类的坡度。
- 单击添加栅格行按钮 。
- 对于输入栅格,从下拉列表中选择重分类的坡度,并将输入字段保留为 Value。
- 单击确定。
栅格即被添加到加权叠加表中。字段列将显示重分类坡度的数据值。级别值列仿照字段列,因为评估级别已被设置为包含各输入栅格中的值范围。此时您可以修改各分类的级别值,但在重分类时,该输入的值已进行正确加权。
- 对各重分类数据集(包括“到娱乐休闲场所的距离的重分类结果”和“到学校的距离的重分类结果”)重复上一步骤。
- 对于“坡度的重分类结果”输入,单击级别值列中值为 1 的像元。
- 单击下拉箭头进行滚动,然后单击 Restricted。
一般情况下,不会在坡度大于大约 33% 的位置处建造学校,即使其他所有条件都很理想。您需要限制 1 至 3 范围内的值,因为这些值表示 33.431043 到 47.758633(最大坡度)的坡度。
- 将级别值 2 和 3 设置为 Restricted。
- 添加 landuse 图层,同时将输入字段设置为 LANDUSE。单击确定。
现在您需要对 landuse 图层的级别值进行加权,以使这些值能够与其他输入进行比较。较低值表示特定土地利用类型不太适于进行建筑活动。水域和湿地的级别值将被设置为“Restricted”,因为在这些类型的区域无法建立学校,因此应将其排除。
- 将 landuse 图层的默认级别值更改为以下值:
- 灌木丛/过渡带 (Brush/transitional) - 5
- 荒地 (Barren land) - 10
- 建筑区 (Built up) - 3
- 农业用地 (Agriculture) - 9
- 森林 (Forest) - 4
- 将表示 Water 和 Wetlands 的级别值设置为 Restricted。
- 在加权叠加表中折叠各栅格。
现在您需要基于各栅格在最终适宜性地图中的重要性(或权重)程度为各栅格分配影响百分比。
- 在 % 影响列中,输入各输入栅格的百分比:
- 重分类的到学校的距离为 25
- 重分类的到娱乐休闲场所的距离为 50
- 重分类的坡度为 13
- 土地利用为 12
- 接受输出栅格参数的默认值。
- 单击确定。
执行加权叠加操作
- 单击自动布局按钮 ,然后单击全图按钮 。
- 将加权叠加工具的输出变量重命名为适宜地区,然后单击确定。
- 右键单击适宜区域变量,然后单击添加至显示。
- 运行加权叠加工具。
- 在工具条上,单击保存按钮 。
检查添加到 ArcMap 显示中的图层。位置的值较高,表示地点越适合,即这些区域的土地利用类型适合、坡度较平缓、紧邻娱乐休闲设施且远离现有学校。请注意,标记为受限区域的值为零。
选择最佳位置
在图层上,每个像素都包含一个表示位置对于建立新学校的适宜度的值。值为 9 的像素是最适合的位置,而值为 0 的像素则不适合。因此,新学校的最佳位置应选在值为 9 的区域。选择最佳位置时要考虑的另一条件是适宜面积的大小。若干个值为 9 且相互连接的像素所构成的区域即适宜位置。
此部分模型如下图所示:
使用条件函数工具提取最佳位置
您需要使用条件函数工具中的条件表达式来提取唯一最佳位置。目前已经确定只有适宜性值为 9(suit_areas 输出的最高值)的位置才被视为最佳地点。在条件表达式中,值为 9 的所有区域都将保留其原始值 (9)。值小于 9 的区域将被更改为 NoData。
- 单击条件函数工具(位于“条件分析”工具集中)并将其拖动至模型构建器中。
- 打开条件函数工具。
- 单击输入条件栅格数据值下拉箭头,然后单击适宜区域变量。
- 输入条件 Value = 9 作为表达式参数的值。
- 单击输入条件为真时所取的栅格数据或常量值下拉箭头,然后单击适宜区域变量。
如果输入条件为真,则“输入条件为真时所取的栅格数据或常量值”的像元值将被应用于输出栅格像元。
- 将输入条件为假时所取的栅格数据或常量值参数值留空。
将输入条件为假时所取的栅格数据或常量值参数留空会应用默认值。默认情况下,如果输入条件栅格数据中的任何值都不满足输入的条件,则在输出栅格中将为其分配 NoData。
- 接受输出栅格参数的默认值。
- 单击确定。
- 单击自动布局按钮 ,然后单击全图按钮 。
- 将条件函数工具的输出变量重命名为最佳区域,然后单击确定。
- 右键单击最佳区域,然后单击添加至显示。
- 运行条件函数工具。
检查添加到 ArcMap 显示中的图层。这些即新学校的最佳候选位置。其中存在多个表示最佳位置的单一像元。30 米的像元对于学校位置而言太小。您需要通过使用众数滤波工具来对结果进行筛选,从而移除这些小区域。
使用众数滤波工具提炼最佳区域
- 单击众数滤波工具(位于“Spatial Analyst Tools”工具箱的“栅格综合”工具集中),并将其添加到模型构建器中。
- 打开众数滤波工具。
- 单击输入栅格下拉箭头,然后选择最佳区域变量。
- 接受输出栅格参数的默认值。
- 单击要使用的相邻点数下拉箭头,然后单击 EIGHT。
此选项指定了在滤波器核中使用的相邻像元的数。过滤器内核将是距当前像元最近的八个相邻像元(3 × 3 像元窗口)。
- 接受默认值以将 MAJORITY 用作替换阈值。
将 MAJORITY 用作替换阈值表示八个连接像元中的五个必须具有相同值才能保留当前像元的值。
- 单击确定。
- 将众数滤波工具的输出变量重命名为过滤后的最佳区域。
- 右键单击过滤后的最佳区域,然后单击添加至显示。
- 运行众数滤波工具。
- 在工具条上,单击保存按钮 并关闭模型。
检查添加到 ArcMap 显示中的图层。对比“过滤后的最佳区域”图层和“最佳区域”图层。许多被认为面积过小的最佳区域已被删除。
确定最终位置
您已经为建立新学校查找到了一些最佳位置。“过滤后的最佳区域”图层中的所有位置都适宜建立学校。本练习的最后一步就是在可选位置中找出最佳位置。roads 图层显示了斯托镇的所有道路。通过使用 roads 图层来检查“过滤后的最佳区域”图层,您会发现某些适于建立学校的区域与镇内的道路存在一定的距离。首先您需要通过找出与道路相交的适宜位置来排除这些区域。然后基于面积确定最佳位置。最佳学校位置的面积应大于 10 英亩或 40,469 平方米。
首先您需要将“过滤后的最佳区域”栅格转换为地理数据库中的要素类,以便可以使用生成的面积字段。使用按位置选择图层工具来选择与道路相交的要素。然后,使用按属性选择图层来基于面积从可选位置中确定最佳位置。最终,将根据所选内容创建新要素类,以便在下一练习中使用。
执行“栅格转面”工具
- 打开“转换工具”工具箱的“由栅格转出”工具集中的栅格转面工具。
- 单击输入栅格下拉箭头,然后单击过滤后的最佳区域栅格图层。
- 将字段参数的默认值保留为 VALUE。
- 接受输出面要素参数的默认路径,将名称更改为 opt_area。
- 保留简化面的默认选中状态。在将栅格转换为面时,将简化面以弱化阶梯式效果。
- 单击确定。
执行“按位置选择”工具
- 在内容列表中保留 landuse、elevation、hillshd、destination、roads、rec_sites、schools、输出的坡度和 opt_area 图层。在内容列表中,右键单击要移除的图层,然后单击移除。按住 Shift 键选择多个图层。ArcMap 内容列表如下图所示。
- 打开“数据管理”工具箱的“图层和表视图”工具集中的按位置选择图层工具。
- 对于输入要素图层,从下拉列表中选择 opt_area。
- 对于关系参数,接受默认值相交。
- 单击选择要素下拉箭头,然后单击 Roads 图层。
- 接受选择类型参数的默认值 NEW_SELECTION。
- 单击确定。
将在显示中选择所有与道路相交的要素。
执行“按属性选择图层”工具
- 打开“数据管理”工具箱的“图层和表视图”工具集中的按属性选择图层工具。
- 对于图层名称或表视图,从下拉列表中选择 opt_area。
- 对于选择类型参数,选择 SUBSET_SELECTION。
- 单击查询构建器按钮。
- 双击字段列表中的 Shape_Area 字段将其输入到表达式文本框中。
- 单击大于或等于按钮 。
- 输入 40469。
- 单击确定,然后再次单击确定。
其中存在一个要素满足等于或大于 10 英亩(40,469 平方米)的条件。
执行“复制要素”工具
- 打开“数据管理”工具箱的“要素”数据集中的复制要素工具。
- 单击输入要素下拉箭头,然后单击 opt_area 图层。
- 单击输出要素类参数旁边的浏览按钮 ,然后导航至 C:\Spatial Analyst\Stowe.gdb。这会将最终结果存储在 Stowe.gdb 而非 Scratch.gdb 中。
- 输入 final_site 作为输出要素类的名称,然后单击保存。
- 单击确定运行工具。
- 右键单击内容列表中的 opt_area,然后单击移除。
final_site 图层显示了新学校最佳地点的位置。
- 在标准 工具条上,单击保存按钮 。
概要
现在您已经完成了练习 3,您可以继续进行练习 4,也可以先暂停并稍后继续。