欧氏距离 (空间分析)
插图
![]() |
Euc_Dist = EucDistance(Source_Ras) |
用法
-
输入源数据可以是要素类或栅格。
-
当输入源数据是栅格时,源像元集包括具有有效值的源栅格中的所有像元。具有 NoData 值的像元不包括在源集内。值 0 将被视为合法的源。使用提取工具可轻松地创建源栅格。
-
当输入源数据是要素类时,源位置在执行分析之前从内部转换为栅格。栅格的分辨率可以由输出像元大小参数或像元大小环境来控制。默认情况下,分辨率将由输入空间参考中输入要素范围的宽度与高度中的较小值除以 250 来确定。
当输入源数据为面要素数据时,如果输出像元大小相对于输入中的详细信息较为粗略,则必须注意输出像元大小的处理方式。内部栅格化过程将采用与面转栅格工具相同的默认像元分配类型方法,即 CELL_CENTER。这意味着,不在像元中心的数据将不会包含在中间栅格化源输出中,因此也不会在距离计算中表示出来。例如,如果您的源是一系列相对于输出像元大小偏小的面,如建筑物覆盖区,则可能只有一部分面会落入输出栅格像元的中心,从而导致分析中会缺少其他大部分面。
为避免出现这种情况,在中间步骤,您可以使用面转栅格工具直接将输入要素栅格化并设置优先级字段,将生成的输出用作距离工具的输入。或者,您可以选择一个足够小的像元大小以从输入要素中捕获适当量的详细信息。
-
最大距离以与输入源数据相同的地图单位指定。
-
分配为不可用的输出,因为在源数据中没有浮点信息。如果希望使用分配输出,则使用可同时生成三个输出(分配、距离和方向)的欧氏分配。
-
如果在环境中已设置掩膜,且要被掩膜的像元将掩膜源,则欧氏计算将对其余的源像元产生作用。在计算中不考虑被掩膜的源像元。在输出栅格上会为这些像元位置分配 NoData。
-
由掩膜的像元创建的 NoData 值会在计算中忽略。会计算 NoData 值后面的像元的欧氏距离,就好像 NoData 值不存在一样。由于在输入表面上存在掩膜而被分配 NoData 的任意像元位置都会在所有输出栅格上接收到 NoData。
语法
参数 | 说明 | 数据类型 |
in_source_data |
输入源位置。 此为栅格或要素数据集,用于标识计算每个输出像元位置的欧氏距离所依据的像元或位置。 对于栅格,输入类型可以为整型或浮点型。 | Raster Layer | Feature Layer |
maximum_distance (可选) | 定义累积距离值不能超过的阈值。 如果累积的欧氏距离值超过该值,则像元位置的输出值为 NoData。 默认距离是到输出栅格边的距离。 | Double |
cell_size (可选) | 要创建的输出栅格的像元大小。 如果已明确设置该像元大小,则为环境中的值。如果未设置为环境中的值,默认像元大小取决于输入源数据是栅格还是要素,具体如下:
| Analysis Cell Size |
out_direction_raster (可选) | 输出欧氏方向栅格。 此方向栅格包含计算的方向(以度为单位),每个像元中心都来自最近的源像元中心。 值的范围是 0 度到 360 度,并为源像元保留 0 度。正东(右侧)是 90 度,且值以顺时针方向增加(180 是南方、270 是西方、360 是北方)。 输出栅格为整型。 | Raster Dataset |
返回值
名称 | 说明 | 数据类型 |
out_distance_raster | 输出欧氏距离栅格。 此距离栅格标识每个像元至最近源像元、源像元集或源位置的欧氏距离。 输出栅格为浮点型。 | Raster |
代码实例
以下 Python 窗口脚本演示了 EuclideanDistance 工具的使用方法。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outEucDistance = EucDistance("rec_sites.shp", 5000, 5,
"c:/sapyexamples/output/EucDirOut")
outEucDistance.save("C:/sapyexamples/output/eucdist")
计算每个像元到最近源的直线距离。
# Name: EucDistance_Ex_02.py
# Description: Calculates for each cell the Euclidean distance to the nearest source.
# 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
inSourceData = "rec_sites.shp"
maxDistance = 4000
cellSize = 4
outDirectionRaster = "C:/sapyexamples/output/eucdirect"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute EucDistance
outEucDistance = EucDistance(inSourceData, maxDistance, cellSize, outDirectionRaster)
# Save the output
outEucDistance.save("C:/sapyexamples/output/eucdist")