6.3. Lesson: 网络分析
计算两点之间的最短距离是一项常见的地理信息系统任务。有关工具,请参阅 Processing Toolbox 。
The goal for this lesson: 学会使用 Network analysis 算法。
6.3.1.
Follow Along: The Tools and the Data
中可以找到所有的网络分析算法
菜单。您可以看到有许多可用的工具:
打开项目 exercise_data/network_analysis/network.qgz
。它包含两个层:
network_points
network_lines
这个 network_lines Layer已经有了一种有助于理解公路网的样式。

最短路径工具提供了计算网络两点之间的最短或最快路径的方法,给定:
在地图上选择的起点和终点
在地图上选择的起点和从点图层获取的终点
从地图上选定的点图层和终点获取的起点
我们开始吧。
6.3.2.
计算最短路径(点对点)
这个
允许您计算地图上两个手动选定点之间的最短距离。在本例中,我们将计算 shortest (不是最快的)两点之间的路径。
打开 Shortest path (point to point) 演算法
选择 network_lines 为 Vector layer representing network
使用
Shortest
为 Path type to calculate使用这两个点作为分析的起点和终点:
按下 ... 旁边的按钮 Start point (x, y) 并选择带有标记的位置
Starting Point
在照片里。启用捕捉选项以获得准确的选择。将添加单击点的坐标。做同样的事情,但选择标记为
Ending point
为 End point (x, y)按下 Run 按钮:
将创建一个新的线图层,表示所选点之间的最短路径。取消选中
network_lines
层以更好地查看结果:打开输出层的属性表。它包含三个字段,表示起点和终点的坐标以及 cost 。
我们选择了
Shortest
AS Path type to calculate ,所以 cost 代表 distance ,以层单位表示,在两个位置之间。在我们的案例中, shortest 所选点之间的距离约为
1000
仪表:
现在您已经知道如何使用该工具,可以随时测试其他位置。
6.3.3.
Try Yourself Fastest path
使用与上一练习相同的数据,尝试计算两点之间的最快路径。
从起点到终点需要多长时间?
回答
打开
并按如下方式填写对话框:请确保 Path type to calculate 是
Fastest
。点击 Run 并关闭该对话框。
现在打开输出层的属性表。这个 cost 字段包含两个点之间的旅行时间(以小时数表示):
6.3.4.
Follow Along: Advanced options
让我们来了解一下网络分析工具的更多选项。在 previous exercise 我们计算了 fastest 两点之间的路线。如你所想,时间取决于旅行 speed 。
我们将使用与前面练习相同的层以及起点和结束点。
打开 Shortest path (point to point) 演算法
填写以下内容 Input layer , Start point (x, y) 和 End point (x, y) 就像我们以前做的那样
选
Fastest
作为 Path type to calculate打开 Advanced parameter 菜单
更改 Default speed (km/h) 从默认设置
50
价值目标4
点击 Run
算法完成后,关闭对话框并打开输出层的属性表。
这个 cost 字段包含根据您选择的速度参数的值。我们可以将 cost 从带分数的小时到更易读的字段 minutes 价值观。
添加用于存储路径成本的新字段 minutes 。
就这样!现在您知道了,如果整个网络速度为 4 km/h
。
6.3.5.
有速度限制的最短路径
网络分析工具箱还有其他有趣的选项。请看下图:

我们想知道 fastest 考虑到 speed limits 每条道路的速度限制(标签表示以公里/小时为单位的速度限制)。不考虑速度限制的最短路径当然是紫色小路。但在那条路上的限速是20公里/小时,而在绿色公路上你可以达到100公里/小时!
与我们在第一个练习中所做的一样,我们将使用
我们将手动选择起点和终点。打开
演算法选择 network_lines 对于 Vector layer representing network 参数
选
Fastest
作为 Path type to calculate选择 Start point (x, y) 和 End point (x, y) 就像我们以前做的那样
打开 Advanced parameters 菜单
选择 speed 字段作为 Speed Field 参数。使用此选项,算法将考虑每条道路的速度限制。
按下 Run 按钮
关闭
network_lines
图层以更好地查看结果
正如你所看到的,最快的路线并不对应于最短的路线。
6.3.6.
服务区(从层)
这个
算法可以回答这个问题:给定一个点图层,在给定距离或时间值的情况下,所有可达区域是什么?备注
这个
是相同的算法,但它允许您手动选择地图上的点。给定的距离为 250
我们想知道我们可以从网络上的每个点走多远 network_points 一层。
取消选中除以下层之外的所有层
network_points
打开
演算法选
network_lines
为 Vector layer representing network选
network_points
为 Vector layer with start points选
Shortest
在……里面 Path type to calculate请输入
250
对于 Travel cost 参数点击 Run 并关闭该对话框
输出图层表示在给定250米距离的情况下从点要素可以到达的最大路径:
很酷,不是吗?
6.3.7. In Conclusion
现在您知道如何使用 Network analysis 解决最短和最快路径问题的算法。
现在,我们准备对矢量层数据执行一些空间统计。我们走吧!
6.3.8. What's Next?
接下来,您将了解如何对矢量数据集运行空间统计算法。