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


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.