欧氏分配 (空间分析)
插图
![]() |
Euc_Alloc = EucAllocation(Source_Ras) |
用法
-
输入源数据可以是要素类或栅格。
-
当输入源数据是栅格时,源像元集包括具有有效值的源栅格中的所有像元。具有 NoData 值的像元不包括在源集内。值 0 将被视为合法的源。使用提取工具可轻松地创建源栅格。
-
当输入源数据是要素类时,源位置在执行分析之前从内部转换为栅格。栅格的分辨率可以由输出像元大小参数或像元大小环境来控制。默认情况下,分辨率将由输入空间参考中输入要素范围的宽度与高度中的较小值除以 250 来确定。
当输入源数据为面要素数据时,如果输出像元大小相对于输入中的详细信息较为粗略,则必须注意输出像元大小的处理方式。内部栅格化过程将采用与面转栅格工具相同的默认像元分配类型方法,即 CELL_CENTER。这意味着,不在像元中心的数据将不会包含在中间栅格化源输出中,因此也不会在距离计算中表示出来。例如,如果您的源是一系列相对于输出像元大小偏小的面,如建筑物覆盖区,则可能只有一部分面会落入输出栅格像元的中心,从而导致分析中会缺少其他大部分面。
为避免出现这种情况,在中间步骤,您可以使用面转栅格工具直接将输入要素栅格化并设置优先级字段,将生成的输出用作距离工具的输入。或者,您可以选择一个足够小的像元大小以从输入要素中捕获适当量的详细信息。
-
最大距离以与输入源数据相同的地图单位指定。
-
如果输入栅格或要素源数据是从结果为一或零的函数派生的栅格,则输入值栅格将非常有用。当这些函数丢失与源像元位置相关联的原始区域值时,输入值栅格将能够恢复这些值,或允许对源像元中的其他区域值组合进行分析。
-
使用输入值栅格时,可能会更改欧氏分配输出的配置和结果。但不会影响可选欧氏距离或方向结果。
-
如果在环境中已设置掩膜,且要被掩膜的像元将掩膜源,则欧氏计算将对其余的源像元产生作用。在计算中不考虑被掩膜的源像元。在输出栅格上会为这些像元位置分配 NoData。
-
由掩膜的像元创建的 NoData 值会在计算中忽略。会计算 NoData 值后面的像元的欧氏距离,就好像 NoData 值不存在一样。由于在输入表面上存在掩膜而被分配 NoData 的任意像元位置都会在所有输出栅格上接收到 NoData。
语法
参数 | 说明 | 数据类型 |
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 |
返回值
名称 | 说明 | 数据类型 |
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"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute EucAllocation
eucAllocate = EucAllocation(inSource, maxDist, valRaster, cellSize,
sourceField, optOutDist, optOutDir)
# Save the output
eucAllocate.save("c:/sapyexamples/output/eucalloc02")