流向 (Spatial Analyst)

需要 Spatial Analyst 许可。

摘要

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

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

插图

流向工具图示
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 等人(2007 年)描述的 MFD 算法可对像元到所有下坡相邻像元的流向进行划分。 水流分区指数是根据当地地形条件通过自适应方法创建,可用于确定排放到所有下坡相邻点的水流部分。

    注:

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

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

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

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

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

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

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

  • 当输出栅格格式为 .crf 时,此工具支持金字塔栅格存储环境。 默认情况下,将在输出中创建金字塔。 对于任何其他输出格式,不支持此环境,并且不会创建金字塔。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 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.

参数

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

输入栅格表示连续表面。

Raster Layer
强制所有边缘像元向外流动
(可选)

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

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

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

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

输出为浮点型。

Raster Dataset
流向类型
(可选)

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

  • D8流向将由 D8 方法确定。 此方法会将流向分配至最陡的下坡相邻点。 这是默认设置。
  • MFD流向将基于 MFD 流量法。 流向将根据自适应分区指数跨下坡邻域进行分区。
  • DINF流向将基于 DINF 方法。 此方法将流向分配给三角形面的最陡坡度。
String

返回值

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

输出栅格显示了使用 D8、MFD 或 DINF 方法创建的从每个像元到其下坡相邻像元的流向。

输出为整型。

Raster

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流向将基于 DINF 方法。 此方法将流向分配给三角形面的最陡坡度。
String

返回值

名称说明数据类型
out_flow_direction_raster

输出栅格显示了使用 D8、MFD 或 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")

相关主题