流向 (栅格分析)

摘要

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

插图

“流向”工具图示

使用情况

  • 当您登录到已针对 Raster Analysis 配置 ArcGIS Image ServerArcGIS Enterprise 门户时,可以使用栅格分析门户工具。 调用该工具后,ArcGIS Pro 将充当客户端,处理将在与 ArcGIS Enterprise 联合的服务器中进行。 门户工具接受来自门户的图层作为输入,并在门户中创建输出。

    输入栅格图层支持来自门户的图层、影像服务的 URI 或 URL 或创建影像服务器图层工具的输出。 此工具不支持本地栅格数据或图层。

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

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

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

    流向编码

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

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

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

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

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

    在计算平坦区域的下降率栅格数据时,为提高性能,将到对角相邻像元的距离 (1.41421 * cell size) 近似计算为 1.4 * cell size

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

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

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

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

  • 参考:

    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; Image Service; String
输出流向名称

输出流向栅格服务的名称。

默认名称基于工具名称以及输入图层名称。 如果该图层名称已存在,则系统将提示您提供其他名称。

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

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

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

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

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

输出下降率栅格服务的名称。

默认名称基于工具名称以及输入图层名称。 如果该图层名称已存在,则系统将提示您提供其他名称。

String

派生输出

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

输出流向栅格。

Raster Layer
输出下降率栅格

输出下降率栅格。

Raster Layer

arcpy.ra.FlowDirection(inputSurfaceRaster, outputFlowDirectionName, {forceFlow}, {flowDirectionType}, outputDropName)
名称说明数据类型
inputSurfaceRaster

输入栅格表示连续表面。

Raster Layer; Image Service; String
outputFlowDirectionName

输出流向栅格服务的名称。

默认名称基于工具名称以及输入图层名称。 如果该图层名称已存在,则系统将提示您提供其他名称。

String
forceFlow
(可选)

关键字定义是否允许将输入栅格中的 NoData 值蚕食为栅格掩膜定义的区域。

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

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

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

输出下降率栅格服务的名称。

默认名称基于工具名称以及输入图层名称。 如果该图层名称已存在,则系统将提示您提供其他名称。

String

派生输出

名称说明数据类型
outputFlowDirectionRaster

输出流向栅格。

Raster Layer
outputDropRaster

输出下降率栅格。

Raster Layer

代码示例

FlowDirection 示例 1(Python 窗口)

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

import arcpy
arcpy.ra.FlowDirection("https://myserver/rest/services/elevation/ImageServer","outD8FlowDir1")
FlowDirection 示例 2(独立脚本)

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

#---------------------------------------------------------------------------
# Name: FlowDirection_example02.py
# Requirements: ArcGIS Image Server

# Import system modules
import arcpy

# Set local variables
inSurface = "https://myserver/rest/services/elevation_filled/ImageServer"
outputFlowDirection = "outD8FlowDir2"
forceFlow = "NORMAL"
flowDirectionType = "D8"

# Execute Flow Direction raster analysis tool
arcpy.ra.FlowDirection(inSurface, outputFlowDirection, forceFlow, flowDirectionType)

许可信息

  • Basic: 需要 ArcGIS Image Server
  • Standard: 需要 ArcGIS Image Server
  • Advanced: 需要 ArcGIS Image Server

相关主题