Answers:
可能有不同的实现方式,但是大多数过程将从网格而不是从TIN开始。
最简单的方法是D8程序:您可以计算出水的流动方向。有8种可能,其中8个单元紧邻中央网格单元。您可以先计算这些方向,然后再计算单元的连接方式,最后可以画线。在SAGA中找到了一个简单的实现,它几乎读为伪代码:http : //saga-gis.svn.sourceforge.net/viewvc/saga-gis/trunk/saga-gis/src/modules_terrain_analysis/terrain_analysis/ta_channels/D8_Flow_Analysis。 cpp?revision = 911&view = markup
尽管很简单,但这不是很现实:您不会在每个单元格中都有流。更为先进的算法通常首先关闭水坑(特别是如果您有详细的DEM),然后计算每个单元的集水面积,即为特定单元贡献水的单元数量,然后使用阈值确定是否有水流存在。
SAGA GIS实现了许多此类流域面积方法,您可以在本手册中找到它们的说明,网址为http://sourceforge.net/settings/mirror_choices?projectname=saga-gis&filename=SAGA%20-%20Documentation/SAGA%20Documents/ SagaManual.pdf
它是为较旧版本的SAGA GIS编写的,但是算法的描述仍然相当准确,我将其复制到此处以供快速参考(此内容位于第120页左右),因为它是开源的,因此您可以检查通过查看代码了解实施细节。
最近添加了更多模型:
如果可以访问ArcGIS中的Spatial Analyst,则可以使用一系列工具来计算流路径。甲完整的工作流程在ESRI参考提供的,但典型的工作流包括:
当然,有许多学术论文描述了不同的方法,但是这种方法对于所有有权使用Spatial Analyst的人来说都很容易。
在基于网格的数字高程模型中,D8-LTD方法提供了可靠的坡度线确定:
Orlandini,S.和G.Moretti(2009),《从网格高程数据确定地表水流路径》,《水资源》。Res。,45(3),W03417,doi:10.1029 / 2008WR007099。
Orlandini,S.,G.Moretti,M. Res。,39(6),1144,doi:10.1029 / 2002WR001639。
在基于轮廓的数字高程模型中,可以使用以下论文中描述的(复杂)模型通过求解复杂的地形结构来自动确定坡度线:
Moretti,G.和S. Orlandini(2008),使用骨架构造技术从轮廓高程数据自动描绘流域盆地,水资源。Res。,44(5),W05403,doi:10.1029 / 2007WR006309。
似乎从头开始编写工具将是一项相当大的工作。ESRI已经这样做了数十年,但他们仍然没有权利。
AutoCAD(Civil 3D)可以使用TIN。我不知道场景背后发生了什么,但是在ArcGIS中,通过栅格分析来确定流网络。
简而言之,将输入DEM栅格(每个像元具有X,Y,Z值)用作输入,并且算法计算引用 流入输入栅格中每个下坡像元的所有像元的“累积流量(作为累积权重)”。 ” 该乘积是一个栅格,其中每个像元都有一个流量累积值。为了识别河流网络,然后隔离高流量的单元,这些单元是“集中流量”的区域。还有其他考虑因素,例如可选的权重因子,水文正确输入DEM等。
我只想提出几个想法:就这种算法的“力学”而言,我认为它可能很简单。递归地为每个像元确定所有周围像元的位置和高程,并根据其标高累加流入其中的像元数。至于TIN,您可能可以在每个三角形的两个点(最高和最低顶点)上构造一条线,然后将所有这些点连接成一个网络。