8.12 矢量图层面要素单一符号使用六(SVG填充)

news2025/1/15 13:02:31

文章目录

  • 前言
  • SVG填充(SVG fill)
    • QGis设置面符号为SVG填充(SVG fill)
    • SVG填充(SVG fill)
  • 总结

前言

  • 本章介绍矢量图层线要素单一符号中使用SVG填充(SVG fill)的使用
  • 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps

SVG填充(SVG fill)

A class for filling symbols with a repeated SVG file.

  • 以protected_areas.shp为例,图层符号为Simple Fill时显示效果如下图
    在这里插入图片描述

QGis设置面符号为SVG填充(SVG fill)

  • Symbol layer type设置为SVG Fill,可设置属性如下图
    在这里插入图片描述
  • 属性设置完成后,图层显示效果如下图
    在这里插入图片描述

SVG填充(SVG fill)

  • QgsSVGFillSymbolLayer是SVG Fill,详情见文档,类图如下
    在这里插入图片描述
  • 创建符号层有两种方法:构造函数和create
  • 方法一
  1. 从图层获取渲染器
    //从图层获取渲染器
    QgsFeatureRenderer * layerRenderer= layer->renderer();
    QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造函数:修改属性可以调用setxxx函数,如下代码
    QString path = QStringLiteral("resources/plane.svg");
    auto svgFillSymbolLayer = new QgsSVGFillSymbolLayer(path);
    svgFillSymbolLayer->setColor(QColor(213,180,60));
    svgFillSymbolLayer->setPatternWidth(20.0);
  1. 创建符号并设置到渲染器
    //多个Symbol Layer构成一个Symbol
    QgsSymbolLayerList layerList;
    layerList << svgFillSymbolLayer;
    //构造QgsFillSymbol并设置renderer
    auto fillSymbol = new QgsFillSymbol(layerList);
    singleSymbolRenderer->setSymbol(fillSymbol);
    layer->setRenderer(singleSymbolRenderer);
  • 方法二
    方法一中步骤1,3不变,步骤2中使用create()成员函数,颜色方案同样有两种选择
    QVariantMap mp;
    mp["svgFile"] = QStringLiteral("resources/eye.png");
    mp["color"] = QStringLiteral("213,180,60");
    mp["width"] = QStringLiteral("20.0");
    auto svgFillSymbolLayer = QgsSVGFillSymbolLayer::create(mp);
  • 完整测试代码如下
void MainWindow::polygonSvgSlot()
{
    //添加一个线图层
    QgsVectorLayer* layer = addTestShape(QStringLiteral("maps/shapefile/protected_areas.shp"));
    //从图层获取渲染器
    QgsFeatureRenderer * layerRenderer= layer->renderer();
    QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
#if 0
    QString path = QStringLiteral("resources/plane.svg");
    auto svgFillSymbolLayer = new QgsSVGFillSymbolLayer(path);
    svgFillSymbolLayer->setColor(QColor(213,180,60));
    svgFillSymbolLayer->setPatternWidth(20.0);
#else
    QVariantMap mp;
    mp["svgFile"] = QStringLiteral("resources/eye.png");
    mp["color"] = QStringLiteral("213,180,60");
    mp["width"] = QStringLiteral("20.0");
    auto svgFillSymbolLayer = QgsSVGFillSymbolLayer::create(mp);
#endif
    //多个Symbol Layer构成一个Symbol
    QgsSymbolLayerList layerList;
    layerList << svgFillSymbolLayer;
    //构造QgsFillSymbol并设置renderer
    auto fillSymbol = new QgsFillSymbol(layerList);
    singleSymbolRenderer->setSymbol(fillSymbol);
    layer->setRenderer(singleSymbolRenderer);
}
  • 效果如下图
    在这里插入图片描述
    在这里插入图片描述

总结

  • 介绍了矢量图层面要素单一符号中的SVG填充(SVG fill)使用

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

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

相关文章

AI大模型之争:通用性与垂直性,哪个更具优势?

文章目录 每日一句正能量前言背景介绍能力分析通用大模型的能力&#xff1a;垂直大模型的能力&#xff1a;差异与互补性分析&#xff1a; 难点探究1. 算力挑战2. 数据挑战3. 算法挑战4. 泛化能力5. 可解释性和透明度6. 伦理和偏见问题7. 成本效益 后记 每日一句正能量 昨天已逝…

DIY灯光特效:霓虹灯动画制作教程

下面我们根据这张霓虹灯案例,教大家如何用智能动物霓虹灯闪烁的效果,大家可以根据思路,实现自己想要的动效效果,一起动手来做吧。 即时设计-可实时协作的专业 UI 设计工具 设置背景 新建画板尺寸为:800PX^600PX,设置背景色#120527。 绘制主题 输入自己喜欢文案,轮廓化,具体…

SaaS产品运营:如何将自助服务加入销售流程中【含案例】

在SaaS产品运营中&#xff0c;将自助服务有效融入销售流程&#xff0c;不仅可以提升用户体验&#xff0c;还能提高销售效率和客户满意度。以下是关于如何将自助服务加入销售流程中的具体建议&#xff1a; 一、明确自助服务的目标和内容 首先&#xff0c;需要明确自助服务的目…

​【VMware】VMware Workstation的安装

目录 &#x1f31e;1. VMware Workstation是什么 &#x1f31e;2. VMware Workstation的安装详情 &#x1f33c;2.1 VMware Workstation的安装 &#x1f33c;2.2 VMware Workstation的无限使用 &#x1f31e;1. VMware Workstation是什么 VMware Workstation是一款由VMwar…

光伏能源圈

2021年&#xff0c;新型电力系统之下&#xff0c;中国已形成了两网五大六小的电力新格局&#xff1a; 两大电网&#xff1a;国家电网、南方电网 五大电力央企&#xff1a;国家能源投资集团、中国华能集团、中国华电集团、中国大唐集团、国家电力投资集团。 六小豪门&#xf…

vue的学习之路(Axios 基本使用)

<script src"js/axios.min.js"></script> 3、在页面中引用 4、发送异步请求 url?xxx rest请求【GET,POST,DELETE,PATCH】 5、准备一个SpringBoot的控制层与axios进行交互 实体类 public class User { private Integer id; private String user…

Ollama在Windows11部署与使用QWen2模型

0&#xff0c;Ollama介绍 Ollama是一个开源项目&#xff0c;旨在让用户能够轻松地在其本地计算机上运行大型语言模型&#xff08;LLM&#xff09;&#xff0c;是一个开源的大型语言模型服务。它支持各种LLM&#xff0c;包括Llama 3、Mistral和Gemma。提供了类似OpenAI的API接口…

Java8使用Stream流实现List列表查询、统计、排序、分组、合并

Java8使用Stream流实现List列表查询、统计、排序以及分组 目录 一、查询方法1.1 forEach1.2 filter(T -> boolean)1.3 filterAny() 和 filterFirst()1.4 map(T -> R) 和 flatMap(T -> Stream)1.5 distinct()1.6 limit(long n) 和 skip(long n) 二、判断方法2.1 anyMa…

OS中断机制-外部中断触发

中断函数都定义在中断向量表中,外部中断通过中断跳转指令触发中断向量表中的中断服务函数,中断指令可以理解为由某个中断寄存器的状态切换触发的汇编指令,这个汇编指令就是中断跳转指令外部中断通过在初始化的时候使能对应的中断服务函数如何判断外部中断被触发的条件根据Da…

【C++进阶之路】C++11——正则表达式

序言 正则表达式&#xff0c;简而言之就是用来匹配指定模式字符串的工具&#xff0c;在计算机的世界中&#xff0c;它发挥着很大的作用&#xff0c;比如编译器的词法分析&#xff0c;注册时验证密码的复杂度&#xff0c;爬虫爬取固定格式的数据时等场景都要用到。那么本篇的目的…

超市库存管理系统

本系统主要利用C#和SQL建立系统,主要实现一下几个功能:登录、商品管理、供应商管理、库存管理、查询统计和系统管理几个模块。 1.数据库设计 总共有6个表,表名取得比较随意,专业人士开发最好用对应的英文。 用户表(sys_user) 用户表有3个字段:分别为用户名(userName…

如何将一个web端程序打包成一个pc端程序(exe文件)?

如何将一个Web端程序打包成一个PC端程序&#xff0c;例如一个可执行的EXE文件&#xff0c;是许多开发者常见的需求。下面将详细解释如何使用Nativefier工具将Web端程序打包成PC端程序的具体步骤。 目录 下载并安装Node.js验证Node.js和npm的安装安装Nativefier使用Nativefier打…

近2年时间,华为手机上的卫星通信功能发展成怎样了?

自从Mate 50 系列支持北斗卫星短报文功能以来&#xff0c;已经过去了近2年的时间&#xff0c;卫星相关的功能也从最开始的摸索、罕见&#xff0c;逐渐变得成熟、在各品牌旗舰机上常见起来。 那么&#xff0c;这近两年的发展&#xff0c;卫星相关的功能都有了怎样的变化呢&…

HarmonyOS NEXT的发布不仅打破了技术垄断,还保护了国人数据安全

吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 01-HarmonyOS NEXT 前几天华为发布了最新的鸿蒙…

P8813 [CSP-J 2022] 乘方

题目&#xff1a; P8813 [CSP-J 2022] 乘方 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 提交记录&#xff1a; 记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 个人主页&#xff1a; xuzb 的个人中心 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) AC代码&…

Calibre - 翻译电子书(Ebook Translator)

本文参考教程 &#xff1a;https://bookfere.com/post/1057.html 使用 Ebook Translator 插件&#xff0c;详见&#xff1a; 官网&#xff1a;https://translator.bookfere.comgithub &#xff1a;https://github.com/bookfere/Ebook-Translator-Calibre-Plugin 一、基本翻译 …

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的数字游戏(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

链在一起Chained Together没中文 超好用的一键汉化工具推荐

《链在一起》一款新的可联机冒险跑酷类游戏&#xff0c;游戏里玩家将与你的同伴被链在一起&#xff0c;然后开始你的旅程&#xff0c;在地狱的深处&#xff0c;任务是通过尽可能高的攀登逃离地狱。 每一次跳跃都需要完美的协调才能攀上平台并逃离灼热&#xff0c;穿越众多世界&…

哈哈,CloudFlare 赛博菩萨威武呀,真是想啥来啥!

就在今天明月发现 CloudFlare 赛博菩萨又免费增加了一个新功能&#xff0c;对于广大原创内容为主的博客站长来说是绝对的利好&#xff0c;那就是专门针对 AI 爬虫的自动阻止机器人抓取您的内容以用于模型训练等人工智能应用程序正式上线了。如下图所示&#xff1a; 只需要在 Cl…

【机器学习】机器学习重要方法——深度学习:理论、算法与实践

文章目录 引言第一章 深度学习的基本概念1.1 什么是深度学习1.2 深度学习的历史发展1.3 深度学习的关键组成部分 第二章 深度学习的核心算法2.1 反向传播算法2.2 卷积神经网络&#xff08;CNN&#xff09;2.3 循环神经网络&#xff08;RNN&#xff09; 第三章 深度学习的应用实…