地形是根据三角形不规则网络(TIN)给出的,每个点p( x,y)的z值。如何利用这些信息来构造流的流动路径?这背后的物理原理是什么?
据我所知,最陡下降法可以用来解决这个问题。我正在考虑编写自己的流算法,因此我对理论背景感兴趣,而不是使用现有工具。
#1 楼
可能有不同的实现方式,但是大多数过程将从网格开始,而不是从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页),因为它是开源的,所以您可以通过查看代码来检查实现细节。
确定性8(D8):经典。流量从一个单元的中心到周围一个(只有一个)单元的中心。因此,将流向限制为45o的倍数,这是该方法的大多数缺点的主要原因。 (O'Callaghan&Mark 1984)。
Rho8:与上述相同,但随机组件应对此进行改进。流动方向由一个随机参数确定,该参数取决于两个相邻相邻单元的纵横比和方向之间的差异。不是很有用。 。 。 (Fairfield&Leymarie 1991)。确定性无穷(D∞):流量从一个像元流向两个连续的周围像元,因此考虑了二维流并克服了D8方法的缺点。 (Tarboton 1998)。
不伦瑞克数字浮雕模型:另一个多重流向算法-
rithm。流动在方向最接近中心单元长宽比的周围单元及其两个相邻单元之间分配。 (Bauer,Bork和Rohdenburg,1985年)。
FD8(在SAGA中以“多流向”的形式找到):D8派生的二维流路由算法。 (Quinn等,1991)。
运动学路由算法(KRA)。一维流跟踪算法。
流的行为就像滚落在DEM上的球,而不会将其位置限制在单元格的中心。 (Lea 1992)。
数字高程模型网络(DEMON):最复杂的模型。二维流跟踪算法。相当耗时。 (Costa-Cabral&Burgess
1994)。
最近还添加了更多模型:
三角形多重流向-Seibert,J. / McGlynn,B.(2007):“一种新的三角多流向算法,用于从网格化数字高程模型计算上坡区域”,《水资源研究》,第43,WO04501。这可能对您很有趣,因为它也可以直接在TIN上运行
格鲁伯和佩克汉姆(Gruber and Peckham)(2008)提出的基于流量的DEM计算的质量流量方法(MFM)。 Gruber,S.,Peckham,S.(2008):水文学中的土地表面参数和对象。于:T. Hengl和H.I. Reuter [Eds。]:地貌:概念,软件,应用程序。 《土壤科学进展》,爱思唯尔,Bd.33,S.293-308。
辅助算法:http://watershed.montana.edu/Hydrology/Home_files/2010WR009296.pdf,他的代码位于好:http://thomasgrabs.com/side-algorithm/
#2 楼
本文提出了一种原始方法:Fisher,P.,J. Wood,and T. Cheng(2004)。 Helvellyn在哪里?多尺度景观形态学的模糊性。英国地理学家学会学报29,106-128。
提出了一种基于模糊和多尺度表示的方法。我不确定,但是此方法可能是LandSerf中实现的方法。
#3 楼
如果可以访问ArcGIS中的Spatial Analyst,则可以使用一系列工具来计算流路径。 ESRI参考中提供了完整的工作流程,但典型的工作流程包括:将TIN转换为高程栅格。
计算流向。
填充小水槽。
计算流量累积
使用阈值,仅选择具有给定流量的单元格。
使用“流到特征”工具将流导出到矢量shapefile。
/>
当然,有很多学术论文描述了不同的方法,但是这种方法对于所有有权使用Spatial Analyst的人来说都很容易。
评论
我将不得不从头开始编写代码,因此无法使用此软件包。
– Graviton
2011年9月15日下午6:01
好吧,这似乎是大多数GIS软件包所使用的过程。 TerraFlow是一个开放源代码选项,但我从未使用过。您打算使用什么来处理TIN?
–帕特里克(Patrick)
2011-09-15 6:21
我正在考虑编写自己的流算法,这就是为什么您提到的软件包不适用于我
– Graviton
2011年9月15日下午6:24
好的。当您说“我不太清楚如何执行此操作”时,我假设您想获得有关如何执行此操作的实用建议。这些软件包使用的工作流程大概可以为算法的整体结构提供指南。我建议您从那里查阅有关具体知识的学术文献。例如,在我寻找流向算法时曾多次引用过Tarboton,1997。
–帕特里克(Patrick)
2011年9月15日下午6:30
#4 楼
在基于网格的数字高程模型中,可以通过D8-LTD方法可靠地确定坡度线:Orlandini,S.和G. Moretti(2009),表面流路的确定从栅格高程数据,水资源。 Res。,45(3),W03417,doi:10.1029 / 2008WR007099。
Orlandini,S.,G. Moretti,M. Franchini,B.Aldighieri和B.Testa(2003),在基于网格的数字高程中确定非分散排水方向的基于路径的方法型号,水资源。 Res。,39(6),1144,doi:10.1029 / 2002WR001639。
在基于轮廓的数字高程模型中,可以通过使用(复杂)模型求解复杂的地形结构来自动确定坡度线在以下论文中进行了描述:
Moretti,G.和S. Orlandini(2008),使用骨架构造技术,从轮廓高程数据自动描绘流域盆地,水资源。 Res。,44(5),W05403,doi:10.1029 / 2007WR006309。
#5 楼
似乎这是从头开始编写工具的工作。 ESRI已经这样做了数十年,但他们仍然没有权利。AutoCAD(Civil 3D)可以使用TIN进行此操作。我不知道那里的场景背后发生了什么,但是在ArcGIS中,通过栅格分析来识别流网络。概括地说,将输入DEM栅格(每个像元具有X,Y,Z值)用作输入,并且算法计算引用的是“流入的所有像元的累计流量(作为累计重量)”输入栅格中的每个下坡像元。“
该产品是一个栅格,其中每个像元都有流量累积值。为了识别河流网络,然后隔离高流量的单元,这些单元是“集中流量”的区域。还有其他考虑因素,例如可选的权重因子,水文正确输入DEM等。
我只想提出几个想法:就这种算法的“力学”而言,我想它可能是相当不错的。直截了当;递归地为每个像元确定所有周围像元的位置和高程,并根据其标高累加流入其中的像元数。对于TIN,您可能可以在每个三角形的两个点(最高和最低顶点)上构造一条线,然后将所有这些点连接成一个网络。
评论
在处理水槽和平坦区域时会出现复杂问题。举一个极端的例子,考虑一个代表高山湖泊的DEM,因此大多数DEM都是完全平坦的。到底递归实现将如何将所有流入湖泊的流量路由到其流出点?
– hu
2012年1月18日14:06
评论
上面的纸张链接不再可用
– Graviton
18年6月18日在8:41
@Graviton:链接已更正!
–朱利安
18年6月20日在21:28