需要 Spatial Analyst 许可。
描述
在两个或多个输入区域之间生成成本最低的连通性网络。
插图
使用方法
输入区域可以是栅格数据或要素数据。
在栅格中,区域是含有相同值且彼此相连(邻近)的一组像元。输入区域由栅格识别时,如果有任何区域(具有相同值的像元)由多个区域组成,首先请运行区域合并工具作为一项预处理步骤,以便向每个区域分配唯一值。将生成的栅格用作成本连通性工具的输入区域。
如果输入区域由面、线或点数据进行标识,则系统会利用要素 ID 将其转换为栅格,以确保生成的区域具有唯一值。因此,无法输入多部分面。输入多点数据后,成本连通性会随机选择位置上的其中一个点作为区域值。
您可以通过像元大小环境来控制栅格化输入要素区域的分辨率。默认情况下,分辨率将会设置为输入成本栅格的分辨率。
当输入区域数据为面要素数据时,如果输出像元大小相对于输入中的详细信息较为粗略,则必须注意输出像元大小的处理方式。内部栅格化过程将采用与面转栅格工具相同的默认像元分配类型方法,即CELL_CENTER。这意味着,不在像元中心的数据将不会包含在中间栅格化区域中,因此也不会在距离计算中表示出来。例如,如果您的区域是一系列相对于输出像元大小偏小的面(如建筑物覆盖区),则可能只有一部分面会落入输出栅格像元的中心,从而导致分析中缺少其他大部分面。
为避免出现这种情况,在中间步骤,您可以使用面转栅格工具直接将输入要素栅格化并设置优先级字段,并将生成的输出用作成本连通性工具的输入。或者,您可以选择一个足够小的像元大小以从输入要素中捕获适当量的详细信息。
如果区域输入为要素,则 ObjectID 字段(例如 OID 或 FID,取决于要素输入的类型)将被用作区域标识符。
如果输入区域是栅格且行 ID 的范围很大(即使只有几个区域),则成本连通性性能可能会受到负面影响。
输入成本栅格数据中含有 NoData 的像元位置充当障碍。
默认的处理范围与输入成本栅格的处理范围相同。
成本栅格不能包含零值,因为该算法是乘法过程。如果成本栅格中的确包含表示成本最低区域的零值,则请在运行成本连通性前,通过首先运行条件函数工具将零值更改为较小的正值(如 0.01)。如果零值表示的是应从分析中排除的区域,则应在运行成本连通性前,首先通过运行设为空函数工具将这些值更改为 NoData。
对于相邻连接的输出要素类,相邻要素并非通过欧氏距离进行识别,而是通过成本距离进行识别。因此,距某个区域最近的相邻区域指的是出行成本最低的区域,而不是距离上最近的区域。执行成本分配操作的目的是识别出那些彼此相邻的区域。
优化输出网络可从可选的相邻连接输出中生成的路径中创建。系统会将可选相邻连接输出中生成的路径转换为图论。其中区域为折点,路径为边,累积成本为边的权重。可通过路径的图形表达计算出最小跨度树,以确定两区域间出行所需的成本最低的路径网络。
每个成本最低的路径首先到达面或多像元区域的外边界。然后,此工具会从该区域的周边继续处理带有其他线段的路径,允许区域之间设置入口点和出口点,以及在区域内移动。沿上述线段移动不会产生附加成本。
对于根据先验信息无法在最小跨度树内直接连接的区域,可使用成本距离和成本路径工具进行连接。例如,某个特定区域可能需要备选逃生路径,以供消防人员从该区域撤离。由于通过成本路径生成的路径仅能到达区域的边缘,因此,如果希望在集成的网络中使用这些备选路径来执行后续的网络分析,则需要在区域内扩展这些路径,以便将其与最小跨度树网络中的路径进行连接。
可选相邻连接输出可以用作最小跨度树网络的替代网络。该输出可将每个区域与其相邻成本区域相连接,从而生成具有多条路径的更加复杂的网络。要素类可以按原样使用,也可以作为创建您自己的所需网络的基础。为此,可以使用选择下拉列表中的按属性选择工具、工具工具栏上的选择要素工具,或者选择地理处理工具在网络中选择所需的特定路径。在网络中选择所需的特定路径。可以根据区域知识和生成的属性表中与路径相关的统计数据来确定要选择的路径。
针对最小跨度树或可选相邻连接生成的网络可以转换为 Network Analyst 网络,以执行附加网络分析。
有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst。
语法
CostConnectivity(in_regions, in_cost_raster, out_feature_class, {out_neighbor_paths})
参数 | 说明 | 数据类型 |
in_regions | 要通过最低成本网络连接的输入区域。 区域可以通过栅格或要素数据集来定义。 如果区域输入为栅格,则区域将通过值相同的连续(邻近)像元组进行定义。每个区域必须具有唯一的编号。不属于任何区域的像元一定是 NoData。栅格类型必须为整型,值可正可负。 如果区域输入为要素数据集,则它可以是面、线或点。面要素区域不能包含多部分面。 | Raster Layer; Feature Layer |
in_cost_raster | 定义以平面测量的经过每个像元所需的阻抗或成本。 每个像元位置上的值表示经过像元时移动每单位距离所需的成本。每个像元位置值乘以像元分辨率,同时也会补偿对角线移动来获取经过像元的总成本。 成本栅格的值可以是整型或浮点型,但不可以为负值或零(不存在负成本或零成本)。 | Raster Layer |
out_feature_class | 优化(成本最低)路径网络的输出面要素类需要连接每个输入区域。 每条路径(或线)都是唯一标识的,同时属性表中的其他字段用于存储有关路径的特定信息。这些字段包括:
该信息有助于您深入分析网络内的路径。 由于每条路径都是由唯一的线所表示,因此多条路径经过同一路线的位置会存在多条线。 | Feature Class |
out_neighbor_paths (可选) | 该输出面要素类用于标识从每个区域到其每个最近成本邻域的所有路径。 每条路径(或线)都是唯一标识的,同时属性表中的其他字段用于存储有关路径的特定信息。这些字段包括:
该信息有助于深入分析网络内的路径,而且对于决定应该移除哪条路径尤其有用(如有必要)。 由于每条路径都是由唯一的线所表示,因此多条路径经过同一路线的位置会存在多条线。 | Feature Class |
代码示例
CostConnectivity 示例 1(Python 窗口)
以下 Python 窗口脚本演示了 CostConnectivity 工具的使用方法。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
CostConnectivity("regions.shp", "cost_ras", "C:/sapyexamples/output/costnetwork", "C:/sapyexamples/output/costneigh")
CostConnectivity 示例 2(独立脚本)
生成用于连接各个输入区域的路径的最低成本优化网络。
# Name: CostConnectivity_Ex_02.py
# Description: Calculates the least-cost network
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRegionData = "regions.shp"
inCostRaster = "cost_ras"
outCostNetwork = "C:/sapyexamples/output/costnetwork"
outOptCostNeigh = "C:/sapyexamples/output/costneigh"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute Cost Connectivity
CostConnectivity(inRegionData, inCostRaster, outCostNetwork, outOptCostNeigh)
环境
许可信息
- Basic: 需要 Spatial Analyst
- Standard: 需要 Spatial Analyst
- Advanced: 需要 Spatial Analyst