需要 Spatial Analyst 许可。
插图
使用方法
输入源数据可以是要素类或栅格。
当输入源数据是栅格时,源像元集包括具有有效值的源栅格中的所有像元。具有 NoData 值的像元不包括在源集内。值 0 将被视为合法的源。可使用提取工具创建源栅格。
当输入源数据是要素类时,源位置在执行分析之前从内部转换为栅格。
当输入源数据为要素数据时,如果输出像元大小相对于输入中的详细信息较为粗略,则必须注意输出像元大小的处理方式。内部栅格化过程将使用与要素转栅格工具相同的默认像元分配类型方法,即像元中心法。这意味着,不在像元中心的数据将不会包含在中间栅格化源输出中,因此也不会在距离计算中表示出来。例如,如果您的源是一系列相对于输出像元大小偏小的面,如建筑物覆盖区,则可能只有一部分面会落入输出栅格像元的中心,从而导致分析中会缺少其他大部分面。
为避免出现这种情况,在中间步骤,您可以使用要素转栅格工具直接将输入要素栅格化并设置字段参数。然后将生成的输出用作希望使用的特定距离工具的输入。或者,您可以选择一个小的像元大小以从输入要素中捕获适当量的详细信息。
最大距离以与输入源数据相同的地图单位指定。
如果输入栅格或要素源数据是从结果为一或零的函数派生的栅格,则输入值栅格将非常有用。当这些函数丢失与源像元位置相关联的原始区域值时, 输入赋值栅格将能够恢复这些值,或允许对源像元中的其他区域值组合进行分析。
使用输入值栅格时,可能会更改欧氏分配输出的配置和结果。但不会影响可选欧氏距离或方向结果。
输出像元大小可以通过数值进行定义,也可以从现有栅格数据集获取。如果没有将像元大小明确指定为参数值,则将从像元大小环境获取相应值(前提是已指定环境)。如果参数像元大小和环境像元大小均未指定,则默认的输出像元大小会根据输入数据集的类型,按照如下所示方式进行确定。
- 如果输入数据集是栅格,则使用数据集的像元大小。
- 如果输入数据集为要素,且设置了捕捉栅格环境,则使用捕捉栅格的像元大小。如果未设置捕捉栅格,则像元大小会通过使用范围的宽度或高度中的较小值除以 250 来计算,其中范围位于在环境中指定的输出坐标系内。
如果使用数值指定像元大小,则工具会直接将其用于输出栅格。
如果使用栅格数据集指定像元大小,则该参数将显示栅格数据集的路径而不是像元大小的值。如果数据集的空间参考与输出空间参考相同,则栅格数据集的像元大小将直接用于分析。如果数据集的空间参考与输出空间参考不同,则将基于所选的像元大小投影方法进行投影。
此工具的默认处理范围是输入的并集。系统将处理两个输入数据集的组合范围。
该工具支持并行处理。如果您的计算机具有多个处理器或处理器具有多个内核,则会获得更好的性能,特别是处理较大数据集时。使用 Spatial Analyst 进行并行处理帮助主题提供了有关此功能及其配置方法的详细信息。
使用并行处理时,将写入临时数据以管理正在处理的数据区段。默认的临时文件夹位置在您的本地 C: 驱动器上。您可以通过设置名为 TempFolders 的系统环境变量并指定要使用的文件夹路径(例如,E:\RasterCache),来控制此文件夹的位置。如果您具有计算机管理权限,还可以使用注册表项(例如,[HKEY_CURRENT_USER\SOFTWARE\ESRI\ArcGISPro\Raster])。
默认情况下,此工具将使用可用内核数的 50%。如果输入数据大小小于 5,000 * 5,000 个像元,则会使用更少的内核。您可以控制该工具用于并行处理因子环境的内核数。
有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst。
语法
EucAllocation(in_source_data, {maximum_distance}, {in_value_raster}, {cell_size}, {source_field}, {out_distance_raster}, {out_direction_raster}, {distance_method}, {in_barrier_data}, {out_back_direction_raster})
参数 | 说明 | 数据类型 |
in_source_data | 输入源位置。 此为栅格或要素数据集,用于标识计算每个输出像元位置的欧氏距离所依据的像元或位置。 对于栅格,输入类型可以为整型或浮点型。 如果输入源栅格是浮点型,则必须将 in_value_raster 参数设置为整型。此类赋值栅格将优先于 source_field 参数设置。 | Raster Layer; Feature Layer |
maximum_distance (可选) | 累积距离值不能超过的阈值。 如果累积的欧氏距离值超过该值,则像元位置的输出值为 NoData。 默认距离是到输出栅格边的距离。 | Double |
in_value_raster (可选) | 标识将用于每个输入源位置的区域值的输入整型栅格。 对于每个源位置(像元或要素),in_value_raster 值将被分配给所有分配到源位置供计算使用的像元。此类赋值栅格将优先于 source_field 参数设置。 | Raster Layer |
cell_size (可选) | 将创建的输出栅格的像元大小。 此参数可以通过数值进行定义,也可以从现有栅格数据集获取。如果未将像元大小明确指定为参数值,则将使用环境像元大小值(如果已指定);否则,将使用其他规则通过其他输出计算像元大小。有关详细信息,请参阅用法部分。 | Analysis Cell Size |
source_field (可选) | 用于向源位置分配值的字段。必须为整型。 如果已设置 in_value_raster 参数,则该输入中的值将优先于 source_field 参数设置。 | Field |
out_distance_raster (可选) | 输出欧氏距离栅格。 此距离栅格标识每个像元至最近源像元、源像元集或源位置的欧氏距离。 输出栅格为浮点型。 | Raster Dataset |
out_direction_raster (可选) | 输出欧氏方向栅格。 此方向栅格包含计算的方向(以度为单位),每个像元中心都来自最近的源像元中心。 值的范围是 0 度到 360 度,并为源像元保留 0 度。正东(右侧)是 90 度,且值以顺时针方向增加(180 是南方、270 是西方、360 是北方)。 输出栅格为整型。 | Raster Dataset |
distance_method (可选) | 指定是否使用平面(平地)或测地线(椭球)方法计算距离。
| String |
in_barrier_data (可选) | 定义障碍的数据集。 可通过整型栅格、浮点型栅格或要素图层来定义障碍。 | Raster Layer; Feature Layer |
out_back_direction_raster (可选) | 输出欧氏反向栅格。 反向栅格中包含以度为单位的计算方向。该方向可用于识别沿最短路径返回最近源同时避开障碍的下一像元。 值的范围是 0 度到 360 度,并为源像元保留 0 度。正东(右侧)是 90 度,且值以顺时针方向增加(180 是南方、270 是西方、360 是北方)。 输出栅格为浮点类型。 | Raster Dataset |
返回值
名称 | 说明 | 数据类型 |
out_allocation_raster | 输出欧氏分配栅格。 像元值(区域)标识最近源位置。 输出栅格为整型。 | Raster |
代码示例
以下 Python 窗口脚本演示了 EuclideanAllocation 工具的使用方法。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
eucAllocate = EucAllocation("observers", 50000, "elevation", 25, "FID",
"c:/sapyexamples/output/outeucdist",
"c:/sapyexamples/output/outeucdir")
eucAllocate.save("c:/sapyexamples/output/eucalloc")
采用欧氏距离计算各个像元的最近源位置区域。
# Name: EucAllocation_Ex_02.py
# Description: Calculates, for each cell, the zone of the closest
# source location in Euclidean distance.
# 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
inSource = "observers.shp"
maxDist = 50000
valRaster = "elevation"
cellSize = 25
sourceField = "FID"
optOutDist = "c:/sapyexamples/output/outeucdist02"
optOutDir = "c:/sapyexamples/output/outeucdir02"
# Execute EucAllocation
eucAllocate = EucAllocation(inSource, maxDist, valRaster, cellSize,
sourceField, optOutDist, optOutDir)
# Save the output
eucAllocate.save("c:/sapyexamples/output/eucalloc02")
许可信息
- Basic: 需要 Spatial Analyst
- Standard: 需要 Spatial Analyst
- Advanced: 需要 Spatial Analyst