QGIS道路样式设置
俺不是大老虎
编辑于 2023年10月21日 00:50
收录于文集
共3篇

基于OSM(OpenStreetMap)离线矢量数据,进行线型风格渲染。

  1. 纯色城市肌理风格

  2. 隧道“下沉”地图风格

  3. 隧道,桥梁分层地图风格

  4. 道路分级和道路分层地图效果


效果展示


数据获取

数据来源:GEOFABRIK

官网地址:http://www.geofabrik.de/

数据下载:https://download.geofabrik.de/

下载方法:

选取下载区域

下载shp压缩包

注:此网站对区域范围存在争议,某南区域数据缺失。数据务必谨慎使用!!!!!

下载后解压压缩包,获得以下数据,我们使用roads文件:

全部数据类型

此类shp文件属性表包含:

fclass分级 name道路名称 ref代码 oneway是否为一条路或单向? maxspeed最大速度 layer图层顺序 bridge桥梁 tunnel隧道

此次使用fclass字段和layer字段。

属性表


样式1——单一颜色

方法1:数据筛选

筛选fclass字段,选取需要的数据类型,表达式如下:

"fclass&#​34;  IN ('motorway&#​39;,'motorway_link&#​39;,'primary&#​39;,'primary_link&#​39;,'secondary&#​39;,'secondary_link&#​39;,'tertiary&#​39;,'tertiary_link&#​39;,'track&#​39;,'trunk&#​39;,'trunk_link&#​39;)

效果图


方法2:规则样式Rule-based

选用规则样式

添加筛选公式

此处我们依然选用之前的表达式

再添加一条新规则

选用ELSE并且编辑样式

最终规则

此类图主要是查看城市肌理和纪念效果,但对于数据的可获取性来说,缺乏一些要素分类。比如隧道,桥梁此类数据。


样式2——隧道筛选

基础版

表达式:

 "tunnel&#​34;  = 'T&#​39;

表达式构建

对“隧道”进行样式编辑

同理编辑ELSE数据样式

此时成果

局部放大,已经可以看出明确的分级图层

局部区域放大

样式风格进阶版

参考高德地图的样式:

    道路边缘颜色深于路面颜色,隧道边界线为虚线(如下图箭头),对比上图的局部放大,还有一差距。

高德地图样式

点击加号,新建一个线型样式

添加线型样式

调整图层顺序

调整图层顺序

编辑线型样式,其宽度略大于路面样式,注意线型转角使用圆角(避免小比例尺度下,转角出现锐角,影响画面)还有线型端点使用圆形(此为个人习惯)。

线型样式设置

在道路规则右键,选择复制符号。

复制符号样式

在隧道规则右键粘贴符号。

粘贴符号

编辑隧道样式,将描边风格调整为虚线,并适当调整隧道路面颜色,将隧道与道路做区分。

描边样式设置

局部放大效果,整体道路有一个统一描边,隧道也有虚线描边

现状效果图

我们放大局部区域,发现整体效果还不错,但是隧道和道路视觉上在统一图层(蓝框区域),我们需要然隧道下移一层。

细节效果

打开符号级别

编辑符号级别

使得道路描边图层序号大于隧道路面

改变道路端点样式为flat,把圆角收回

效果展示


样式3——隧道\桥梁分层风格

对于以上只是筛选出隧道,但对于立交桥区域,道路全部融在一起,无法区分。

因此调整一下思维,使用osm自带的layer字段进行渲染。

使用layer渲染的结果

使用分类渲染风格,选择layer字段,然后点击calssify,分类。

分类渲染

删除空值符号

删除多余的符号

编辑道路样式,路面宽度略小于底层宽度。

编辑道路样式

启用高级符号,编辑符号级别。

符号级别编辑

让上层数据的描边大于下层数据的路面,让顶层数据打断下层数据的连续性,从而达到图层差集效果。

符号级别


样式4——道路分级渲染

此处参考QGIS课堂的教程:

使用QGIS实现道路分级可视化

链接地址:网页链接​

以上教程风格详细,在此就不赘述了。

QGIS课堂分享的表达式构建

此处有两个问题:

其一为,上图所用的道路数据属于(.osm)解析出的全属性段数据,因此会有highway字段,在文章中使用的数据属性段就是fclass字段。

其二是构建二级规则,

构建二级规则

二级规则

二级规则

复制符号

使用shfit或者ctrl多选,粘贴符号(选取方法等同于windows系统的操作方法)。

粘贴符号

结果展示

完善图层样式

规则界面

使用符号级别面板,调整图层顺序。

符号级别

不同字段渲染成果对比:

Fclass-Layer+影像

Fclass-Layer