对 DEM 栅格数据计算流向。为保证流向计算的正确性,建议使用填充伪洼地之后的 DEM 栅格数据。
命名空间:
SuperMap.Analyst.TerrainAnalyst程序集: SuperMap.Analyst.TerrainAnalyst (in SuperMap.Analyst.TerrainAnalyst)
版本: dll
语法
C# |
---|
public static DatasetGrid FlowDirection( DatasetGrid surfaceGrid, bool forceFlowAtEdge, Datasource targetDatasource, string resultGridName ) |
参数
- surfaceGrid
- Type: SuperMap.Data..::.DatasetGrid
指定的用于计算流向的 DEM 数据。
- forceFlowAtEdge
- Type: System..::.Boolean
指定是否强制边界的栅格流向为向外。如果为 true,则 DEM 栅格边缘处的所有单元的流向都是从栅格向外流动。
- targetDatasource
- Type: SuperMap.Data..::.Datasource
指定的用于存储结果数据集的数据源。如果设置为 null,则结果数据集将自动存储到 surfaceGrid 所在的数据源中。
- resultGridName
- Type: System..::.String
指定的结果数据集的名称。
返回值
结果流向栅格数据集。如果生成失败,则返回 null。备注
流向,即水文表面水流的方向。计算流向是水文分析的关键步骤之一。水文分析的很多功能需要基于流向栅格,如计算累积汇水量、计算流长和流域等。
SuperMap 使用最大坡降法(D8,Deterministic Eight-node)计算流向。这种方法通过计算单元格的最陡下降方向作为水流的方向。中心单元格与相邻单元格的高程差与距离的比值称为高程梯度。最陡下降方向即为中心单元格与高程梯度最大的单元格所构成的方向,也就是中心栅格的流向。单元格的流向的值,是通过对其周围的8个邻域栅格进行编码来确定的。如下图所示,若中心单元格的水流方向是左边,则其水流方向被赋值16;若流向右边,则赋值1。
计算流向时,需要注意栅格边界单元格的处理。位于栅格边界的单元格比较特殊,通过 forceFlowAtEdge 参数可以指定其流向是否向外,如果向外,则边界栅格的流向值如下图(左)所示,否则,位于边界上的单元格将赋为无值,如下图(右)所示。
计算 DEM 数据每个单元格的流向得到流向栅格。下图显示了基于无洼地的 DEM 数据生成的流向栅格。
注:
使用另一重载方法 FlowDirection 可以创建高程梯度栅格。