流向算法的一些总结

如题所述

第1个回答  2022-06-01
在数字地形分析中,坡度因子的求算可以说是灵魂,几乎所有复杂的二阶地形因子都或多或少与坡度因子有着直接或潜在的相关。 而在水文因子的求算体系中,流向算子占据的地位与坡度相同。所以,如何在DEM数据中提取出一个较为准确的流向,是一个非常重要的命题。

因为DEM数据的精度具有不确定性,所以一切的地形因子的求算都是相对准确的。一般来说,地形因子求算的准确性与DEM数据的分辨率大小,求算时选取的邻域范围等有很强的关联性。所以很多学者已经研究很多关于地形因子求算的不确定性的问题,但大多数的研究还是有一定的前提条件,流向算法也是如此。

流向算法的特别之处,非常依赖填洼算法的准确性。

目前ArcGIS Pro2.8内置了三种流向算法,但由于河流形态有平行型、汇流型、发散型等,应当在根据已掌握的地理信息(如经纬度、高程、地区、气候等)判断该DEM数据包含的河流形态后,再去选择算法进行分析。

D8算法是一种单流向算法,是1988年Jenson 提出的。当时DEM数据刚刚开始发展,因子的求算也都是局限在坡度、坡向等简单因子,而D8的提出对流向的求算可以说是有很大帮助。

D8算法与坡度算法类似,通常是通过3*3的滑动窗口进行遍历计算。

流向由来自每个像元的最陡下降方向,最陡下降方向计算如下:

假设像元大小为 1,则两个正交像元之间的距离为 1,两个对角线像元之间的距离为 (在部分软件中设定为1.5来方便计算)。如果多个像元的最大下降方向都相同,则会扩大相邻像元范围,直到找到最陡下降方向为止。

在ArcGIS中,计算出最陡下降方向时,规定东方向用2的0次方的表示,顺时针每旋转一个,指数加1。即1,2,4,……,128来表示八个方向。

由于D8为单流向算法,即SFD,没有考虑到现实情况中,水向多个方向发散的情况,在一些区域,可能存在问题。并可能出现平行河网的问题。

MFD算法与Quinn密不可分,但ArcGIS内置的算法,应当为秦承志教授2007发表的自适应多流向算法。MFD 算法可对所有下坡邻域的流向进行划分。

MFD要对3*3的窗口的中心像元求得多个下降方向,结果数据保存是包含三个维度的数据,不能存储在格网的栅格里,所以ArcGIS提供的是云栅格格式 (CRF) 。

由于多流向算法对像元都会尝试去存储多个流向的百分比数据,所以无法用常规的Grid栅格来表示。在ArcGIS中是使用CRF格式存储,而在大部分第三方库的调用中是直接跳过这一步的文件存储过程,作为临时数据生成而后删除。是否可以用体素的概念去存储这种数据?值得思考。

Dinf算法是David G. Tarboron在1997年提出的,这种算法是将八邻域等分成了八个角度,然后计算最陡下降方向,并通过一定的方式,计算出一个在该区间内的角度值。

Dinf算法有一个预设参数的过程,这个参数很容易受到特定地形的影响,造成计算误差。

流向算法还有很多种,这是其中经典的三种,各有优劣。

流向算法可以打破GridDEM的限制做一些突破。

容易理解的算法会让算法推广得更加广泛。

在应用领域,算法结果的数据结构也非常重要,要与主流的数据格式相匹配。

自适应算法是大趋势。

最后,D8是一个在GIS领域让人“闻风丧胆”的算法,因为它太好懂了,又因为它太简单了。
相似回答
大家正在搜