流动距离 (Spatial Analyst)

需要 Spatial Analyst 许可。

摘要

计算每个像元沿流动路径到它们所流入河流上像元的下坡距离的水平或垂直分量。 如果是多个流动路径,则需要计算最小或最大流动距离,以及流动距离的加权平均数。

如果提供了可选的流向栅格,则下坡方向将限于由输入流向栅格定义的方向。

插图

“流动距离”工具图示

使用情况

  • 要限制测量流动距离的下坡方向,请提供一个可选的输入流向栅格,可以使用流向工具获得该栅格。 生成可选输入流向栅格时,可以从 D8、D-Infinity (DINF) 和多流向 (MFD) 流动模型中选择。 可以使用输入流向类型来指定创建流向栅格时所使用的方法。

  • 如果提供了可选输入流向栅格,则建议使用您将提供给“流动距离”工具的同一输入表面栅格,通过流向工具来创建该栅格。

    如果此输入表面栅格没有凹陷点,则距离测量将测量到由输入流栅格表示的流像元的距离。

    如果此输入表面栅格具有凹陷点,则在到达流之前,一些流动路径可能因流入凹陷点而在距离尚短时终止。 在此情况下,这些像元的流动距离测量只能计算到其流入的汇像元。

  • 在没有提供可选流向栅格的情况下运行该工具时,会根据每个像元到其所流入的河流上像元的所有可能下坡水流路径,评估流动距离。

    如果使用可选 D8 流向栅格来运行该工具,则从每个像元到流上的某个像元可能只有一条下坡流动路径,并将沿此单一流动路径测量流动距离。

  • 如果从每个像元到其沿流动路径流经的流上的像元存在多个流动路径,请使用统计类型来计算最小或最大流动距离,或流动距离的加权平均数。

    如果从每个像元到流上的某个像元只存在单一流动路径,则所有统计类型都将产生相同的结果。

  • 建议使用作为工具输入提供的同一输入表面栅格来创建输入流栅格。 可以分别使用流向流量条件函数工具根据输入表面栅格创建流栅格。 如果您要使用来自其他数据源的流,为获得最佳结果,应首先将其融入输入表面栅格,然后再针对结果运行流动距离工具。

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

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

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

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

参数

标注说明数据类型
输入流栅格

表示线性流网络的输入流栅格。

Raster Layer
输入表面栅格

输入栅格表示连续表面。

Raster Layer
输入流向栅格
(可选)

根据每个像元来显示流向的输入栅格。

如果提供流向栅格,则下坡方向将限于由输入流向定义的方向。

可以使用流向工具创建流向栅格。

可使用 D8、多流向 (MFD) 或 D-Infinity 方法创建流向栅格。 可以使用输入流向类型参数来指定创建流向栅格时所使用的方法。

Raster Layer
距离类型
(可选)

确定是否计算流动距离的垂直或水平分量。

  • 垂直流动距离计算表示域中的每个像元到其沿流动路径流经的流上的某个像元的流动距离的垂直分量。 这是默认设置。
  • 水平流动距离计算表示域中的每个像元到其沿流动路径流经的流上的某个像元的流动距离的水平分量。
String
输入流向类型
(可选)

指定输入流向栅格类型。

  • D8输入流向栅格为 D8 类型。 这是默认设置。
  • MFD输入流向栅格为多流向 (MFD) 类型。
  • DINF输入流向栅格为 D-Infinity (DINF) 类型。
String
统计类型
(可选)

确定用于计算多个流动路径上的流动距离的统计类型。 如果从每个像元到流上的某个像元只存在单一流动路径,则所有统计类型都将产生相同的结果。

  • 最小值如果存在多个流动路径,则需要计算最小流动距离。 这是默认设置。
  • 加权平均数如果存在多个流动路径,则需要计算流动距离的加权平均数。 从某个像元到其下游相邻像元的流量比例可用作计算加权平均数的权重。
  • 最大值如果存在多个流动路径,则需要计算最大流动距离。
String

返回值

标注说明数据类型
输出栅格

输出流动距离栅格。

Raster

FlowDistance(in_stream_raster, in_surface_raster, {in_flow_direction_raster}, {distance_type}, {flow_direction_type}, {statistics_type})
名称说明数据类型
in_stream_raster

表示线性流网络的输入流栅格。

Raster Layer
in_surface_raster

输入栅格表示连续表面。

Raster Layer
in_flow_direction_raster
(可选)

根据每个像元来显示流向的输入栅格。

如果提供流向栅格,则下坡方向将限于由输入流向定义的方向。

可以使用流向工具创建流向栅格。

可使用 D8、多流向 (MFD) 或 D-Infinity 方法创建流向栅格。 可以使用 flow_direction_type 参数来指定创建流向栅格时所使用的方法。

Raster Layer
distance_type
(可选)

确定是否计算流动距离的垂直或水平分量。

  • VERTICAL流动距离计算表示域中的每个像元到其沿流动路径流经的流上的某个像元的流动距离的垂直分量。 这是默认设置。
  • HORIZONTAL流动距离计算表示域中的每个像元到其沿流动路径流经的流上的某个像元的流动距离的水平分量。
String
flow_direction_type
(可选)

指定输入流向栅格类型。

  • D8输入流向栅格为 D8 类型。 这是默认设置。
  • MFD输入流向栅格为多流向 (MFD) 类型。
  • DINF输入流向栅格为 D-Infinity (DINF) 类型。
String
statistics_type
(可选)

确定用于计算多个流动路径上的流动距离的统计类型。 如果从每个像元到流上的某个像元只存在单一流动路径,则所有统计类型都将产生相同的结果。

  • MINIMUM如果存在多个流动路径,则需要计算最小流动距离。 这是默认设置。
  • WEIGHTED_MEAN如果存在多个流动路径,则需要计算流动距离的加权平均数。 从某个像元到其下游相邻像元的流量比例可用作计算加权平均数的权重。
  • MAXIMUM如果存在多个流动路径,则需要计算最大流动距离。
String

返回值

名称说明数据类型
out_raster

输出流动距离栅格。

Raster

代码示例

FlowDistance 示例 1(Python 窗口)

本示例将创建一个流动距离栅格。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outFlowDistance = FlowDistance("streams", "elevation", "", "VERTICAL")
outFlowDistance.save("C:/sapyexamples/output/outflowdist01")
FlowDistance 示例 2(独立脚本)

本示例将创建一个流动距离栅格。

# Name: FlowDistance_Example.py
# Description: Creates a raster of horizontal flow distance from each cell to a cell 
# on the stream into which it drains.
# 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
inStreamRaster = "streams"
inSurfaceRaster = "elevation"
inFlowDirectionRaster = "flowdir"


# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute FlowDistance
outFlowDistance = FlowDistance(inStreamRaster, inSurfaceRaster, inFlowDirectionRaster, "HORIZONTAL")

# Save the output 
outFlowDistance.save("C:/sapyexamples/output/outflowdist02")

许可信息

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

相关主题