流向 (Spatial Analyst)

需要 Spatial Analyst 许可。

描述

使用 D8、多流向 (MFD) 或 D-Infinity (DINF) 方法创建从每个像元到其下坡相邻点的流向的栅格。

了解有关流向工作原理的详细信息

插图

D8 流向图示
Flow_Dir = FlowDirection(Elev_Ras, #, #, D8)

使用方法

  • 流向工具支持三种流向建模算法。分别为 D8、多流向 (MFD) 和 D-Infinity (DINF)。

  • D8 流向法可对每个像元到其最陡下坡邻域的流向进行建模。

    以 D8 流向类型运行的流向工具的输出是值范围介于 1 到 255 之间的整型栅格。从中心出发的各个方向值为:

    流向编码

    例如,如果最陡下降方向位于当前处理像元的左侧,则将该处理像元的流向编码将为 16。

    • 如果某像元低于八个相邻像元,则将为该像元指定其相邻像元的最低值,并将流向定义为朝向此像元。如果多个相邻像元都具有最低值,则仍为该像元指定此值,但会使用下面介绍的其中一种方法来定义流向。这可用于过滤被视为噪声的单像元凹陷点。

    • 如果像元的 z 值在多个方向上均发生相同变化,并且该像元是凹陷点的一部分,则该像元的流向将被视为未定义。此时,该像元在输出流向栅格中的值将为这些方向的总和。例如,如果 z 值向右(流向 = 1)和向下(流向 = 4)的变化相同,则该像元的流向为 1 + 4 = 5。可以使用工具将具有未定义流向的像元标记为凹陷点。

    • 如果某像元的 z 值在多个方向上均发生相同变化,并且该像元不是凹陷的一部分,则将使用定义最可能方向的查找表来指定流向。请参阅 Greenlee (1987)。

    • 输出 D8 下降率栅格数据将按像元中心之间的路径长度的 z 值变化率计算,并以百分比表示。对于相邻像元,这类似于像元之间的百分比坡度。穿过平坦区域时,距离将变成到高程较低的最近像元的距离。结果是从每个像元出发的最陡下降路径中的高程增量百分比图。

  • 由 Qin et al. (2007) 描述的多流向 (MFD) 算法可对像元到所有下坡邻域的流向进行划分。水流分区指数根据当地地形条件通过自适应方法创建,可用于确定排放到所有下坡邻域的水流部分。

    注:

    MFD 流向类型仅支持在文件夹工作空间内,以云栅格格式 (CRF) 创建输出流向栅格,例如 flowdir1.crf

    将 MFD 流向输出添加到地图时,仅显示 D8 流向。由于 MFD 流向可能具有与每个像元相关的多个值(每个值对应于流向每个下坡相邻点的水流的比例),因此不易进行可视化。但是,MFD 流向输出栅格是由流量工具识别的输入,该工具将利用 MFD 流向来划分与累积每个像元到所有下坡邻域的累计流量。

  • 由 Tarboton (1997) 描述的 D-Infinity (DINF) 法将流向确定为在以感兴趣的像元为中心的 3×3 像元窗口中形成的八个三角面上的最陡下坡方向。流向输出是一个表示为单一角度的浮点型栅格,以度为单位:从 0(正东)到 360(下一个正东)逆时针转动。

  • 如果强制所有边缘像元向外流动参数设置(Python 中的 NORMAL)在默认情况下未选中,处于表面栅格边缘的像元将流向 z 值下降方向最陡的内部像元。如果降幅小于或等于零,则像元将流出表面栅格。

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

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

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

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

  • 参考文献:

    Greenlee, D. D. 1987. "Raster and Vector Processing for Scanned Linework." Photogrammetric Engineering and Remote Sensing 53 (10): 1383 - 1387.

    Qin, C., Zhu, A. X., Pei, T., Li, B., Zhou, C., & Yang, L. 2007. "An adaptive approach to selecting a flow partition exponent for a multiple flow direction algorithm." International Journal of Geographical Information Science 21(4): 443-458.

    Tarboton, D. G. 1997. "A new method for the determination of flow directions and upslope areas in grid digital elevation models." Water Resources Research 33(2): 309-319.

语法

FlowDirection(in_surface_raster, {force_flow}, {out_drop_raster}, {flow_direction_type})
参数说明数据类型
in_surface_raster

输入栅格表示连续的表面。

Raster Layer
force_flow
(可选)

指定边缘像元始终向外流还是遵循正常流动规则。

  • NORMAL如果边缘像元内部的最大降幅大于零,则将照常确定流向;否则流向将朝向边缘。应从表面栅格的边缘向内流的像元也将执行此行为。这是默认设置。
  • FORCE表面栅格边缘的所有像元将从表面栅格向外流。
Boolean
out_drop_raster
(可选)

可选输出下降率栅格数据。

下降率栅格用于返回从沿流向的各像元到像元中心间的路径长度的最大高程变化率(以百分比表示)。

输出为浮点型。

Raster Dataset
flow_direction_type
(可选)

指定计算流向时使用的流向法的类型。

  • D8根据 D8 流向法分配流向。此方法可将流向分配至最陡下坡相邻点。这是默认设置。
  • MFD根据 MFD 流向法分配流向。此方法可将多流向分配至所有下坡邻域。
  • DINF根据 D-Infinity 流向法,使用三角面的最陡坡度指定流向。
String

返回值

名称说明数据类型
out_flow_direction_raster

此输出栅格使用 D8、多流向 (MFD) 或 D-Infinity (DINF) 方法显示从每个像元到其下坡邻域的流向。

输出为整型。

Raster

代码示例

FlowDirection 示例 1(Python 窗口)

本示例将从输入格网高程表面栅格创建 D8 流向栅格。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outFlowDirection = FlowDirection("elevation", "NORMAL")
outFlowDirection.save("C:/sapyexamples/output/outflowdir01")
FlowDirection 示例 2(独立脚本)

本示例将从输入格网高程表面栅格创建 D8 流向栅格。

# Name: FlowDirection_Example.py
# Description: Creates a raster of flow direction from each cell to its
#    steepest downslope neighbor.
# 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
inSurfaceRaster = "elevation"
outDropRaster = "C:/sapyexamples/output/dropraster"

# Execute FlowDirection
outFlowDirection = FlowDirection(inSurfaceRaster, "FORCE", outDropRaster)

# Save the output 
outFlowDirection.save("C:/sapyexamples/output/outflowdir02")

许可信息

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

相关主题