QGIS 3.10 路径分析

QGIS 3.10 路径分析网络数据集(networks)的创建、管理和可视化是GIS的重要组成部分。公路、铁路、管线等公用基础设施都可以建模为由线和节点组成的带有属性信息的网络数据。本教程将学习如何对路网进行建模,如何运用样式对路网属性可视化,同时通过QGIS3.10内置的路径分析工具找出两点之间的最短路径。任务概述通过华盛顿地区道路中心线图层,建立路网并查找城市中任意两点之间的最短路径。将会学到的其他技巧使用数据定义覆盖(datadefinedoverrides),根据线的方向对齐箭头符号。获取示范数据本教程

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

网络数据集(networks )的创建、管理和可视化是GIS的重要组成部分。公路、铁路、管线等公用基础设施都可以建模为由线和节点组成的带有属性信息的网络数据。本教程将学习如何对路网进行建模,如何运用样式对路网属性可视化,同时通过QGIS 3.10内置的路径分析工具找出两点之间的最短路径。

任务概述

通过华盛顿地区道路中心线图层,建立路网并查找城市中任意两点之间的最短路径。

将会学到的其他技巧

使用数据定义覆盖(data defined overrides ),根据线的方向对齐箭头符号。

获取示范数据

本教程使用华盛顿地区街道中心线数据,下载地址:

http://www.qgistutorials.com/downloads/Street_Centerlines.zip

将QGIS界面设置为中文

制作地图之前,请将您的QGIS软件界面设置为简体中文(如果您已经设置过了,可以忽略本节后续内容)。操作方式为:通过菜单【Settings】->【Options…】打开对话框,选择其中的【General】标签,找到“Override system locale”前面的复选框并打勾,在“User Interface Transaction”下拉框中找到并选择“简体中文”,单击【OK】,退出QGIS。重新启动QGIS后即可看到简体中文界面。
在这里插入图片描述

详细操作步骤

  1. 下载并解压缩Street_Centerlines.zip ,在QGIS的【浏览】面板中找到“Street_Centerlines.shp”文件,拖拽到地图画布中。
    在这里插入图片描述
  2. 【图层】面板中添加了华盛顿地区街道线图层“Street_Centerlines”。点击【属性】工具栏中的【识别要素】按钮,然后点击地图上任意要素,在【识别结果】面板中查看要素属性字段。可以看到,“Street_Centerlines”图层包含了道路基础属性信息,如道路名称、道路类型等。其中,字段“DIRECTIONA”存储的是道路方向信息,该字段包含4种取值:“Two Way”代表双向道路;“One Way (Digitizing direction)”表示沿着线要素方向的单向道路,即方向从线要素的起点到终点;“One way (Against digitizing direction)”表示单向街道,方向与线要素数字化的方向相反,即方向为线要素的终点到起点;对于存在部分“Unknown”取值的要素,表示方向不确定,本教程将其假设为双向道路。在路径分析中,“DIRECTIONA”字段有着重要作用。接下来通过该字段筛选出图层中的单向街道,并设置适当的箭头样式,以显示该街道的交通方向。
    在这里插入图片描述
  3. 点击【图层】面板上方的【打开图层样式面板】按钮,【图层样式】面板显示在地图窗口右侧,从下拉列表框中选择【基于规则】渲染器。
    在这里插入图片描述
  4. 点击【+】按钮,为单向道路设置过滤条件,并为其创建新样式。
    在这里插入图片描述
  5. 在【编辑规则】面板中,点击【Ɛ】按钮,打开【表达式字符串构建器】对话框。
    在这里插入图片描述
  6. 在【表达式字符串构建器】对话框中,展开中间面板内的【字段和值】节点,选中“DIRECTIONA ”字段,点击右侧面板的【全部唯一】按钮,下方的文本框列出了该字段4种可能取值,可为构建表达式提供取值参考,也可以通过双击将取值将其添加到表达式中。
    在这里插入图片描述
  7. 在【表达式】文本框中输入下面表达式,以选中图层中所有单向街道。点击【OK】按钮。
"DIRECTIONA" = 'One way (Against digitizing direction)' OR "DIRECTIONA" ='One Way (Digitizing direction)'

在这里插入图片描述

  1. 点击【符号图层类型】下拉框,选择“标记线”。
    在这里插入图片描述
  2. 【标记位置】选择【在中心点】。
    在这里插入图片描述
  3. 点击符号中的【简单标记】,从下方的符号类型框中选择“filled_arrowhead”符号,这是一个类似箭头的符号,用于表达单向街道的方向。此时,地图窗口中所有符号都朝着同一个方向,与实际情况不符,现实中街道的交通流向各不相同,这就需要通过数据定义覆盖(data-defined override )得到符号旋转角度取值,使符号方向与交通流向保持一致。
    在这里插入图片描述
  4. 点击【旋转角度】右侧的【由数据定义覆盖】按钮,从下拉菜单中点击【编辑】。
    在这里插入图片描述
  5. 在【表达式字符串构建器】对话框中,构建条件表达式,根据单向街道方向的不同,获取不同的旋转角度。最简单的方法是根据方向进行0度或者180度旋转,但该方法只适用于水平方向的线要素。为了让箭头方向与所有道路线方向对齐,需要在表达式中计算出道路线的角度,所以需要使用“angle_at_vertex”函数以得到要素角度值。在表达式文本框中输入下面的表达式,点击【OK】按钮。
CASE
  WHEN "DIRECTIONA" =  'One Way (Digitizing direction)'
    THEN angle_at_vertex($geometry, 1) - 90
  WHEN "DIRECTIONA" =  'One way (Against digitizing direction)'
    THEN angle_at_vertex($geometry, 1) - 90 + 180
END

在这里插入图片描述

  1. 地图窗口中可以看到,根据道路的方向和角度,箭头随之进行了适当的旋转以达到正确对齐。为了保持整洁,地图中仅显示了单向道路的方向箭头,没有标明方向的道路(即DIRECTION取值为“UNKNOWN”)默认为双向道路,此时并没有添加箭头来显示方向。点击菜单【处理】->【工具箱】,调出【处理工具箱】面板,开始进行路径分析。
    在这里插入图片描述

  2. 在【处理工具箱】面板中依次找到【网络分析】->【最短路径(点到点)】,双击运行。
    在这里插入图片描述

  3. 在弹出的【最短路径(点到点)】对话框中,【描绘网络的矢量图层】下拉框选择“Street_Centerlines”,【要计算的路径类型】保持默认值“最短”。点击【起点】右侧的【…】按钮,在地图中点击路网图层任意点作为路径分析的起点,同样步骤设置路径分析的终点。如果想使用与本教程相同的起点/终点参数,可以在【起点】文本框填入“-76.99730092166396,38.887624846748984”,【终点】文本框填入“-76.99154831062152,38.89151000569929”。展开【高级参数】面板,【方向字段】下拉框选择“DIRECTIONA”字段。根据前面步骤中对“DIRECTIONA”字段取值的解释,“One Way (Digitizing direction)”表示单向道路为线要素的正方向,因此,在【正向值】文本框中填入“One Way (Digitizing direction)”“One way (Against digitizing direction)”表示单向道路为线要素的反方向,因此,在【反向值】文本框中填入“One way (Against digitizing direction)”。其他选项保持默认值,点击【运行】按钮。
    在这里插入图片描述

  4. 最短路径算法使用图层中的路网要素和上述步骤提供的参数构建路网图,使用路网图可查找起点到终点之间的最短路径。算法运行结束后,【图层】面板中添加了结果图层“最短路径”,该图层是线图层,包含起点与终点之间的最短路径。
    在这里插入图片描述

  5. 实际生活中,起点与终点之间可能存在多个可达路径,但是,考虑到路网的约束条件,比如单向,路径分析的结果是最短可能路径。验证分析结果是否正确是一个好习惯,最简单的验证方式是使用第三方地图服务,以相同的起点和终点作为参数计算最短路径,看看第三方地图服务计算得到的最短路径是否与前面的计算结果相吻合。本教程使用谷歌地图验证,从下图可以看到,谷歌地图所推荐的最短路径与上述步骤的计算结果完全相同。
    在这里插入图片描述

    本教程到此结束。

吴建玲

2020年6月29日


版权声明

本文欢迎转载,转载时请注明出处。

本文主要翻译并改编自qgistutorials网站,原文链接为https://www.qgistutorials.com/en/docs/3/basic_network_analysis.html,原文已根据《知识共享署名4.0国际许可协议(Creative Commons Attribution 4.0 International License)》获得许可,在此向原文作者乌加尔·甘地(Ujaval Gandhi)致以敬意,感谢他为分享QGIS技术做出的贡献。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/172667.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Linux系统怎么修改用户名_怎么更改微软用户名

    Linux系统怎么修改用户名_怎么更改微软用户名修改用户名(以CentOS-8为例)①进入root用户进行操作,在/etc/sudoers添加admin(新用户名)ALL=(ALL)ALLsurootvim/etc/sudoers②进入/etc/passwd将旧用户名改为admin(新用户名)vim/etc/passwd③进入/etc/group将旧用户名改为admin(新用户名)vim/etc/group④进入/etc/shadow将旧用户名改为admin(新用户名)

  • GitLab+Jenkins+Maven+Docker实现自动集成、打包、部署

    GitLab+Jenkins+Maven+Docker实现自动集成、打包、部署

  • GCC中初始化函数是怎样被处理的?

    GCC中初始化函数是怎样被处理的?

  • a4如何打印双面小册子_a4如何打印双面小册子[通俗易懂]

    a4如何打印双面小册子_a4如何打印双面小册子[通俗易懂]展开全部1、在Word中打开一篇文档,点击“文件”——“打印”菜单项,准备开始打印工作。2、弹出“32313133353236313431303231363533e4b893e5b19e31333433623230打印”对话框,在“打印机”名称框的左侧,点击“属性”按钮,点击此按钮,开始设置小册子打印。3、弹出打印机属性对话框,在“双面打印”部分,点击下拉菜单,选择“双面打印,短边“装订。(目…

  • C语言动态规划——背包问题详解

    C语言动态规划——背包问题详解作为一名大三老学长,我的嵌入式春招找实习之旅好像接近尾声了。春招投递了BAT、美团、华为、oppo、大疆等公司的实习。大多数公司都给了面试机会,尤其是阿里,笔试一道编程题都没有写出来居然还给了面试机会!还是非常感谢这些互联网公司能够给我面试机会的,oppo的HR面后半个多月了也没有消息,华为投递一个月也没有什么进展。目前已经拿到了大疆、CVTE实习,打算5月去深圳大疆实习!

  • 3nf和bcnf分解_如何分解成3nf

    3nf和bcnf分解_如何分解成3nf1.3NF分解先求出正则覆盖Fc对于Fc里面的所有函数依赖a->b,均转化为Ri=ab对于所有的模式Ri如果包含候选码,进行第4如果都不包含候选码,将任意一个候选码添加到模式Ri里面如果一个模式被另一个模式包含,则去掉此被包含的模式。例子:…

    2022年10月28日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号