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

news2024/11/17 8:21:36

文章目录

  • 前言
  • 形状炸裂填充(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 gradient
  ColorRamp, //!< 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 ramp
    shapeburstFillSymbolLayer->setColorType(Qgis::GradientColorSource::ColorRamp);
    auto colorRamp = new QgsGradientColorRamp(QColor("green"),QColor("white"));
    shapeburstFillSymbolLayer->setColorRamp(colorRamp);
  1. 创建符号并设置到渲染器
    //多个Symbol Layer构成一个Symbol
    QgsSymbolLayerList layerList;
    layerList << shapeburstFillSymbolLayer;
    //构造QgsFillSymbol并设置renderer
    auto 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 ramp
    mp["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 0
    auto shapeburstFillSymbolLayer = new QgsShapeburstFillSymbolLayer();
    //SimpleTwoColor
//    shapeburstFillSymbolLayer->setColorType(Qgis::GradientColorSource::SimpleTwoColor);
//    shapeburstFillSymbolLayer->setColor(QColor("green"));
//    shapeburstFillSymbolLayer->setColor2(QColor("white"));
    //Color ramp
    shapeburstFillSymbolLayer->setColorType(Qgis::GradientColorSource::ColorRamp);
    auto colorRamp = new QgsGradientColorRamp(QColor("green"),QColor("white"));
    shapeburstFillSymbolLayer->setColorRamp(colorRamp);
#else
    QVariantMap mp;
    //SimpleTwoColor
//    mp["color_type"] = QStringLiteral("0");
//    mp["color"] = QStringLiteral("0,235,0");
//    mp["gradient_color2"] = QStringLiteral("255,255,255");
    //Color ramp
    mp["color_type"] = QStringLiteral("1");
    mp["color1"] = QStringLiteral("0,235,0");
    mp["color2"] = QStringLiteral("255,255,255");
    auto shapeburstFillSymbolLayer = QgsShapeburstFillSymbolLayer ::create(mp);
#endif
    //多个Symbol Layer构成一个Symbol
    QgsSymbolLayerList layerList;
    layerList << shapeburstFillSymbolLayer;
    //构造QgsFillSymbol并设置renderer
    auto fillSymbol = new QgsFillSymbol(layerList);
    singleSymbolRenderer->setSymbol(fillSymbol);
    layer->setRenderer(singleSymbolRenderer);
}
  • 效果如下图
    在这里插入图片描述
    在这里插入图片描述

总结

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

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

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

相关文章

四川赤橙宏海商务信息咨询有限公司好不好?

在当今数字化浪潮下&#xff0c;电商行业正以前所未有的速度发展&#xff0c;而抖音作为短视频领域的佼佼者&#xff0c;其电商服务更是成为了众多品牌争相布局的热门领域。四川赤橙宏海商务信息咨询有限公司&#xff0c;正是这样一家专注于抖音电商服务的领军企业&#xff0c;…

跨境电商新趋势:海外盲盒小程序的市场机遇

随着全球经济的深度融合和消费者需求的日益多元化&#xff0c;跨境电商作为一种新型的国际贸易模式&#xff0c;正在以前所未有的速度发展。而在这一浪潮中&#xff0c;海外盲盒小程序凭借其独特的商业模式和强大的市场潜力&#xff0c;正逐渐成为跨境电商领域的新宠。本文将探…

家用洗地机有什么推荐的吗?洗地机性价比高的是哪一款?

洗地机因其强大的性能&#xff0c;给人们带来了舒适的清洁体验&#xff0c;提高了人们日常生活的质量&#xff0c;但市场上的洗地机质量参差不齐&#xff0c;所以洗地机品牌的选择就非常重要。因此&#xff0c;我作为一名专业的测评博主&#xff0c;今天就来向大家推荐几款值得…

以算筑基,以智赋能 | Gooxi受邀出席2024中国智算中心全栈技术大会

6月25日&#xff0c;2024中国智算中心全栈技术大会暨展览会、第5届中国数据中心绿色能源大会暨第10届中国&#xff08;上海&#xff09;国际数据中心产业展览会在上海新国际博览中心隆重召开。Gooxi受邀参与并携最新服务器产品以及解决方案亮相展会&#xff0c;吸引众多行业领袖…

微信小程序毕业设计-校园报修系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

unity VR Interaction Framework 创建新手势

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、新建物体&#xff0c;并添加必要组件二、添加抓取点三、查看手势的可视化样式四、制作新的手势1.点击编辑2.根据需求调节手指关节3.保存手势4. 使用创建的手势5.运行 总结 前言…

如何找到正确的网络钓鱼目标

在深入研究联系人收集之前&#xff0c;我们希望确保对可用的攻击面有一个清晰的了解。我见过许多渗透测试者只获取客户端提供的主域&#xff0c;通过 theHarvester、linkedInt、maltego 等运行它&#xff0c;并将输出称为目标列表。在这样做的过程中&#xff0c;这些渗透测试机…

C语⾔数据类型和变量

C语⾔数据类型和变量 1.数据类型介绍1.1 字符型1.2 整型1.3 浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof操作符1.5.2 数据类型长度1.5.3 sizeof中表达式不计算 2. signed 和 unsigned3. 数据类型的取值范围4. 变量4.1 变量的创建4.2 变量的分类 5. 算术操作符&#…

JOSEF约瑟 JOLP(ROS-2D)型两级跑偏开关 精度高,耐振动

​ 品牌 :JOSEF约瑟 型号名称 :JOLP(ROS-2D)型两级跑偏开关 触点容量 :AC380V 10A 触点数量 :常开:2常闭:2 极限角度 :70 复位方式 :自动 动作力 :3kg 防护等级 :IP66 结构特点 1.通用的安装设计可使跑偏检测装置随意安装在输送机纵梁顶!顶部或底部位置 2.封闭、防腐、坚固的铸…

算力时代,算能(SOPHGO)的算力芯片/智算板卡/服务器选型

数字经济时代&#xff0c;算力成为支撑经济社会发展新的关键生产力&#xff0c;全球主要经济体都在加快推进算力战略布局。随着大模型持续选代&#xff0c;模型能力不断增强&#xff0c;带来算力需求持续增长。算力对数字经济和GDP的提高有显著的带动作用&#xff0c;根据IDC、…

智驾未来,一触即达——探索全新加油App的无限可能

一、引言 随着科技的飞速发展&#xff0c;智能出行已成为现代生活的重要组成部分。为了满足广大驾驶者的需求&#xff0c;我们倾力打造了一款全新的加油App&#xff0c;旨在为您的驾驶旅程提供前所未有的便捷与智能体验。 二、产品概述 我们的加油App不仅是一款导航工具&…

Linux下vi文件的时候替换指定的内容

需要将nginx.conf中的192.168.222.188&#xff0c;替换为178.21.120.225 操作步骤&#xff1a; 1、vi 文件 vi nginx.conf2、输入 :%s/192.168.222.188/178.21.120.225/g3、最后保存 :wq

华为OD机试 - 石头剪刀布游戏(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测…

240620_昇思学习打卡-Day2-FCN图像语义分割

240620_昇思学习打卡-Day2-FCN图像语义分割 FCN图像语义分割 语义分割就是对图像中每个像素点进行分类&#xff0c;输入为图像&#xff0c;输出也是图像&#xff0c;输入输出同尺寸&#xff0c;下图是一些语义分割的示例&#xff1a; 其中Image是训练集的原图&#xff0c;Gro…

IDEA注释快只有一行时不分行的设置

在编写注释时&#xff0c;有时使用注释块来标注一个变量或者一段代码时&#xff0c;为了节约空间&#xff0c;希望只在一行中显示注释快。只需要按照下图将“一行注释不分行”勾选上即可。

一、安装VMware16

本篇来源&#xff1a;山海同行 本篇地址&#xff1a;https://shanhaigo.cn/courseDetail/1805875642621952000 本篇资源&#xff1a;以整理到-山海同行 一、VMware虚拟机下载 1. 官网下载 1. 打开官网 打开VMware官网地址&#xff1a;https://www.vmware.com/ 2. 选择下载产…

算法设计与分析--分布式算法内容整理

Chapter 1 导论分布式系统定义分布式系统 VS 并行处理分布式系统的作用及困难分布式计算的理论复杂性度量标准模型错误的种类 Chapter 2 消息传递系统中的基本算法消息传递系统的形式化模型系统异步系统同步系统异步 VS 同步 复杂性度量消息复杂度时间复杂度伪代码约定 生成树上…

无线领夹麦克风品牌排名,揭秘哪种领夹麦性价比高!

在直播电商和Vlog的热潮推动下&#xff0c;自媒体内容创作迎来了前所未有的繁荣。麦克风行业也因应这一趋势&#xff0c;迎来了快速的增长期。特别是无线领夹麦克风&#xff0c;以其便携性和高效的录音能力&#xff0c;迅速成为视频制作者的新宠。它不仅在直播带货和短视频制作…

用友U8 Cloud smartweb2.showRPCLoadingTip.d XXE漏洞复现

0x01 产品简介 用友U8 Cloud 提供企业级云ERP整体解决方案,全面支持多组织业务协同,实现企业互联网资源连接。 U8 Cloud 亦是亚太地区成长型企业最广泛采用的云解决方案。 0x02 漏洞概述 用友U8 Cloud smartweb2.showRPCLoadingTip.d 接口处存在XML实体,攻击者可通过该漏…

阿里1688商家数据采集软件

大镜山阿里1688商家数据采集一款采集阿里巴巴1688.com商家数据的软件&#xff0c;采集的数据包括店铺名称、联系人姓名、手机号码等。 一、大镜山阿里1688商家数据采集特色 — 大镜山阿里1688商家数据采集一款采集阿里巴巴1688.com商家数据的软件&#xff0c;采集的数据包括店…