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

文章目录

  • 前言
  • 单一符号(Single symbol)渲染
    • 图片标记(Raster Image marker)
      • QGis
      • 代码实现
    • 动画标记(Animated marker)
      • QGis
      • 代码实现
  • 总结

前言

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

单一符号(Single symbol)渲染

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

图片标记(Raster Image marker)

use an image (PNG, JPG, BMP …) as marker symbol.
Width and height of the image can be set independently

  • 使用图片作为地图标记,大小可以设置

QGis

  • 将Symbol layer type设置图片标记(Raster Image marker),属性见下图
    在这里插入图片描述
    在这里插入图片描述

代码实现

  • QgsRasterMarkerSymbolLayer类是图片标记层(Raster Image marker layer),类图如下
    在这里插入图片描述
  • 其构造函数如下,构造函数的参数是其对应的参数
QgsRasterMarkerSymbolLayer (const QString &path=QString(), double size=DEFAULT_SVGMARKER_SIZE, double angle=DEFAULT_SVGMARKER_ANGLE, Qgis::ScaleMethod scaleMethod=DEFAULT_SCALE_METHOD)
  • 代码实现设置图层符号步骤如下
  1. 首先从图层获取renderer,并转换为Single Symbol Renderer代码如下
QgsFeatureRenderer * layerRenderer= layer->renderer();
QgsSingleSymbolRenderer *singleRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造Raster标记层(Raster Marker SymbolLayer),代码如下
    //构造Rasger标记层(Raster Marker SymbolLayer)方法一//作为示例,用到了imageFile和size两个参数,其他参数使用类似QString imageFile = QStringLiteral("resources/cock.jpg");auto markerSymbolLayer = new QgsRasterMarkerSymbolLayer(imageFile,8.0);
  1. 构造Marker Symbol,并为renderer设置symbol 代码如下
	//QgsMarkerSymbol构造函数中需要传入QgsSymbolLayerList//多个Symbol Layer构成一个SymbolQgsSymbolLayerList layerList;layerList << markerSymbolLayer;auto markerSymbol = new QgsMarkerSymbol(layerList);singleRenderer->setSymbol(markerSymbol);layer->setRenderer(singleRenderer);

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

动画标记(Animated marker)

Animated marker symbol layer class.
The QgsAnimatedMarkerSymbolLayer class renders frames from an animated raster image source (e.g. an animated GIF) during temporal animations or map exports.

  • 使用gif作为地图标记

QGis

  • 将Symbol layer type设置为动画标记(Animated marker),属性设置见下图
    在这里插入图片描述
    在这里插入图片描述

代码实现

  • QgsAnimatedMarkerSymbolLayer类是动画标记图层(Animated marker layer),类图如下
    在这里插入图片描述
  • 代码实现设置图层符号步骤如下
  1. 首先从图层获取renderer,并转换为Single Symbol Renderer代码如下
QgsFeatureRenderer * layerRenderer= layer->renderer();
QgsSingleSymbolRenderer *singleRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造Animated标记层(Animated Marker SymbolLayer),代码如下
    //构造Animated标记层(Animated Marker SymbolLayer)方法一//作为示例,用到了path和size两个参数,其他参数使用类似QString path = QStringLiteral("resources/fire.gif");auto markerSymbolLayer = new QgsAnimatedMarkerSymbolLayer(path,8.0);
  1. 构造Marker Symbol,并为renderer设置symbol 代码如下
	//QgsMarkerSymbol构造函数中需要传入QgsSymbolLayerList//多个Symbol Layer构成一个SymbolQgsSymbolLayerList layerList;layerList << markerSymbolLayer;auto markerSymbol = new QgsMarkerSymbol(layerList);singleRenderer->setSymbol(markerSymbol);layer->setRenderer(singleRenderer);

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

总结

  • 分别介绍了点图层使用单一符号,设置为图片标记和动画标记的方法

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

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

相关文章

Docker 启动远程服务访问不了

今天一下午在弄这个 1、防火墙是否关了 firewall-cmd --state2、ip转发开没开 sysctl net.ipv4.ip_forward3、service iptables是不是打开并拦截了 4、检查docker启动的端口号是否一致&#xff0c;或者启动时对不对 5、检查docker的服务是否起来了&#xff0c;比如你的端口号…

软考 系统架构设计师系列知识点之设计模式(5)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之设计模式&#xff08;4&#xff09; 所属章节&#xff1a; 老版&#xff08;第一版&#xff09;教材 第7章. 设计模式 第2节. 设计模式实例 3. 行为型模式 行为型模式可以影响一个系统的状态和行为流。通过优化状态…

Go 语言访问 Redis 笔记

文章目录 Mac 下载 RedisMac Redix 数据库打开服务端客户端 导包连接数据库操作字符串操作 Hash设置过期时间队列操作连接池并发操作管道化操作事务操作 Mac 下载 Redis Mac安装Redis&#xff0c;原来就是这么简单 Mac Redix 数据库打开 brew services start redis 服务端 …

SiteGround主机最新购买使用指南及外贸建站教程

SiteGround是一家知名的虚拟主机服务提供商&#xff0c;它在过去几年中在WordPress和WooCommerce建站领域取得了显著的发展和改进。SiteGround致力于为用户提供专门针对WordPress优化的虚拟主机&#xff0c;并将WordPress深度集成到其主机服务中&#xff0c;使外贸建站过程变得…

司徒理财:10.26周四黄金走势分析,黄金操作策略,谨慎追多

黄金走势分析&#xff1a;      黄金依旧是震荡走势不变&#xff0c;昨日给的文章策略可谓神准&#xff01;亚欧盘现价1970提示做多&#xff0c;美盘1987提示做空&#xff0c;一来一回&#xff0c;又是大肉&#xff01;震荡走势&#xff0c;高抛低吸&#xff0c;最忌追涨杀…

gstreamer插件开发-What are states?

## What are states?状态描述元素实例是否初始化、是否准备好传输数据以及当前是否正在处理数据。在GStreamer中定义了四种状态: > - GST_STATE_NULL> - GST_STATE_READY> - GST_STATE_PAUSED> - GST_STATE_PLAYING 从现在开始&#xff0c;它们将被简单地称为“NU…

GPT的前世今生:从gpt1到chatgpt的能力提升

从2017年google brain提出transformer模型&#xff0c;到2018年基于transformer模型open ai推出了gpt1模型以及google推出了bert模型&#xff0c;到2019-2021年open ai陆续推出gpt2和gpt3&#xff0c;再到2022-2023年推出chat-gpt和gpt4&#xff0c;大语言模型已经发展成了一个…

遥感语义分割、变化检测论文小trick合集(持续更新)

目录 &#x1f497;&#x1f497;1.影像融合机制 &#x1f497;&#x1f497;2.上下文聚合模块 &#x1f497;&#x1f497;3.adapter即插即用模块 &#x1f497;&#x1f497;1.影像融合机制 参考【多源特征自适应融合网络的高分遥感影像语义分割】文章中的“多源特征自适应…

【软考】数据库篇:并发控制-数据不一致问题

简介 本文介绍软考数据库篇&#xff0c;关于事务的考核内容。软考在数据库事务篇的考察&#xff0c;几乎都是出选择题类题目&#xff0c;不过在数据库系统工程师的内容里&#xff0c;会在下午提以一个小题出现&#xff0c;可见还是比较重要的知识点。 考纲内容 考核并发控制…

快速排序(c语言代码实现)

交换排序&#xff1a;快速排序&#xff08;不稳定的排序&#xff09; 快速排序&#xff08;Quick Sort&#xff09;是一种常见的排序算法&#xff0c;它采用分治法的思想&#xff0c;对待排序序列进行划分&#xff0c;使得划分出的子序列可以分别进行排序&#xff0c;最终使整…

买卖股票的最佳时机 II

给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。返回 你能获得的 最大 利润 。 示例 1&#…

淘宝商品链接获取淘宝商品评论数据(用 Python实现淘宝商品评论信息抓取)

在网页抓取方面&#xff0c;可以使用 Python、Java 等编程语言编写程序&#xff0c;通过模拟 HTTP 请求&#xff0c;获取淘宝多网站上的商品详情页面评论内容。在数据提取方面&#xff0c;可以使用正则表达式、XPath 等方式从 HTML 代码中提取出有用的信息。值得注意的是&#…

Docker 镜像常用命令总结

目录 1. Docker镜像相关命令(重点掌握) 1.1 docker pull 镜像名称 [:tag] 拉取镜像 1.2 docker search 镜向名称 (查询某个镜像) 1.3 docker images 列出当前主机上所有镜像 1.4 docker rmi 镜像ID 删除镜像 1.5 docker system df 查看所有镜像容器所占空间 2. Docker …

JMeter + Ant + Jenkins持续集成-接口自动化测试

需要安装的工具&#xff1a; jdk1.8jmeter3.2ant1.9jenkins2.1 1、Jdkwin7系统如何安装jdk及环境变量的配置-百度经验 安装包安装设置环境变量验证是否安装正确 Java -version检查&#xff0c;如下就代表安装成功了&#xff0c;环境变量设置就去搜索了&#xff0c;网上很多…

RabbitMQ中方法channel.basicAck的使用说明

方法channel.basicAck的作用 在RabbitMQ中&#xff0c;channel.basicAck方法用于确认已经接收并处理了消息。 方法的参数说明 public void basicAck(long deliveryTag,boolean multiple) 参数&#xff1a; long deliveryTag 消息的唯一标识。每条消息都有自己的ID号&#x…

牛客网刷题-(4)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

prosemirror 学习记录(四)decoration

使用 decorations 使用 props - decorations() 添加 decorations 写一个简单的插件&#xff1a;高亮所有 apple 节点 export const MyHighlightApplesPlugin new Plugin({props: {// view 每次变化都会执行 decorations 方法decorations(state) {let arrs [];state.doc.de…

QT项目如何打包成可执行文件

QT项目打包成可执行文件 一 建立一个文件夹二. 编译2.1 打开QT MSVC编译工具2.2 进入publish文件夹 一 建立一个文件夹 例如&#xff1a;publish 二. 编译 2.1 打开QT MSVC编译工具 2.2 进入publish文件夹 cd 路径 执行命令 windeployqt 项目名 例&#xff1a;windeployq…

C/C++实现的MD5哈希校验

C/C实现的MD5哈希校验 网上找到的不知道哪位博主的代码&#xff0c;搜集使用&#xff0c;侵权删。 #ifndef MD5_H #define MD5_H#ifdef __cplusplus extern "C" { #endiftypedef struct {unsigned int count[2];unsigned int state[4];unsigned char buffer[64]; } …

vue3学习心得

1、组件v-model 与其说 组件v-model&#xff0c;倒不如说&#xff0c;父子组件通讯的双向邦定&#xff0c;我倒喜欢这样子去理解。就好比&#xff0c;我在子组件内有一个input框&#xff0c;然后&#xff0c;这个框的值会跟父组件定的属性一起变化。 <!--子组件 AttCompone…