8.1 矢量图层符号化整体说明

前言

地图制图是QGIS的优势所在,QGIS包含完整的地图制图功能,如标注与注记、符号化与地图综合等多种功能。 符号化(Symbolization)是指利用符号将地理事物或现象抽象化。

符号化与图层渲染

  • 要实现矢量图层数据符号化需要三个类:符号(QgsSymbol),符号层(QgsSymbolLayer)和图层渲染器(QgsFeatureRenderer)
  • 以下对这三个类分别介绍

符号

  • 符号用于在地图上显示地理要素
  • qgis中地理要素分为点、线和面三类,对应的符号也分三类:Marker Symbol、Line Symbol和Fill Symbol,分别由以下类表示
  • 符号(QgsSymbol)有大小、颜色、透明度等属性
  • 在qgis软件,打开图层属性-符号化页面,可以设置符号,如下图,Marker是符号(QgsSymbol)。而两个Simple Marker是符号层(QgsSymbolLayer)

符号层

  • 符号(QgsSymbol)由一到多个符号层(QgsSymbolLayer)构成
  • QgsSymbol的构造函数如下
rust 复制代码
QgsSymbol (Qgis::SymbolType type, const QgsSymbolLayerList &layers)
  • 由构造函数可见,多个QgsSymbolLayer组成QgsSymbol,对应地理要素的点线面,符号层也有三类,如下图
  • 符号层需要设置其大小、颜色等属性,如下图
  • 符号层的种类有多种,如下图
  • Symbol layer type可选项如下
    • 动画标记(Animated marker)
    • 椭圆形标记(Ellipse marker)
    • 填充(圆形)标记(Filled marker)
    • 字符标记(Font marker)
    • 几何生成器(Geometry generator)
    • 掩膜(Mask marker)
    • 图片(Raster Image marker)
    • 简单标记(Simple marker)
    • SVG标记(SVG marker)
    • 矢量字段标记(Vector field marker)
  • 其对应的类图如下
  • 由一个或多个符号层构建符号后,使用渲染器(QgsFeatureRenderer)渲染后,显示在地图上。

渲染器

  • 点线面的渲染器类型不同,这里以点图层渲染器为例

  • 在点要素图层的图层属性中,选择"Symbology"选项卡,即可在最上方的下拉菜单中选择符号化类型。

  • qgis中默认使用单一符号渲染器(Single Symbol),可选择的渲染器如下图

    • 无符号(No symbols):不显示该图层要素。
    • 单一符号(Single symbol):统一设置要素符号方案
    • 分类(Categorized):根据类型(属性表的离散变量)设置不同的符号方案。
    • 分级(Graduated):根据数值大小(数据表的连续变量),利用配色方案(Color ramp)设置不同的颜色。
    • 基于规则(Rule-based):在不同的规则(表达式筛选、特定的分辨率)下,使用不同的符号方案。
    • 点分布(Point displacement):点要素过于密集时,将距离近的符号偏移原位置,提高地图可读性。
    • 点聚合(Point cluster):点要素过于密集时,将距离近的符号聚合,提高地图的可读性。
    • 热度图(Heatmap):用颜色代表点密度,用于表现点要素出现集中性的地图。
  • 渲染器对应的类如下图

总结

  • 分别介绍了实现符号化的三个父类QgsSymbol,QgsSymbolLayer和QgsFeatureRenderer
相关推荐
Python图像识别1 小时前
46-【2027毕设】YOLO11田间杂草检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计
沫璃染墨13 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss
好好学习O(∩_∩)O17 小时前
[QT] 多线程moveToThread 和易踩的8个坑
开发语言·qt
总要学点什么18 小时前
第51篇:数据分析-热力图——笔刷画的是圆,落到地上却成了椭圆
3d·数据挖掘·数据分析·前端框架·gis·webgl·cesium
北i19 小时前
Dubbo 默认超时重试:把下游打雪崩的隐形放大器
开发语言·qt·dubbo
扶尔魔ocy1 天前
【qt openGL入门笔记】OSG实现显示飞机模型飞行的点迹(二)
qt·opengl·osg
Python图像识别1 天前
43-【2027毕设】YOLO11暴力检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计
bug和崩溃我都要1 天前
QT 开发的专业截图录屏工具 - macOS版 / Windows版
windows·qt·mac·录屏·截屏
Python图像识别2 天前
40-【2027毕设】YOLO11面部口罩检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计
Python图像识别2 天前
39-【2027毕设】YOLO11行人摔倒检测系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计