8.12 矢量图层面要素单一符号使用八(形状炸裂填充)

文章目录

  • 前言
  • 形状炸裂填充(Shapeburst fill)
    • QGis设置面符号为形状炸裂填充(Shapeburst fill)
    • 二次开发代码实现形状炸裂填充(Shapeburst fill)
  • 总结

前言

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

形状炸裂填充(Shapeburst fill)

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

QGis设置面符号为形状炸裂填充(Shapeburst fill)

  • Symbol layer type设置为Shapeburst Fill,可设置的属性如下图
    在这里插入图片描述
  • 符号颜色有两种选择:Two color和Color ramp
  • 设置为Two color后,图层显示效果如下图
    在这里插入图片描述
  • 设置为Color ramp后,图层显示效果如下图
    在这里插入图片描述

二次开发代码实现形状炸裂填充(Shapeburst fill)

  • QgsShapeburstFillSymbolLayer是Shapeburst fill,详情见文档,类图如下
    在这里插入图片描述
  • 符号颜色有两种,函数setColorType设置颜色方案,参数代码如下
enum class GradientColorSource 
{SimpleTwoColor, //!< Simple two color gradientColorRamp, //!< Gradient color ramp
};
  • 代码实现设置图层符号有两种方法:构造函数和静态函数create
  • 方法一
  1. 从图层获取渲染器
    //从图层获取渲染器QgsFeatureRenderer * layerRenderer= layer->renderer();QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造函数:设置颜色方案为SimpleTwoColor或者ColorRamp
    auto shapeburstFillSymbolLayer = new QgsShapeburstFillSymbolLayer();//SimpleTwoColor
//    shapeburstFillSymbolLayer->setColorType(Qgis::GradientColorSource::SimpleTwoColor);
//    shapeburstFillSymbolLayer->setColor(QColor("green"));
//    shapeburstFillSymbolLayer->setColor2(QColor("white"));//Color rampshapeburstFillSymbolLayer->setColorType(Qgis::GradientColorSource::ColorRamp);auto colorRamp = new QgsGradientColorRamp(QColor("green"),QColor("white"));shapeburstFillSymbolLayer->setColorRamp(colorRamp);
  1. 创建符号并设置到渲染器
    //多个Symbol Layer构成一个SymbolQgsSymbolLayerList layerList;layerList << shapeburstFillSymbolLayer;//构造QgsFillSymbol并设置rendererauto fillSymbol = new QgsFillSymbol(layerList);singleSymbolRenderer->setSymbol(fillSymbol);layer->setRenderer(singleSymbolRenderer);
  • 方法二
    方法一中步骤1,3不变,步骤2中使用create()成员函数,颜色方案同样有两种选择
    QVariantMap mp;//SimpleTwoColor
//    mp["color_type"] = QStringLiteral("0");
//    mp["color"] = QStringLiteral("0,235,0");
//    mp["gradient_color2"] = QStringLiteral("255,255,255");//Color rampmp["color_type"] = QStringLiteral("1");mp["color1"] = QStringLiteral("0,235,0");mp["color2"] = QStringLiteral("255,255,255");auto shapeburstFillSymbolLayer = QgsShapeburstFillSymbolLayer ::create(mp);
  • 完整测试代码如下
void MainWindow::polygonShapeburstSlot()
{//添加一个线图层QgsVectorLayer* layer = addTestShape(QStringLiteral("maps/shapefile/protected_areas.shp"));//从图层获取渲染器QgsFeatureRenderer * layerRenderer= layer->renderer();QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
#if 0auto shapeburstFillSymbolLayer = new QgsShapeburstFillSymbolLayer();//SimpleTwoColor
//    shapeburstFillSymbolLayer->setColorType(Qgis::GradientColorSource::SimpleTwoColor);
//    shapeburstFillSymbolLayer->setColor(QColor("green"));
//    shapeburstFillSymbolLayer->setColor2(QColor("white"));//Color rampshapeburstFillSymbolLayer->setColorType(Qgis::GradientColorSource::ColorRamp);auto colorRamp = new QgsGradientColorRamp(QColor("green"),QColor("white"));shapeburstFillSymbolLayer->setColorRamp(colorRamp);
#elseQVariantMap mp;//SimpleTwoColor
//    mp["color_type"] = QStringLiteral("0");
//    mp["color"] = QStringLiteral("0,235,0");
//    mp["gradient_color2"] = QStringLiteral("255,255,255");//Color rampmp["color_type"] = QStringLiteral("1");mp["color1"] = QStringLiteral("0,235,0");mp["color2"] = QStringLiteral("255,255,255");auto shapeburstFillSymbolLayer = QgsShapeburstFillSymbolLayer ::create(mp);
#endif//多个Symbol Layer构成一个SymbolQgsSymbolLayerList layerList;layerList << shapeburstFillSymbolLayer;//构造QgsFillSymbol并设置rendererauto fillSymbol = new QgsFillSymbol(layerList);singleSymbolRenderer->setSymbol(fillSymbol);layer->setRenderer(singleSymbolRenderer);
}
  • 效果如下图
    在这里插入图片描述
    在这里插入图片描述

总结

  • 介绍了矢量图层面要素单一符号中的形状炸裂填充(Shapeburst fill)

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

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

相关文章

观测云产品更新 | Pipelines、智能监控、日志数据访问等

观测云更新 Pipelines 1、Pipelines&#xff1a;支持选择中心 Pipeline 执行脚本。 2、付费计划与账单&#xff1a;新增中心 Pipeline 计费项&#xff0c;统计所有命中中心 Pipeline 处理的原始日志的数据大小。 监控 1、通知对象管理&#xff1a;新增权限控制。配置操作权…

MySQL:某个ip连接mysql失败次数过多,导致ip锁定

1 问题说明 Host is blocked because of many connection errors&#xff1b; unblock with ‘mysqladmin flush-hosts‘ 某个ip连接mysql失败次数过多&#xff0c;然后mysql这边自带的保护机制就将ip进行了封禁。这个时候有两个解决方法 &#xff08;1&#xff09;修改配置…

制造业“智改数转”背景下,产品经理考取NPDP证书的重要性

在“智改数转”&#xff08;智能化改造和数字化转型&#xff09;已成为推动制造业高质量发展的关键路径背景下&#xff0c;作为连接市场需求与产品实现的关键角色&#xff0c;产品经理的角色愈发重要。而考取NPDP&#xff08;新产品开发专业人士认证&#xff09;证书&#xff0…

Python 高级实战:基于自然语言处理的情感分析系统

前言 在大数据和人工智能迅猛发展的今天&#xff0c;自然语言处理&#xff08;NLP&#xff09;作为人工智能的重要分支&#xff0c;已经深入到我们的日常生活和工作中。情感分析作为NLP中的一个重要应用&#xff0c;广泛应用于市场分析、舆情监控和客户反馈等领域。本文将讲述…

【ai】mocap:conda 安装python3.8+ cuda+ pytorch+torchaudio、torchvision

MotionCapubuntu 18.04不知道为啥会依赖于ffmpeg 、xorg 渲染?安装pytorch就是会带上cuda cudnn 啥的pytorch【ai】tx2 nx :安装torch、torchvision for yolov5 这里就发现 pytorch和torchvision有依赖关系的,还涉及到rapidjson所以python的环境隔离很重要。核心库 - cudato…

2024年8月 PMP认证考试 7月9日正式开始报考

尊敬的各位考生&#xff1a; 经PMI和中国国际人才交流基金会研究决定&#xff0c;中国大陆地区2024年第三期PMI认证考试定于8月31日举办。 7月9日正式开始中文报考&#xff0c;在此之前需要完成英文资料注册&#xff0c;如果您想参加8月考试&#xff0c;还有最后10天报名即截止…

5G赋能安防视频监控:EasyCVR视频汇聚融合创新技术,共筑多场景安全防线

随着科技的快速发展&#xff0c;第五代移动通信技术&#xff08;5G&#xff09;已逐渐成为我们生活中的重要组成部分。其中&#xff0c;5G技术以其超高速、低延迟、大连接数的特点&#xff0c;正在深刻改变着我们的生活方式和社会运行模式。安防监控领域作为社会安全的重要组成…

P2P文件传输协议介绍

P2P文件传输协议是一种基于对等网络&#xff08;Peer-to-Peer&#xff0c;简称P2P&#xff09;的文件共享和传输技术。以下是关于P2P文件传输协议的详细介绍&#xff1a; 一、定义与原理 P2P文件传输协议允许网络中的各个节点&#xff08;即计算机或其他设备&#xff09;之间…

STM32G431系列微秒级delay(延时)函数编写

目录 前言&#xff1a; 思考&#xff1a; 代码实现&#xff1a; delay.c: delay.h: 前言&#xff1a; 最近需要用STM32G4系列的单片机做个项目&#xff0c;因为之前一直用的标准库&#xff0c;也是第一次用G4的芯片&#xff0c;所以打算先从简单的做起&#xff0c;比如说把…

深度學習筆記14-CIFAR10彩色圖片識別(Pytorch)

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習紀錄博客&#x1f356; 原作者&#xff1a;K同学啊 | 接輔導、項目定制 一、我的環境 電腦系統&#xff1a;Windows 10 顯卡&#xff1a;NVIDIA GeForce GTX 1060 6GB 語言環境&#xff1a;Python 3.7.0 開發…

ThreadX简介

文章目录 1. 摘要2. ThreadX的特性2.1 免费开源2.2 安全认证级别高2.3 组件完善2.4 实时性高2.5 支持多核2.6 支持应用动态加载2.7 代码符合MISAR规范2.8 文档全面,例程丰富2.9 集成方便3. 移植示例4. 产品应用示例1. 摘要 在嵌入式系统领域,实时性能、系统稳定性以及广泛的…

Camera开发-相机输出常用数据格式

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

【鸿蒙培训】第一天环境安装

目录标题 安装DevEco Studio 【IDE】配置开发环境配置离线SDK创建工程配置离线插件 hvigor配置模拟器模拟器执行代码 安装DevEco Studio 【IDE】 &#xff11;・解压 devecostudio-windows-4.1.3.500.zip。 &#xff12;・执行 deveco-studio-4.1.3.500.exe 安装IDE。 配置开…

29. 深度学习中的损失函数及其数学性质详解

在深度学习中&#xff0c;优化算法的研究对象是损失函数。损失函数的数学性质对最优化求解过程至关重要。本文将详细介绍深度学习中的损失函数应具备的特性&#xff0c;帮助大家在后续的学习中避免概念上的误解。 函数的可微性和可导性 学过高等数学的同学对可微性和可导性已…

void * 返回类型 与 void *arg 参数的区别

void * 返回类型&#xff1a;void * 作为函数的返回类型&#xff0c;表示该函数可以返回任何类型的指针。void * 是一种特殊的指针类型&#xff0c;称为“无类型指针”或“泛型指针”&#xff0c;因为它可以指向任何类型的数据。函数通过返回 void * 类型的指针&#xff0c;提供…

JMeter安装与使用

安装包下载&#xff1a;https://pan.xunlei.com/s/VNigSM9IEjqNBVkw8by6i-LoA1?pwdu6gq# 也可以官网下载&#xff1a; 1.解压安装包 2.打开方式 &#xff08;1&#xff09;bin->ApacheJMeter.jar->打开界面 &#xff08;2&#xff09;如果&#xff08;1&#xff09;打…

ruby面试题

ruby 基础 1、each、map、collect的区别 each: 仅遍历数组&#xff0c;并做相应操作&#xff0c;数组本身不发生改变。 map:遍历数组&#xff0c;并做相应操作后&#xff0c;返回新数组(处理)&#xff0c;原数组不变。 collect: 跟map作用一样。 collect! map!: 多了一个作…

LoadBalance 负载均衡

什么是负载均衡 负载均衡(Load Balance&#xff0c;简称 LB),是⾼并发,⾼可⽤系统必不可少的关键组件. 当服务流量增⼤时,通常会采⽤增加机器的⽅式进⾏扩容,负载均衡就是⽤来在多个机器或者其他资源中,按照⼀定的规则合理分配负载. 负载均衡的⼀些实现 服务多机部署时,开发⼈…

专业软件测试公司分享:安全测评对于软件产品的重要性

在互联网普及的今天&#xff0c;随着各类软件的大规模使用&#xff0c;安全问题也变得愈发突出。因此&#xff0c;对软件进行全面的安全测评&#xff0c;不仅可以有效保障用户的信息安全&#xff0c;还能提升软件产品的信任度和市场竞争力。 安全测评对于软件产品的重要性就如…

LLDB 详解

LLDB 详解 LLDB 详解编译器集成优势LLDB 的主要功能命令格式原始&#xff08;raw&#xff09;命令选项终止符: -- LLDB 中的变量唯一匹配原则helpexpressionprint、call、po控制流程&#xff1a;continue、next、step、finishregister read / writethread backtracethread retu…