Skip to content

38_基础网络可视化与路径规划 QGIS3

原文链接:https://www.qgistutorials.com/en/docs/3/basic_network_analysis.html

基础网络可视化与路径规划 (QGIS3)

创建、可视化和管理网络是地理信息系统的重要组成部分。许多类型的物理基础设施,如道路、铁路、公用事业,都可以用带有属性的线段和节点建模为网络。在本教程中,我们将学习如何对道路网络进行常见建模,并应用一些样式技术来可视化其路径规划属性。我们还将使用QGIS3内置的网络分析工具,来查找网络中任意两点之间的最短路径。

任务概述

我们将以华盛顿特区的道路街区图层为例,可视化其连通性并构建网络,以查找城市中任意两点之间的最短路径。

你将学习的其他技能

  • 如何使用数据定义覆盖功能,根据线段方向对齐箭头符号。

获取数据

哥伦比亚特区政府在 开放数据目录 上免费共享了数百个数据集。

下载由 DCGISopendata 分享的 道路街区 的 shapefile 格式数据。

../../_images/data11.png

为方便起见,你也可以直接从以下链接下载数据集的副本:

Roadway_Block-shp.zip

数据来源:[DCOPENDATA]

操作步骤

  1. 浏览器面板中找到下载的 Roadway_Block-shp.zip 文件。展开它并将 Roadway_Block.shp 文件拖拽到画布上。

../../_images/115.png

  1. 你将看到名为 Roadway_Block 的新线图层被添加到图层面板中。此图层代表华盛顿特区的每条道路。选择属性工具栏中的识别工具。点击任意路段以查看其包含的属性。其中有标准的属性,如路线名称、道路类型等。还有一个重要的路径规划属性叫做 SUMMARYDIR。它指定了路段是双向还是单向。它包含4个不同的值。BD 表示双向街道。OB 表示单向街道,允许交通沿线段方向行驶,IB 表示单向街道,交通流向与线段方向相反。还有 ?? 值,我们将假设其为双向交通。现在,我们将使用该属性中的信息在单向街道上显示箭头。

../../_images/213.png

  1. 点击图层面板中的打开图层样式面板按钮。从下拉菜单中选择 基于规则 的渲染器。

../../_images/310.png

  1. 我们将创建一个新样式,并设置仅筛选单向道路的规则。点击 添加规则 + 按钮。

../../_images/42.png

  1. 编辑规则对话框中,点击 表达式 按钮。

../../_images/52.png

  1. 表达式字符串构建器对话框中,展开中间面板的字段和值部分。选择 SUMMARYDIR 属性,并在右侧面板中点击 全部唯一。之前讨论过的4个值将会出现。在构建表达式时,将这些值作为参考非常有用。同时,你可以双击任意值将其添加到表达式中。

../../_images/62.png

  1. 目标是创建一个筛选所有单向街道的表达式。输入以下表达式并点击 确定

bash "SUMMARYDIR" in ('IB', 'OB')

../../_images/72.png

  1. 接下来,将符号图层类型更改为 标记线

../../_images/82.png

  1. 标记放置下选择 在中心点

../../_images/92.png

  1. 点击 简单标记 符号。向下滚动并选择 filled_arrowhead 标记。你会看到箭头状符号现在出现在单向街道上。但它们都指向一个方向,而我们知道筛选出的道路包含多个方向。我们可以通过为旋转值设置数据定义覆盖来进一步细化符号。

../../_images/105.png

  1. 点击旋转旁边的数据定义覆盖按钮。

../../_images/116.png

  1. 我们可以输入一个条件表达式,根据单向方向返回不同的旋转值。对反向道路进行180°旋转将使方向正确。在此,我们将使带有 IB 属性的道路旋转180°,这样所有道路都将显示正确的交通流方向。输入以下表达式并点击 确定

bash if( "SUMMARYDIR" = 'IB', 180, 0)

../../_images/125.png

  1. 现在你将看到箭头符号与正确的道路方向对齐。为了使样式清晰,我们选择仅在单向街道上显示箭头。未标注箭头的街道则默认为双向街道。现在网络样式已正确设置,我们可以进行一些分析了。前往 处理工具箱

../../_images/134.png

  1. 搜索并找到网络分析最短路径(点到点) 算法。双击以启动它。

../../_images/144.png

  1. 最短路径(点到点) 对话框中,选择 Roadway_Block 作为代表网络的矢量图层。保持要计算的路径类型最短。接下来,我们需要选择起点和终点。你可以点击 … 按钮并在画布的网络中任意位置点击。如果你想复现本教程的结果,可以输入 -76.99730092166396,38.887624846748984 作为起点,输入 -76.99154831062152,38.89151000569929 作为终点。展开高级参数部分。选择 SUMMARYDIR 作为方向字段。你现在应该已经熟悉表示前向和后向交通流的单向方向值。输入 OB 作为前向方向的值,输入 IB 作为后向方向的值。保持其他选项为默认值,然后点击 运行

../../_images/154.png

  1. 该算法将使用图层的几何图形和提供的参数来构建网络图。然后使用该图来查找起点和终点之间的最短路径。算法完成后,你将看到一个新的图层 最短路径 被添加到图层面板中,该图层显示了起点和终点之间的最短路径。

../../_images/164.png

  1. 你会发现起点和终点之间存在许多可能的路径。但考虑到网络的限制条件——例如单行道,结果是可能的最短路径。验证你的分析和假设总是一个好主意。一个简单的验证方法是使用第三方地图服务,查看其结果是否与我们得出的结果一致。这是 谷歌地图建议的 相同起点和终点之间的最短路径。正如你所见,推荐的最短路线与我们的结果完全一致,从而验证了我们的分析。

../../_images/174.png


如果你想提供反馈或分享学习本教程的经验,请在下方留言。(需要 GitHub 帐户)