成本分配 (Spatial Analyst)

需要 Spatial Analyst 许可。

描述

根据成本面上的最小累积成本计算每个像元的最小成本源。

了解有关成本距离工具的工作原理的详细信息

插图

成本分配图示
Cost_Alloc = CostAllocation(Source_Ras, Cost_Ras)

使用方法

  • 输入源数据可以是要素类或栅格。

  • 当输入源数据是栅格时,源像元集包括具有有效值的源栅格中的所有像元。具有 NoData 值的像元不包括在源集内。值 0 将被视为合法的源。可使用提取工具创建源栅格。

  • 当输入源数据是要素类时,源位置在执行分析之前从内部转换为栅格。栅格的分辨率可以由像元大小环境来控制。默认情况下,分辨率将会设置为输入成本栅格的分辨率。

  • 当输入源数据为要素数据时,如果输出像元大小相对于输入中的详细信息较为粗略,则必须注意输出像元大小的处理方式。内部栅格化过程将使用与要素转栅格工具相同的默认像元分配类型方法,即像元中心法。这意味着,不在像元中心的数据将不会包含在中间栅格化源输出中,因此也不会在距离计算中表示出来。例如,如果您的源是一系列相对于输出像元大小偏小的面,如建筑物覆盖区,则可能只有一部分面会落入输出栅格像元的中心,从而导致分析中会缺少其他大部分面。

    为避免出现这种情况,在中间步骤,您可以使用要素转栅格工具直接将输入要素栅格化并设置字段参数。然后将生成的输出用作希望使用的特定距离工具的输入。或者,您可以选择一个小的像元大小以从输入要素中捕获适当量的详细信息。

  • 要计算分配,源位置可以有相关的值,该值是由源字段参数指定的。如果输入源是整型栅格,则默认字段为 VALUE。如果输入源是要素,则默认字段为属性表中的第一个整型字段。如果输入源数据是浮点型栅格,则必须指定整型值栅格参数。

  • 当源输入是要素时,默认情况下,将使用第一个有效可用字段。如果不存在有效字段,则将使用 ObjectID 字段(例如 OIDFID,取决于要素输入的类型)。

  • 输入成本栅格数据中含有 NoData 的像元位置充当成本面工具中的障碍。在输入成本表面,任意被分配 NoData 的像元位置,都会在所有输出栅格(成本距离、分配和回溯链接)上接收到 NoData。

  • 输入赋值栅格在以下情况下非常有用:在替代值或区域将被使用时,或者在源是从产生二进制结果 0 或 1 的操作获得,从而失去了与这些位置相关联的原始区域值时。赋值栅格可恢复这些值,或允许对源位置中的其他区域值组合进行分析。

    如果使用赋值栅格,赋值栅格可能会更改成本分配输出的配置和结果,而不会影响可选成本距离或回溯链接结果。

  • 最大距离以与成本栅格相同的成本单位指定。

  • 对于输出距离栅格,距离至一组源位置的像元的最小成本距离(或最小累积成本距离)是从该像元至全部源位置的最小成本距离范围的下限。

  • 源的特征或与源之间的通信可由特定参数进行控制。源成本倍数参数可指定行程模式或源的量级,源开始成本设置移动开始前的开始成本,源阻力比率是一种关于累计成本影响的动态调整,例如,模拟徒步者会有多么疲劳,源容量设置源在到达极限前可同化多少成本。行驶方向可确定移动是否从源开始并移动至非源位置,或从非源位置移动回源。

  • 如果使用字段指定任一源特征参数,则根据给定源数据字段的信息,源特征将应用于各个源。当给定关键字或常量值,将应用于所有源。

  • 如果指定了源开始成本,并且行程方向行驶自源,则输出成本距离表面上的源位置将被设置为源开始成本值;否则,输出成本距离表面上的源位置将被设置为零。

  • 此工具的默认处理范围是输入成本栅格的范围。

  • 该工具支持并行处理。如果您的计算机具有多个处理器或处理器具有多个内核,则会获得更好的性能,特别是处理较大数据集时。使用 Spatial Analyst 进行并行处理帮助主题提供了有关此功能及其配置方法的详细信息。

    使用并行处理时,将写入临时数据以管理正在处理的数据区段。默认的临时文件夹位置在您的本地 C: 驱动器上。您可以通过设置名为 TempFolders 的系统环境变量并指定要使用的文件夹路径(例如,E:\RasterCache),来控制此文件夹的位置。如果您具有计算机管理权限,还可以使用注册表项(例如,[HKEY_CURRENT_USER\SOFTWARE\ESRI\ArcGISPro\Raster])。

    默认情况下,此工具将使用可用内核数的 50%。如果输入数据大小小于 5,000 * 5,000 个像元,则会使用更少的内核。您可以控制该工具用于并行处理因子环境的内核数。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

语法

CostAllocation(in_source_data, in_cost_raster, {maximum_distance}, {in_value_raster}, {source_field}, {out_distance_raster}, {out_backlink_raster}, {source_cost_multiplier}, {source_start_cost}, {source_resistance_rate}, {source_capacity}, {source_direction})
参数说明数据类型
in_source_data

输入源位置。

此为栅格或要素数据集,用于标识计算每个输出像元位置的最小积累成本距离所依据的像元或位置。

对于栅格,输入类型可以为整型或浮点型。

如果输入源栅格是浮点型,则必须将 in_value_raster 参数设置为整型。此类赋值栅格将优先于 source_field 参数设置。

Raster Layer; Feature Layer
in_cost_raster

定义以平面测量的经过每个像元所需的阻抗或成本。

每个像元位置上的值表示经过像元时移动每单位距离所需的成本。每个像元位置值乘以像元分辨率,同时也会补偿对角线移动来获取经过像元的总成本。

成本栅格的值可以是整型或浮点型,但不可以为负值或零(不存在负成本或零成本)。

Raster Layer
maximum_distance
(可选)

累积成本值不能超过的阈值。

如果累积的成本距离值超过该值,则像元位置的输出值为 NoData。最大距离为计算累积成本距离适用的范围。

默认距离是到输出栅格边的距离。

Double
in_value_raster
(可选)

标识将用于每个输入源位置的区域值的输入整型栅格。

对于每个源位置(像元或要素),in_value_raster 值将被分配给所有分配到源位置供计算使用的像元。此类赋值栅格将优先于 source_field 参数设置。

Raster Layer
source_field
(可选)

用于向源位置分配值的字段。必须为整型。

如果已设置 in_value_raster 参数,则该输入中的值将优先于 source_field 参数设置。

Field
out_distance_raster
(可选)

输出成本距离栅格。

此成本距离栅格用于标识每个像元到标识的源位置在成本表面上的最小累积成本距离。

源可以是一个像元、一组像元或者一个或多个要素位置。

输出栅格为浮点型。

Raster Dataset
out_backlink_raster
(可选)

输出成本回溯链接栅格。

回溯链接栅格包含从 0 到 8 的值,这些值用于定义方向或从某像元开始沿最小累积成本路径标识下一个邻近像元(接续像元),以达到最小成本源。

如果该路径穿过右侧的相邻像元,则为像元分配值 1、2 来与右下角像元相对应,并按顺时针方向依此类推。值 0 留供源像元使用。

回溯链接位置
Raster Dataset
source_cost_multiplier
(可选)

要应用于成本值的乘数。

可将其用于控制源的出行或放大模式。乘数越大,在每个像元间移动的成本将越大。

值必须大于零。默认值为 1。

Double; Field
source_start_cost
(可选)

开始计算成本时的起始成本。

适用于与源相关的固定成本规范。成本算法将从通过 source_start_cost 设置的值开始,而非从零成本开始。

值必须大于等于零。默认值为 0。

Double; Field
source_resistance_rate
(可选)

此参数将模拟累积成本增加时所耗费成本的增加情况。用于为行驶者的疲劳程度建模。利用到达某个像元的累积成本的增长量乘以阻力比率,再加上移动至下一个像元的成本。

这是修改后版本的用于计算移动经过像元的显性成本混合利率公式。随着阻力比率的值增加,之后访问的像元成本也随之增加。阻力比率越大,到达下一个像元需要加的附加成本也越多,将针对每个后续移动进行复合。由于阻力比率与复利率相似且累积成本值通常会很大,因此建议采用较小的阻力比率,如 0.02、0.005 或更小,具体取决于累积成本值。

值必须大于等于零。默认值为 0。

Double; Field
source_capacity
(可选)

源的行驶者的成本容量。

每个源的成本计算将在达到指定容量后停止。

值必须大于零。默认容量是到输出栅格边的容量。

Double; Field
source_direction
(可选)

应用源阻力比率和源开始成本时指定行驶者的方向。

  • FROM_SOURCE源阻力比率和源开始成本将应用于开始于输入源并行驶至非源像元的情况。这是默认设置。
  • TO_SOURCE源阻力比率和源开始成本将应用于开始于每个非源像元并行驶回输入源的情况。

指定将应用于所有源的 FROM_SOURCETO_SOURCE 关键字,或指定包含用于确定各个源行驶方向关键字的源数据字段。该字段必须包含字符串 FROM_SOURCETO_SOURCE

String; Field

返回值

名称说明数据类型
out_allocation_raster

输出成本分配栅格。

该栅格可识别花费最小累积成本便可到达的每个源位置(像元或要素)的区域。

输出栅格为整型。

Raster

代码示例

CostAllocation 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 CostAllocation 工具。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
out = ()
costAllocOut = CostAllocation("observers.shp", "costraster", "", "elevation",
                               "FID", "c:/sapyexamples/output/distout", 
                               "c:/sapyexamples/output/backlinkout", "Multiplier", "StartCost", "Resistance", 500000)
costAllocOut.save("c:/sapyexamples/output/costalloc")
CostAllocation 示例 2(独立脚本)

该脚本使用成本栅格、源点的要素图层以及若干可选参数,来计算含有最近源的值的像元的栅格。

# Name: CostAllocation_Ex_02.py
# Description: Calculates for each cell its nearest source 
#              based on the least accumulative cost over a 
#              cost surface.
# 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
inFeature = "observers.shp"
costRaster = "costraster"
maxDist = 25000
valRaster = "elevation"
featField = "FID"
outDistanceRaster = "c:/sapyexamples/output/distout"
outBacklink = "c:/sapyexamples/output/backlinkout"

# Execute CostAllocation
costAllocOut = CostAllocation(inFeature, costRaster, maxDist,
                              valRaster, featField, outDistanceRaster,
                              outBacklink)

# Save the output 
costAllocOut.save("c:/sapyexamples/output/costalloc01")

许可信息

  • Basic: 需要 Spatial Analyst
  • Standard: 需要 Spatial Analyst
  • Advanced: 需要 Spatial Analyst

相关主题