成本路径 (空间分析)
用法
-
在成本距离方面,成本路径工具可生成用于记录最小成本路径或从所选位置到累积成本面内所定义的最近源像元之间的路径的输出栅格。
-
在运行成本路径之前,通常需要运行一个或多个加权成本工具(成本距离、成本回溯链接或成本分配),才能创建输入成本距离和回溯链接栅格。它们是成本路径必需的输入栅格。
-
在扫描过程中遇到每个最小成本路径时,将会为其分配一个值。成本路径的原始源栅格(成本距离和回溯链接是从该栅格中获得的)上的终止像元接收一,第一条路径接收三,第二条路径接收四,依此类推。值二将为具有部分公共成本路径的路径的合并部分而保留。
-
当输入目标数据是栅格时,目标像元集包括输入栅格中的所有像元或具有有效值的要素目标数据。具有 NoData 值的像元不包括在源集内。值零将被视为合法目标。使用提取工具可轻松地创建目标栅格。
当源输入是要素时,默认情况下,将使用第一个有效可用字段。如果无有效字段存在,则将使用 ObjectID 字段(例如 OID 或 FID,取决于要素输入的类型)。
使用输入要素目标的面要素数据时,如果输出像元相对于输入中的详细信息较为粗略,则必须注意输出像元大小的处理方式。在使用面转栅格工具的内部栅格化过程中,像元分配类型的默认设置为 CELL_CENTER。这意味着,不在像元中心的数据将不会包含在中间栅格化目标输出中,因此也不会在距离计算中表示出来。例如,如果您的目标是一系列相对于输出像元大小偏小的面,如建筑物覆盖区,则可能只有一部分面会落入输出栅格像元的中心,从而导致分析中会缺少其他大部分面。
为防止出现这种情况,在中间步骤,您可以使用面转栅格工具直接将输入要素栅格化并设置优先级字段,将生成的输出用作距离工具的输入。或者,您可以选择一个足够小的像元大小以从输入要素中捕获适当量的详细信息。
-
当多条路径合并到一起并随着余下的距离回到同一路线上的源时,两条路径相交的线段将被分配值 2。这些路径中的一条路径的值不能被分配给路径的合并部分,因为合并部分属于两条路径。
-
成本路径不遵守掩膜环境设置。分析范围应与成本距离和成本回溯链接栅格相同。
-
成本路径将忽略像元大小环境设置,并将输入成本回溯链接栅格数据的像元大小用于输出栅格。如果对回溯链接栅格重采样使其具有不同分辨率,则该栅格的模式将被严重更改。为避免出现任何混淆,使用此工具时不得设置像元大小。
-
成本路径也可用于获取沿数字高程模型 (DEM) 的最小电阻路径。在这种情况下,将 DEM 用于输入成本距离栅格数据,并将流向工具的输出用于输入成本回溯链接栅格数据。有效的流向栅格值是 1、2、4、8、16、32、64 和 128,回溯链接栅格中的有效值是 1、2、3、4、5、6、7 和 8。这两种栅格都是可接受的栅格。
-
当输入目标数据为要素时,它必须至少含有一个有效字段。
语法
参数 | 说明 | 数据类型 |
in_destination_data |
用于识别这些像元的栅格或要素数据集(将确定的最小成本路径为这些像元与成本最低的源之间的路径)。 如果输入是一个栅格,则输入由具有有效值(零是有效值)的像元组成,并且必须为其余的像元指定 NoData。 | Raster Layer | Feature Layer |
in_cost_distance_raster |
要用于确定从目标位置到源的最小成本路径的成本距离栅格的名称。 成本距离栅格通常通过成本距离、成本分配或成本回溯链接工具进行创建。对于每个像元,成本距离栅格存储从每个像元到一组源像元的成本面上的最小累积成本距离。 | Raster Layer |
in_cost_backlink_raster |
用于确定要经由最小成本路径返回到源的路径的成本回溯链接栅格名称。 对于成本回溯链接栅格内的每个像元,值可识别在从像元到单个源像元或一组源像元的最小累积成本路径上作为下一像元的邻近像元。 | Raster Layer |
path_type (可选) |
用于对输入目标数据上的值和区域在成本路径计算中的解释方式进行定义的关键字。
| String |
destination_field (可选) |
用于获得目标位置的值的字段。 输入要素数据必须至少包含一个有效字段。 | Field |
返回值
名称 | 说明 | 数据类型 |
out_raster |
输出成本路径栅格。 输出栅格为整型。 | Raster |
代码实例
以下 Python 窗口脚本演示了成本路径工具的使用方法。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCostPath = CostPath("observers", "costraster", "backlink2", "EACH_CELL")
outCostPath.save("c:/sapyexamples/output/costpath")
计算从源到目标的最小成本路径。
# Name: CostPath_Ex_02.py
# Description: Calculates the least-cost path from a source to
# a destination.
# 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
inDestination = "observers.shp"
costRaster = "costraster"
backLink = "backlink2"
method = "EACH_CELL"
destField = "FID"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute CostPath
outCostPath = CostPath(inDestination, costRaster, backLink, method,
destField)
# Save the output
outCostPath.save("c:/sapyexamples/output/costpath02")