• 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的构造函数如下
    QgsSymbol (Qgis::SymbolType type, const QgsSymbolLayerList &layers)
    
    • 1
    • 由构造函数可见,多个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,QgsSymbolLayerQgsFeatureRenderer
  • 相关阅读:
    ssh常用操作
    智能可观测性如何赋能智能汽车主机厂
    JAVA计算机毕业设计消防网站(附源码、数据库)
    IO/多路复用(select/poll/epoll)
    多线程之间如何进行通信 ?
    MiniConda、CUDA、CUDnn以及pytorch环境的配置以及坑
    Vue3 源码阅读(2):响应式系统 —— 核心思想、基本实现
    用C#也能做机器学习?
    【80天学习完《深入理解计算机系统》】第十四天 复习第三章
    有趣的特性:CHECK约束
  • 原文地址:https://blog.csdn.net/richie12/article/details/134007511