6.3. Lesson: 网络分析

计算两点之间的最短距离是一项常见的地理信息系统任务。有关工具,请参阅 Processing Toolbox 。

The goal for this lesson: 学会使用 Network analysis 算法。

6.3.1. 基本信息 Follow Along: The Tools and the Data

中可以找到所有的网络分析算法 Processing ► Network Analysis 菜单。您可以看到有许多可用的工具:

../../../_images/select_network_algorithms.png

打开项目 exercise_data/network_analysis/network.qgz 。它包含两个层:

  • network_points

  • network_lines

这个 network_lines Layer已经有了一种有助于理解公路网的样式。

../../../_images/network_map.png

最短路径工具提供了计算网络两点之间的最短或最快路径的方法,给定:

  • 在地图上选择的起点和终点

  • 在地图上选择的起点和从点图层获取的终点

  • 从地图上选定的点图层和终点获取的起点

我们开始吧。

6.3.2. 基本信息 计算最短路径(点对点)

这个 Network analysis ► Shortest path (point to point) 允许您计算地图上两个手动选定点之间的最短距离。

在本例中,我们将计算 shortest (不是最快的)两点之间的路径。

  1. 打开 Shortest path (point to point) 演算法

  2. 选择 network_lines 为 Vector layer representing network

  3. 使用 Shortest 为 Path type to calculate

    使用这两个点作为分析的起点和终点:

    ../../../_images/start_end_point.png
  4. 按下 ... 旁边的按钮 Start point (x, y) 并选择带有标记的位置 Starting Point 在照片里。启用捕捉选项以获得准确的选择。将添加单击点的坐标。

  5. 做同样的事情,但选择标记为 Ending point 为 End point (x, y)

  6. 按下 Run 按钮:

    ../../../_images/shortest_point.png
  7. 将创建一个新的线图层,表示所选点之间的最短路径。取消选中 network_lines 层以更好地查看结果:

    ../../../_images/shortest_point_result.png
  8. 打开输出层的属性表。它包含三个字段,表示起点和终点的坐标以及 cost 。

    我们选择了 Shortest AS Path type to calculate ,所以 cost 代表 distance ,以层单位表示,在两个位置之间。

    在我们的案例中, shortest 所选点之间的距离约为 1000 仪表:

    ../../../_images/shortest_point_attributes.png

现在您已经知道如何使用该工具,可以随时测试其他位置。

6.3.3. 适度 Try Yourself Fastest path

使用与上一练习相同的数据,尝试计算两点之间的最快路径。

从起点到终点需要多长时间?

6.3.4. 适度 Follow Along: Advanced options

让我们来了解一下网络分析工具的更多选项。在 previous exercise 我们计算了 fastest 两点之间的路线。如你所想,时间取决于旅行 speed 。

我们将使用与前面练习相同的层以及起点和结束点。

  1. 打开 Shortest path (point to point) 演算法

  2. 填写以下内容 Input layer , Start point (x, y) 和 End point (x, y) 就像我们以前做的那样

  3. 选 Fastest 作为 Path type to calculate

  4. 打开 Advanced parameter 菜单

  5. 更改 Default speed (km/h) 从默认设置 50 价值目标 4

    ../../../_images/shortest_path_advanced.png
  6. 点击 Run

  7. 算法完成后,关闭对话框并打开输出层的属性表。

    这个 cost 字段包含根据您选择的速度参数的值。我们可以将 cost 从带分数的小时到更易读的字段 minutes 价值观。

  8. 通过单击打开字段计算器 计算字段 图标

  9. 添加用于存储路径成本的新字段 minutes 。

    ../../../_images/shortest_path_conversion.png

就这样!现在您知道了,如果整个网络速度为 4 km/h 。

6.3.5. 硬的 有速度限制的最短路径

网络分析工具箱还有其他有趣的选项。请看下图:

../../../_images/speed_limit.png

我们想知道 fastest 考虑到 speed limits 每条道路的速度限制(标签表示以公里/小时为单位的速度限制)。不考虑速度限制的最短路径当然是紫色小路。但在那条路上的限速是20公里/小时,而在绿色公路上你可以达到100公里/小时!

与我们在第一个练习中所做的一样,我们将使用 Network analysis ► Shortest path (point to point) 我们将手动选择起点和终点。

  1. 打开 Network analysis ► Shortest path (point to point) 演算法

  2. 选择 network_lines 对于 Vector layer representing network 参数

  3. 选 Fastest 作为 Path type to calculate

  4. 选择 Start point (x, y) 和 End point (x, y) 就像我们以前做的那样

  5. 打开 Advanced parameters 菜单

  6. 选择 speed 字段作为 Speed Field 参数。使用此选项,算法将考虑每条道路的速度限制。

    ../../../_images/speed_limit_parameters.png
  7. 按下 Run 按钮

  8. 关闭 network_lines 图层以更好地查看结果

    ../../../_images/speed_limit_result.png

正如你所看到的,最快的路线并不对应于最短的路线。

6.3.6. 适度 服务区(从层)

这个 Network Analysis ► Service area (from layer) 算法可以回答这个问题:给定一个点图层,在给定距离或时间值的情况下,所有可达区域是什么?

备注

这个 Network Analysis ► Service area (from point) 是相同的算法,但它允许您手动选择地图上的点。

给定的距离为 250 我们想知道我们可以从网络上的每个点走多远 network_points 一层。

  1. 取消选中除以下层之外的所有层 network_points

  2. 打开 Network Analysis ► Service area (from layer) 演算法

  3. 选 network_lines 为 Vector layer representing network

  4. 选 network_points 为 Vector layer with start points

  5. 选 Shortest 在……里面 Path type to calculate

  6. 请输入 250 对于 Travel cost 参数

  7. 点击 Run 并关闭该对话框

    ../../../_images/service_area.png

    输出图层表示在给定250米距离的情况下从点要素可以到达的最大路径:

    ../../../_images/service_area_result.png

很酷,不是吗?

6.3.7. In Conclusion

现在您知道如何使用 Network analysis 解决最短和最快路径问题的算法。

现在,我们准备对矢量层数据执行一些空间统计。我们走吧!

6.3.8. What's Next?

接下来,您将了解如何对矢量数据集运行空间统计算法。