38_基础网络可视化与路径规划 QGIS3
原文链接:https://www.qgistutorials.com/en/docs/3/basic_network_analysis.html
基础网络可视化与路径规划 (QGIS3)¶
创建、可视化和管理网络是地理信息系统的重要组成部分。许多类型的物理基础设施,如道路、铁路、公用事业,都可以用带有属性的线段和节点建模为网络。在本教程中,我们将学习如何对道路网络进行常见建模,并应用一些样式技术来可视化其路径规划属性。我们还将使用QGIS3内置的网络分析工具,来查找网络中任意两点之间的最短路径。
任务概述¶
我们将以华盛顿特区的道路街区图层为例,可视化其连通性并构建网络,以查找城市中任意两点之间的最短路径。
你将学习的其他技能¶
- 如何使用数据定义覆盖功能,根据线段方向对齐箭头符号。
获取数据¶
哥伦比亚特区政府在 开放数据目录 上免费共享了数百个数据集。
下载由 DCGISopendata 分享的 道路街区 的 shapefile 格式数据。

为方便起见,你也可以直接从以下链接下载数据集的副本:
数据来源:[DCOPENDATA]
操作步骤¶
- 在浏览器面板中找到下载的
Roadway_Block-shp.zip文件。展开它并将Roadway_Block.shp文件拖拽到画布上。
- 你将看到名为
Roadway_Block的新线图层被添加到图层面板中。此图层代表华盛顿特区的每条道路。选择属性工具栏中的识别工具。点击任意路段以查看其包含的属性。其中有标准的属性,如路线名称、道路类型等。还有一个重要的路径规划属性叫做SUMMARYDIR。它指定了路段是双向还是单向。它包含4个不同的值。BD表示双向街道。OB表示单向街道,允许交通沿线段方向行驶,IB表示单向街道,交通流向与线段方向相反。还有??值,我们将假设其为双向交通。现在,我们将使用该属性中的信息在单向街道上显示箭头。
- 点击图层面板中的打开图层样式面板按钮。从下拉菜单中选择
基于规则的渲染器。
- 我们将创建一个新样式,并设置仅筛选单向道路的规则。点击 添加规则 + 按钮。
- 在编辑规则对话框中,点击 表达式 按钮。
- 在表达式字符串构建器对话框中,展开中间面板的字段和值部分。选择
SUMMARYDIR属性,并在右侧面板中点击 全部唯一。之前讨论过的4个值将会出现。在构建表达式时,将这些值作为参考非常有用。同时,你可以双击任意值将其添加到表达式中。
- 目标是创建一个筛选所有单向街道的表达式。输入以下表达式并点击 确定。
bash "SUMMARYDIR" in ('IB', 'OB')
- 接下来,将符号图层类型更改为
标记线。
- 在标记放置下选择
在中心点。
- 点击
简单标记符号。向下滚动并选择filled_arrowhead标记。你会看到箭头状符号现在出现在单向街道上。但它们都指向一个方向,而我们知道筛选出的道路包含多个方向。我们可以通过为旋转值设置数据定义覆盖来进一步细化符号。
- 点击旋转旁边的数据定义覆盖按钮。
- 我们可以输入一个条件表达式,根据单向方向返回不同的旋转值。对反向道路进行180°旋转将使方向正确。在此,我们将使带有
IB属性的道路旋转180°,这样所有道路都将显示正确的交通流方向。输入以下表达式并点击 确定。
bash if( "SUMMARYDIR" = 'IB', 180, 0)
- 现在你将看到箭头符号与正确的道路方向对齐。为了使样式清晰,我们选择仅在单向街道上显示箭头。未标注箭头的街道则默认为双向街道。现在网络样式已正确设置,我们可以进行一些分析了。前往 处理 ‣ 工具箱。
- 搜索并找到网络分析 ‣ 最短路径(点到点) 算法。双击以启动它。
- 在最短路径(点到点) 对话框中,选择
Roadway_Block作为代表网络的矢量图层。保持要计算的路径类型为最短。接下来,我们需要选择起点和终点。你可以点击 … 按钮并在画布的网络中任意位置点击。如果你想复现本教程的结果,可以输入-76.99730092166396,38.887624846748984作为起点,输入-76.99154831062152,38.89151000569929作为终点。展开高级参数部分。选择SUMMARYDIR作为方向字段。你现在应该已经熟悉表示前向和后向交通流的单向方向值。输入OB作为前向方向的值,输入IB作为后向方向的值。保持其他选项为默认值,然后点击 运行。
- 该算法将使用图层的几何图形和提供的参数来构建网络图。然后使用该图来查找起点和终点之间的最短路径。算法完成后,你将看到一个新的图层
最短路径被添加到图层面板中,该图层显示了起点和终点之间的最短路径。
- 你会发现起点和终点之间存在许多可能的路径。但考虑到网络的限制条件——例如单行道,结果是可能的最短路径。验证你的分析和假设总是一个好主意。一个简单的验证方法是使用第三方地图服务,查看其结果是否与我们得出的结果一致。这是 谷歌地图建议的 相同起点和终点之间的最短路径。正如你所见,推荐的最短路线与我们的结果完全一致,从而验证了我们的分析。
如果你想提供反馈或分享学习本教程的经验,请在下方留言。(需要 GitHub 帐户)
















