
基于OSM(OpenStreetMap)离线矢量数据,进行线型风格渲染。
纯色城市肌理风格
隧道“下沉”地图风格
隧道,桥梁分层地图风格
道路分级和道路分层地图效果

数据来源:GEOFABRIK
官网地址:http://www.geofabrik.de/
数据下载:https://download.geofabrik.de/
下载方法:

选取下载区域

下载shp压缩包
注:此网站对区域范围存在争议,某南区域数据缺失。数据务必谨慎使用!!!!!
下载后解压压缩包,获得以下数据,我们使用roads文件:

全部数据类型
此类shp文件属性表包含:
fclass分级 name道路名称 ref代码 oneway是否为一条路或单向? maxspeed最大速度 layer图层顺序 bridge桥梁 tunnel隧道
此次使用fclass字段和layer字段。

属性表
方法1:数据筛选


筛选fclass字段,选取需要的数据类型,表达式如下:
"fclass" IN ('motorway','motorway_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','track','trunk','trunk_link')

效果图


方法2:规则样式Rule-based

选用规则样式

添加筛选公式

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

再添加一条新规则

选用ELSE并且编辑样式

最终规则


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

基础版
表达式:
"tunnel" = 'T'

表达式构建
对“隧道”进行样式编辑

同理编辑ELSE数据样式

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

局部区域放大
样式风格进阶版
参考高德地图的样式:
道路边缘颜色深于路面颜色,隧道边界线为虚线(如下图箭头),对比上图的局部放大,还有一差距。

高德地图样式
点击加号,新建一个线型样式

添加线型样式
调整图层顺序

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

线型样式设置
在道路规则右键,选择复制符号。

复制符号样式
在隧道规则右键粘贴符号。

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

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

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

细节效果

打开符号级别
编辑符号级别

使得道路描边图层序号大于隧道路面
改变道路端点样式为flat,把圆角收回


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

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

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

分类渲染
删除空值符号

删除多余的符号
编辑道路样式,路面宽度略小于底层宽度。

编辑道路样式
启用高级符号,编辑符号级别。

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

符号级别


此处参考QGIS课堂的教程:
使用QGIS实现道路分级可视化
链接地址:网页链接
以上教程风格详细,在此就不赘述了。

QGIS课堂分享的表达式构建
此处有两个问题:
其一为,上图所用的道路数据属于(.osm)解析出的全属性段数据,因此会有highway字段,在文章中使用的数据属性段就是fclass字段。
其二是构建二级规则,

构建二级规则
二级规则

二级规则

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

粘贴符号

结果展示
完善图层样式

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


符号级别
不同字段渲染成果对比:



Fclass-Layer+影像

Fclass-Layer