8.3 矢量图层点要素单一符号使用四

news2024/9/26 5:21:16

文章目录

  • 前言
  • 单一符号(Single symbol)渲染
    • 填充标记(Filled marker)
      • QGis
      • 代码实现
  • 总结

前言

  • 上一篇教程介绍了矢量图层点要素单一符号中椭圆形标记(Ellipse marker)和字符标记(Font marker)
  • 本章继续介绍单一符号中各种标记的用法
  • 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps

单一符号(Single symbol)渲染

  • qgis默认使用单一符号、简单标记(Simple Marker)进行渲染,以places_33S.shp为例,添加places_33S图层后,默认显示如下图
    在这里插入图片描述
  • 在点要素图层的图层属性中,选择“Symbology”选项卡,可以看到默认显示,如下图
    在这里插入图片描述
  • 除简单标记(Simple Marker)外,还有其他多种选择如下图
    在这里插入图片描述

填充标记(Filled marker)

similar to the simple marker symbol layer, except that it uses a fill sub symbol to render the marker.
This allows use of all the existing QGIS fill (and stroke) styles for rendering markers, e.g. gradient or shapeburst fills.

  • 填充标记和简单标记类似,不同点是填充标记使用子符号作为标记符号,这样设计的目的是可以复用已有的填充类型,如下图
    在这里插入图片描述
  • 填充符号(Fill)一般用于面类型的填充,如下图
    在这里插入图片描述
  • 点类型的Filled Marker复用了填充符号(Fill),这样使得点类型的符号更加丰富,如下图
    在这里插入图片描述

QGis

  • 将Symbol layer type设置为填充(圆形)标记(Filled marker),可以设置的属性见下图
    在这里插入图片描述
  • Filled marker设置为了Fill符号,而Fill符号的Symbol layer type设置为了Simple Fill,Fill符号还可用于面要素的符号化,可设置的属性见下图
    在这里插入图片描述
    在这里插入图片描述

代码实现

  • QgsFilledMarkerSymbolLayer类是填充(圆形)标记图层(Filled marker layer),类图如下
    在这里插入图片描述
  • QgsFilledMarkerSymbolLayer类中包含成员变量: std::unique_ptr< QgsFillSymbol > mFill;
  • 还有一个成员函数:bool setSubSymbol( QgsSymbol *symbol SIP_TRANSFER ) override;
  • 即在Filled marker layer对象中,可以调用函数setSubSymbolFilled marker layer设置二级符号,从而实现QGis中的效果
  • 代码实现设置图层符号的步骤如下
  1. 首先从图层获取renderer,并转换为Single Symbol Renderer代码如下
QgsFeatureRenderer * layerRenderer= layer->renderer();
QgsSingleSymbolRenderer *singleRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造Fill标记层(Fill Marker SymbolLayer),代码如下
    //构造Fill标记层(Fill Marker SymbolLayer)方法一
    auto markerSymbolLayer = new QgsFilledMarkerSymbolLayer(Qgis::MarkerShape::Trapezoid,6.0);
    markerSymbolLayer->setColor(QColor("pink"));
    //上边两行已经能够实现功能,因为在QgsFilledMarkerSymbolLayer构造函数中,默认会创建QgsFillSymbol
    //这里是为了演示如何使用setSubSymbol和QgsFillSymbol
    auto fillSymbolLayer = new QgsSimpleFillSymbolLayer(QColor("pink"));
    QgsSymbolLayerList fillLayerList;
    fillLayerList << fillSymbolLayer;
    auto fillSymbol = new QgsFillSymbol(fillLayerList);
    markerSymbolLayer->setSubSymbol(fillSymbol);
  1. 构造Marker Symbol,并为renderer设置symbol 代码如下
	//QgsMarkerSymbol构造函数中需要传入QgsSymbolLayerList
    //多个Symbol Layer构成一个Symbol
    QgsSymbolLayerList layerList;
    layerList << markerSymbolLayer;
    auto markerSymbol = new QgsMarkerSymbol(layerList);
    singleRenderer->setSymbol(markerSymbol);
    layer->setRenderer(singleRenderer);

在这里插入图片描述
在这里插入图片描述

总结

  • 介绍了如何使用填充标记(Filled Marker)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1151576.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【全志R128外设模块配置】USB外设功能配置

USB 外设功能配置 USB 功能简介 USB 功能模块包括了USB Host&#xff0c;USB Device 和OTG 功能。 USB Host 目前已经支持上的功能有&#xff1a;Mass Storage&#xff0c;UVC。 USB Device 目前已经支持上的功能有&#xff1a;ADB&#xff0c;UAC。 OTG 主要用作Host 与D…

极速指南:在 SpringBoot 中快速集成腾讯云短信功能

前言 今天分享一个SpringBoot集成腾讯云短信的功能&#xff0c;平常除了工作&#xff0c;很多xdm做自己的小项目都可能用到短信&#xff0c;但自己去看文档挺费劲的&#xff0c;我这边就帮你节省时间&#xff0c;直接把步骤给你列出来&#xff0c;照做就行。 实战 1、申请密…

python_PyQt5日周月K线纵向对齐显示_2_显示工具

目录 写在前面&#xff1a; 结果显示&#xff1a; 代码&#xff1a; 计算日数据、周数据&#xff0c;月数据&#xff0c;并返回 生成提示信息数据&#xff0c;同时将日周月合并到一个DataFrame中 返回K线图和成交量柱状图的数据 主界面&#xff0c;显示日周月对齐的K线图…

【思考】为什么要有随机分析,为什么要有频域变换

问&#xff1a;为什么要有随机分析&#xff0c;为什么要有频域变换&#xff1f; 答&#xff1a;因为原有的时域方法很难描述一些信号或噪声。 例如这样一个信号 如果要写出时域公式&#xff0c;简直是太复杂了&#xff0c;怎么描述它呢。一是从0时刻开始指数衰减。二是可以说…

基于SpringBoot的科研工作量管理系统

目录 前言 一、技术栈 二、系统功能介绍 管理员功能介绍 科研项目列表 项目论文信息管理 项目类型管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 四、系统测试 概要 系统测试的特点  系统功能测试 登录功能测试 添加项目类型功能测试 测试结果分…

微信一次性群发1000条消息:高效沟通的秘诀

在当今数字化时代&#xff0c;微信作为一款广受欢迎的社交应用程序&#xff0c;为人们提供了便捷的沟通方式。在微信中&#xff0c;一次性群发1000条消息似乎是一个不可能完成的任务&#xff0c;因为微信自带的群发功能是只能一次性最多群发200人的&#xff0c;那么有没有什么工…

uni-app打包之如何生成自由证书

我是使用Android Studio来直接生成。超级简单 第一步 打开 Android Studio 找到下面图片 第二步 选 Android App Bund 然后Next 第三步 选择创建新的 第四步 填写对应的 信息 密码最好都是一样的 第五步 点击ok 即可创建成功。 uniapp打包时候勾选文件 &#xff08;如果公…

C语言 指针进阶笔记

p和*p: 如图&#xff0c;p是指针&#xff0c;指针存放着地址&#xff0c;打印出来应该是数组的值 *p是指针里里面的元素 #include<stdio.h> int main() {int a1;int b2;int c3;int p[3]{a,b,c};printf("%d",*p); return 0; } 那么现在的打印结果应该为数组的…

线程是如何创建的

线程不是一个完全由内核实现的机制&#xff0c;它是由内核态和用户态合作完成的。pthread_create 不是一个系统调用&#xff0c;是 Glibc 库的一个函数&#xff0c;所以我们还要去 Glibc 里面去找线索。 首先处理的是线程的属性参数。例如前面写程序的时候&#xff0c;我们设置…

一些关于weex编译apk的环境配置记录,成功打包weex app

背景 使用weex编译安卓app。老是会遇到一些配置问题&#xff0c;导致编译apk异常。 最后重新下载Android studio&#xff0c;配置好环境&#xff0c;再使用官网的命令&#xff0c;就编译成功了&#xff0c;下面是记录。 编译成功的环境 Java版本&#xff1a;jdk1.8.0_241 And…

深度学习_2 数据操作

数据操作 机器学习包括的核心组件有&#xff1a; 可以用来学习的数据&#xff08;data&#xff09;&#xff1b;如何转换数据的模型&#xff08;model&#xff09;&#xff1b;一个目标函数&#xff08;objective function&#xff09;&#xff0c;用来量化模型的有效性&…

AB试验(七)利用Python模拟A/B试验

AB试验&#xff08;七&#xff09;利用Python模拟A/B试验 到现在&#xff0c;我相信大家理论已经掌握了&#xff0c;轮子也造好了。但有的人是不是总感觉还差点什么&#xff1f;没错&#xff0c;还缺了实战经验。对于AB实验平台完善的公司 &#xff0c;这个经验不难获得&#…

记录一段帮朋友写的代码,使用牛顿-拉夫逊方法解方程

要求 已知公式&#xff1a; t G A B F r B r 2 2 F A 2 B G A F ln ⁡ ( r − A ) C o n s t t\frac{GAB}{F}r\frac{Br^2}{2F}\frac{A^2BGA}{F}\ln (r-A)Const tFGAB​r2FBr2​FA2BGA​ln(r−A)Const 其中 t 的值为0-1000&#xff0c;每间隔25取一次值A2.12941E-10B0.…

源码!游戏源码!大量游戏源码!!!知识星球

分享 不在游戏公司有段时间了&#xff0c;但是还一直在游戏圈&#xff0c;多年的游戏经验也做了一些总结&#xff0c;还有一些私货源码没有做分享&#xff0c;所以也跟着玩一玩知识星球。 源码来自哪 1、来自网上搜集 各种开源网站&#xff0c;比如github ,gitee平常会注意搜…

Windows内存取证-中等难度 -上篇

涉及的工具&#xff1a; SysInfoTools-ost-viewer-pro volatility_2.6_lin64_standalone VT在线工具 使用到的镜像文件&#xff1a; target1-1dd8701f.vmss target2-6186fe9f.vmss POS-01-c4e8f786.vmss 题干&#xff1a; 一名员工报告说&#xff0c;他的机器在收到一封可…

【深度学习docker】roop-unleashed的docker镜像,deepfake AI换脸

快速启动roop-unleashed 要求有支持CUDA11.8的显卡Linux Docker。 使用docker启动roop-unleashed&#xff1a; docker run -d --gpus all -p 7860:7860 kevinchina/deeplearning:roop-unleashed1访问&#xff1a; 制作工程使用的一些脚本 基础镜像&#xff1a; FROM nvidi…

基于SpringBoot的在线笔记系统

技术介绍 &#x1f525;采用技术&#xff1a;SpringSpringMVCMyBatisJSPMaven &#x1f525;开发语言&#xff1a;Java &#x1f525;JDK版本&#xff1a;JDK1.8 &#x1f525;服务器&#xff1a;tomcat &#x1f525;数据库&#xff1a;mysql &#x1f525;数据库开发工具&…

时间序列预测大模型-TimeGPT

时间序列预测领域正在经历一个非常激动人心的时期。仅在过去的三年里&#xff0c;我们就看到了许多重要的贡献&#xff0c;例如N-BEATS、N-HiTS、PatchTST和TimesNet。 与此同时&#xff0c;大型语言模型 (LLM)最近在 ChatGPT 等应用程序中广受欢迎&#xff0c;因为它们无需进…

LoadRunner实现接口测试

接口测试的原理是通过测试程序模拟浏览器向服务器发送请求报文&#xff0c;服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给浏览器&#xff0c;浏览器接收应答报文这一个过程。 LoadRunner是一种性能测试工具&#xff0c;但是它也可以用来做接口测试。开发人…

kubernetes实验挑战二(troubleshoot pv pvc )

This 2-Node Kubernetes cluster is broken! Troubleshoot, fix the cluster issues and then deploy the objects according to the given architecture diagram to unlock our Image Gallery!! 1、 kubeconfig /root/.kube/config, User ‘kubernetes-admin’ Cluster: S…