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_linesVector layer representing network

  3. 使用 ShortestPath type to calculate

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

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

  5. 做同样的事情,但选择标记为 Ending pointEnd 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 layerStart 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_linesVector layer representing network

  4. network_pointsVector 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?

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