如何根据高程测量点之间的距离?


10

我需要能够测量点之间的距离,但是该距离需要与高程的关系进行计算。这些要点是19世纪讲故事的人的住所以及他们的故事中提到的地方。因此,该距离必须是“步行距离”。即使实际笔直距离较短,沿着山谷的路径也可能比沿着山脉的路径短。随附的截图说明了我的想法。因此,在图像中,路径A和C将比路径B短。点和高程

这些点来自CSV文件,但是我也有带有高程数据的栅格图层。


1
我认为计算步行时间会更好。步行的速度取决于坡度,向上花费的时间比向下花费的时间更多。
安德烈·

1
“ 3D”距离与平面地图距离相比?差异可能比您想象的要小。MICRODEM背后的人Peter Guth说:“距离或面积将随着倾斜角度的正割线而增加,直到到达非常大的倾斜度为止,该割线基本上为1。”
nhopton

Answers:


6

实现此目标在GIS中是一项基本任务,但是QGIS中的方法可能并不简单。您最好的机会是使用GRASS的r.walk函数,该函数会创建各向异性的成本面(dem + slope +其他因素)。

首先,您必须创建一个摩擦表面作为的输入r.walk。在您的情况下,它可以是与DEM范围匹配的单值栅格(1.0)。您可以r.mapcalculator使用以下公式创建它:A*0+1其中A是您的DEM。

接下来,您必须从CSV中选择一组起点。这些都是要计算的累计成本面。您必须从每个起点创建一个单独的成本表面。定义与该步骤中每个起点关联的终点(在偏离航向的各个层中)可能是明智的。之后,您可以r.walk使用创建的输入运行。起点可以在单个图层中,您可以使用对话框中的绿色箭头遍历起点。

现在,在理想情况下,您将具有成本面和每个成本面的终点。从理论上讲,您可以找到成本最低的路径r.drain,但对我而言,它最终会出错(python无法导入QgisRaster库)。如果您遇到同一问题,则可以使用SAGA的“最低成本路径”算法。它将为具有成本表面的每个终点创建一个点和一个线层(再次使用迭代按钮)。完成所有线条后,您可以使用SAGA的“合并形状图层”工具将它们合并为一个shapefile。

随着点的增加,该方法可能会非常慢,因此,如果有很多点,则可以尝试使用python自动实现该方法。仍然需要很多时间来计算(尤其是成本表面),但是您不必手动创建大量的端点层。


为此,我可能必须开始学习如何使用GRASS。我还认为我可能会遇到问题,在我发布的插图中,我会假设许多山无法通行,因此我必须添加诸如“如果山高于x,绕过它”之类的东西。答案,这可能会帮助我入门。
traustid 2014年

这是一个简单的条件r.walk。您可以使用摩擦贴图设置无法通过的单元。与重分类的DEM r.reclass与规则,1 thru 2000 = 1 2000 thru * = 9999在规则文件(如果您的门槛2000米)。这样,该算法就不会传递具有高摩擦值的单元,因此处理它的成本会更低。
Gabor Farkas 2014年

非常感谢!我对GRASS的了解并不多,但这是一个很好的起点。
traustid 2014年

别客气。老实说,我仍然为您的任务感到惊讶。这是关于如何将GIS应用于最广泛学科的最好例子之一。
Gabor Farkas 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.