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

我国的公路按照行政级别可分为国道、省道、县道、乡道、村道和专用公路六个等级,其中,国道包括国家高速公路和普通国道,省道包括省级高速公路和普通省道。按照技术等级又可以分为高速公路、一级公路、二级公路、三级公路和四级公路五个等级。其中,高速公路以外的其他公路称为普通公路。(GBT 917-2017)

对于城市道路,依据《城市道路交通规划设计规范》(GB50220-95)和《城市道路设计规范》(CJJ37-90)进行等级划分,一般分为快速路、主干道、次干道和支路4级。

如何将这些道路等级可视化,形成电子地图的骨架呢?本文以郑州城市道路为例,使用QGIS颜色道路分级可视化的过程。

 01 示范数据

本文选用OpenStreetMap下载的部分郑州区域道路为例,依照高德地图路网的风格演示道路分级可视化的过程。示范数据网盘地址为:

链接: https://pan.baidu.com/s/12_SIwK7dAAmDknZ1Ot-RGA 

提取码: k9w4 

 02  数据预处理

  • 打开数据

启动QGIS,点击工具栏的【添加矢量图层】按钮,在对话框中 【矢量】标签->【源】->【矢量数据源】右侧的【…】浏览到下载的OSM-zhengzhou.gpkg文件,点击下方的【添加】按钮,选中“lines”和“polygons”两个图层,点击【OK】添加到地图窗口。

 

 关闭数据源管理器,回到地图主窗口,可以看到示范数据如下:

 

在图层面板取消勾选“polygons”,暂时隐藏面图层。点击 【打开图层样式面板】按钮,打开图层样式面板。

 

  • 道路分级

双击规则列表中“未过滤”或者选中后点击下方的 【编辑当前规则】按钮,进入编辑规则面板:

 

在【标注】填入规则名称,此处为“高速公路”,点击【过滤器】右侧的 ,在表达式字符串构建器中输入如下表达式,得到高速公路要素集合:

"highway" in ( 'motorway' ,  'motorway_link' )

 

关闭表达式字符串构建器,高速公路要素如下:

 

点击返回,然后点击 按钮增加新的规则,进入编辑规则面板,输入名称“国道&快速路”,点击,在表达式字符串构建器中输入如下表达式得到国道和快速路:

"highway"  in ( 'trunk' , 'trunk_link' )

 

同样步骤输入下列表达式,将主干道、次干道、其他道路添加到规则中:

主干道

"highway" in ( 'primary' , 'primary_link' )

次干道

"highway"  in ( 'secondary' , 'secondary_link', 'tertiary' , 'tertiary_link'  )

其他道路

"highway"  in ( 'cycleway' , 'footway' , 'living_street' , 'residential' , 'steps' , 'unclassified' , 'service' )

道路分级后效果如下:

 

图中各等级道路的颜色为系统随机分配,如果大家的地图颜色不同,不用介意,下面将介绍不同等级道路的符号设置。

 03 道路分级线型符号

道路等级的区分,主要依靠不同的线型符号,即不同线条组合、颜色和宽度,表现出道路在网络中的重要程度、通行能力和道路功能。电子地图中,根据地图比例尺层级,使用不同层次线条组合、颜色、宽度的搭配,形成风格迥异的地图,而这些风格的设计不仅要符合地图制图学规范,也要有一定的审美需求,是地理空间表达和艺术的结合。

在电子地图中,道路要素的线型通常由两个符号图层(symbol layer)组成:位于底层的符号图层较宽,颜色较深,常用实线,用于表达道路的边框;位于上层的符号图层较窄,颜色较浅,可用实线或者虚线。这种线型又叫“带边框的线条(cased lines”),QGIS默认的线型库中topo main road、topo road属于此类线型符号:

 

本文的主旨并不是从头设置道路符号,而是使用QGIS模仿高德地图路网风格,演示城市道路分级符号的设置过程。

我们先看看如何设置高速公路线型符号。

选中“lines”图层,在图层样式面板的规则列表双击“高速公路”,进入编辑规则页面:

 

仔细观察类似比例尺层级下高德地图的路网符号,其中高速公路为 ,参数如下:

线颜色: (RGB:248, 171, 67);

边框颜色:(RGB:237, 159, 52);

线宽:10 px;

边框宽度:1 px。

 

在编辑规则页面中嵌入了符号选择器组件(Symbol selector widget),通过这个界面可以为该规则选择预定义符号库中的符号,或者根据需要自定义新的线状符号:

 

点击右侧的 按钮,添加一个符号图层,设置类型为“简单线条”:

 

选择第一个“简单线条”符号图层,调整如下属性:

颜色:RGB值248, 171, 67;

描边宽度:9像素;

其他参数保持默认。

 

选择第二个 “简单线条”符号图层,调整如下属性:

颜色:道路边框颜色,RGB值237, 159, 52;

描边宽度:10像素;

其他参数保持默认。

 

注意,这两个符号图层的顺序非常重要,位于上方的第一个符号图层宽度为9像素,位于下方的符号图层宽度为10像素,两者之间存在1像素宽度差值,形成颜色较深、宽度为1像素的边框效果。

同样步骤使用各个道路等级参数设置国道、主干道、次干道和其他道路的线型符号,在这里不一一演示,具体可打开示范数据的工程文件gaode.qgz查看。

 04 转弯和端点

“连接样式”和“端点样式”提供对线型转弯处和连接处的细节处理。

“连接样式”控制一条线段在转弯处的绘制方式,有三个选项:斜角、尖角和圆角,下图是对比效果:

 

简单线型默认情况下选择“连接方式”为“斜角”,在电子地图道路符号设计中,一般选择“圆角”。

“端点样式”控制线条端点的绘制方式,分为三种:方角、扁平和圆角,效果如下:

 

简单线型默认端点样式为“方角”,从上图效果可以看出,对于带边框的道路,采用“扁平”端点样式绘制效果较好。

将高速公路、国道&快速路、主干道、次干道和其他道路线型的“连接方式”和“端点样式”设置完毕后,得到路网效果如下:

 

 05 解决压盖和交叉口

注意到上图中箭头所指的地方,道路出现相互压盖,并且立交桥的出入口表示错误,这是因为道路的绘制顺序是随机的,后绘制的要素叠在前面绘制的要素上方,就出现了与实际情况不符的压盖现象,例如普通道路盖住了高架,所以需要控制要素绘制的顺序,在QGIS中用【符号水平】实现。

在图层样式面板下方,点击【符号水平…】按钮,进入符号水平面板。

 

符号水平定义符号图层的渲染顺序,是一个表格形式的参数设置界面,行表示当前图层的线型符号,列是符号图层。方格内的数字表示符号图层绘制通道,数字越小,越先绘制,数字越大,越后绘制,同一个地点最后绘制的符号将压盖之前绘制的符号。绘制通道相同(即数字相同)的符号图层,其绘制的先后顺序随机(也有说法是按照要素入库顺序,我没找到文档证实)。默认时所有要素的绘制通道为0。

 

列名表示符号图层,以“图层”+数字开头,一个符号如果由多个符号图层组成,就从下到上以整数编号,从0开始依次递增。

 

因此,我们应该给在地面以上的道路一个比较大的绘制通道(即数字大),穿行于地下的道路应设置一个相对较小的绘制通道,以保证符号的渲染顺序。绘制通道可根据需要选择任意整数(但不能是小数),只要保证道路层级的关系正确即可。

具体到本例,按照道路的重要程度(从高到低为高速公路、国道&快速路、主干道、次干道、其他道路),设置绘制通道如下:

 

观察地图的效果,在当前比例尺下基本与实际情况一致。

当前比例尺立体交叉的道路可以不区分层级,但是使用比较大比例尺,可以清晰看到立交桥的出入口时,应注意主路与辅助道路、连接道路之间的上下关系,下图中的立体交叉效果与实际情况是不符的:

 

实际情况是这样的:

 

要正确表达出交叉口的道路情况,需要借助属性表中的“layer”字段将桥梁的层级和地下通道标识出来,规则可参考下图:

 

规则设置完成后,根据道路、桥梁、地下隧道的绘制顺序在符号水平中输入相应的渲染通道即可。


版权声明

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

猜你喜欢

转载自blog.csdn.net/QGISClass/article/details/113889129
今日推荐