8.13 矢量图层面要素反转面要素渲染(Inverted polygons Renderer)

news2024/11/27 10:33:12

前言

  • 本章介绍矢量图层面要素反转面要素(Inverted polygons Renderer)的使用
  • 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps

反转面要素(Inverted polygons Renderer)

反转面要素渲染常用于掩膜数据。

  • 反转面要素(Inverted polygons Renderer)是一种渲染方式
    在这里插入图片描述
  • 和单一符号渲染(Single Symbol Renderer)相反, 反转面要素渲染(Inverted polygons Renderer)是用于渲染图层以外区域
  • 以protected_areas.shp为例,图层符号为单一符号渲染,符号类型为简单填充(Simple Fill)时显示效果如下图
    在这里插入图片描述

QGis设置面符号为反转面要素渲染(Inverted polygons Renderer)

  • 渲染器改为Inverted polygons,属性设置如下图
    在这里插入图片描述
  • 显示效果如下图
    在这里插入图片描述

二次开发代码实现反转面要素渲染(Inverted polygons Renderer)

  • 反转面要素渲染器的类是QgsInvertedPolygonRenderer,详见文档,类图如下
    在这里插入图片描述
  • 分别从图层获取反转面和单一符号渲染器,如下代码
    //分别获取反转面和单一符号渲染器
    QgsFeatureRenderer * layerRenderer= layer->renderer();
    QgsInvertedPolygonRenderer *invertedRenderer = QgsInvertedPolygonRenderer::convertFromRenderer(layerRenderer);
    QgsSingleSymbolRenderer * singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer( layerRenderer);
  • 然后创建填充类型符号,代码如下
#if 1
    auto simplefillSymbolLayer = new QgsSimpleFillSymbolLayer();
    simplefillSymbolLayer->setFillColor(QColor("red"));
#else
    QVariantMap mp;
    mp["color"] = QStringLiteral("red");
    auto simplefillSymbolLayer = QgsSimpleFillSymbolLayer::create(mp);
#endif
    QgsSymbolLayerList layerList;
    layerList << simplefillSymbolLayer;
    auto fillSymbol = new QgsFillSymbol(layerList);
  • 单一符号渲染器设置其符号为fillSymbol
  • 反转面渲染器调用其函数setEmbeddedRenderer,代码如下
    //单一符号渲染器设置其符号为fillSymbol
    singleSymbolRenderer->setSymbol(fillSymbol);
    //反转面渲染器调用该函数,将单一符号渲染器作为参数传进去
    invertedRenderer->setEmbeddedRenderer(singleSymbolRenderer);
  • 完整测试代码如下
void MainWindow::polygonInvertedRendererSlot()
{
    //添加一个线图层
    QgsVectorLayer* layer = addTestShape(QStringLiteral("maps/shapefile/protected_areas.shp"));
    //分别获取反转面和单一符号渲染器
    QgsFeatureRenderer * layerRenderer= layer->renderer();
    QgsInvertedPolygonRenderer *invertedRenderer = QgsInvertedPolygonRenderer::convertFromRenderer(layerRenderer);
    QgsSingleSymbolRenderer * singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer( layerRenderer);
    //创建fill类型的符号
#if 1
    auto simplefillSymbolLayer = new QgsSimpleFillSymbolLayer();
    simplefillSymbolLayer->setFillColor(QColor("red"));
#else
    QVariantMap mp;
    mp["color"] = QStringLiteral("red");
    auto simplefillSymbolLayer = QgsSimpleFillSymbolLayer::create(mp);
#endif
    QgsSymbolLayerList layerList;
    layerList << simplefillSymbolLayer;
    auto fillSymbol = new QgsFillSymbol(layerList);
    //单一符号渲染器设置其符号为fillSymbol
    singleSymbolRenderer->setSymbol(fillSymbol);
    //反转面渲染器调用该函数,将单一符号渲染器作为参数传进去
    invertedRenderer->setEmbeddedRenderer(singleSymbolRenderer);
    layer->setRenderer(invertedRenderer);
}
  • 效果如下
    在这里插入图片描述
    在这里插入图片描述

总结

  • 介绍了矢量图层面要素单一符号中的反转面要素渲染(Inverted polygons Renderer)

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

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

相关文章

python库(2):Passlib库

1 Passlib简介 Passlib库就是一个强大的工具&#xff0c;专门用于密码的安全存储和验证。本文将介绍Passlib库的基本概念、功能和使用方法&#xff0c;帮助更好地理解和应用密码安全技术。 Passlib是一个用于密码加密、哈希和验证的Python库&#xff0c;它提供了多种密码哈希…

adb不插usb线通过wifi调试

说起做手机开发也有好多年了&#xff0c;说来惭愧&#xff0c;我最近才知道安卓手机是可以不插数据线进行开发调试的。起因是公司近期采购了一批安卓一卡通设备&#xff0c;需要对其进行定制开发APP,但是由于我插USB调试发现没有反应。通过询问厂家才知道可以通过WIFI进行调试。…

服务器U盘安装Centos 7时提示Warning:/dev/root does not exist

这是没有找到正确的镜像路径导致的&#xff0c;我们可以在命令行输入ls /dev看一下有哪些盘符 像图中红色圈起来的就是我插入U盘的盘符&#xff0c;大家的输几盘可能做了多个逻辑盘&#xff0c;这种情况下就可以先将U盘拔掉再ls /dev看一下和刚才相比少了那两个盘符&#xff0c…

Linux服务器性能参数指标

【摘要】一个基于 Linux 操作系统的服务器运行的同时&#xff0c;会表征出各种各样参数信息&#xff0c;这些蛛丝马迹往往会帮助快速定位跟踪问题。 这里只是一些简单的工具查看系统的相关参数&#xff0c;当然很多工具也是通过分析加工 /proc、/sys 下的数据来工作的&#xff…

源代码防泄漏的制胜法宝——沙箱

沙箱技术作为现代信息安全领域的一种重要手段&#xff0c;其在源代码防泄密方面的应用愈发受到业界的关注。源代码作为企业或组织的核心资产&#xff0c;一旦泄露&#xff0c;不仅可能导致知识产权的流失&#xff0c;还可能对企业运营造成重大影响。因此&#xff0c;利用沙箱技…

云微客短视频矩阵全域营销,更高效的获客引流方式!

在抖音这样一个拥有海量用户和内容的短视频平台上&#xff0c;单一账号往往难以覆盖我们的客户群体&#xff0c;甚至于每天发布四五条视频&#xff0c;所引发的流量也是微乎其微的。在竞争如此激烈的市场环境中&#xff0c;商家企业无不想方设法追求更高效的获客引流方式&#…

MUNIK解读ISO26262--什么是DFA

我们在学习功能安全过程中&#xff0c;经常会听到很多安全分析方法&#xff0c;有我们熟知的FMEA(Failure Modes Effects Analysis)和FTA(Fault Tree Analysis)还有功能安全产品设计中几乎绕不开的FMEDA(Failure Modes Effects and Diagnostic Analysis)&#xff0c;相比于它们…

内存管理(RTOS)

目录 #RTOS内存管理介绍 #堆定义 #栈定义 #RTOS四种堆分配方案 #Heap_1.c #Heap_2.c #Heap_3.c #Heap_4.c #Heap_5.c #stm32cublemx对堆的配置 #配置堆相关函数 #申请内存函数 #钩子函数 前言&#xff1a;本课程参考韦东山老师视频&#xff0c;连接放在最后。 #R…

打包技术 水库生态流量监控调度方法和计算方法

网盘 https://pan.baidu.com/s/1k0sx3rSkoOqQVIS50iwPzA?pwd9vej 一种兼顾蓄水期导流隧洞生态流量泄放和永久堵头完工后隧洞充水排气的方法.pdf 产漂流性卵鱼类自然繁殖的河流生态流量计算方法.pdf 促进鱼类产卵的梯级水库生态调度方法.pdf 反推水库入库流量过程的优化修正方…

从0开始搭建Spring-Cloud微服务项目

文章目录 1. 安装Java开发环境配置环境变量 2. MySQL安装与配置环境变量配置配置MySQLNavicat配置Idea配置 1. 安装Java开发环境 安装Java开发环境主要涉及下载Java开发工具包&#xff08;JDK&#xff09;并配置环境变量&#xff0c;以便在系统中正确运行Java程序。 下载JDK …

APP逆向 day12 JNI开发

一.前言 今天和大家讲讲jni开发&#xff0c;为什么要和大家介绍呢&#xff0c;因为jni开发是安卓开发中经常使用的&#xff0c;其作用就是java调用c代码&#xff0c;或者c调用java代码。一般一些难一点的app都是采用这个方式&#xff0c;采用这个方式的好处就是更难逆向&#…

2024机器遗忘(Machine Unlearning)技术分类-思维导图

1 介绍 机器遗忘&#xff08;Machine Unlearning&#xff09;是指从机器学习模型中安全地移除或"遗忘"特定的数据点或信息。这个概念源于数据隐私保护的需求&#xff0c;尤其是在欧盟通用数据保护条例&#xff08;GDPR&#xff09;等法规中提出的"被遗忘的权利…

6月30日功能测试Day10

3.4.4拼团购测试点 功能位置&#xff1a;营销-----拼团购 后台优惠促销列表管理可以添加拼团&#xff0c;查看拼团活动&#xff0c;启动活动&#xff0c;编辑活动&#xff0c;删除活动。 可以查看拼团活动中已下单的订单以状态 需求分析 功能和添加拼团 商品拼团活动页 3…

【简历】郑州某二本学院:JAVA实习简历指导,基本没有面试机会

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这份简历是一个25届二本同学找JAVA实习的简历&#xff0c;从整体来看&#xff0c;简历版式没有问题&#xff0c;非常清晰。 但是内容特…

【并发编程JUC】AQS详解

定义理解 AQS&#xff0c;全称为AbstractQueuedSynchronizer&#xff0c;是Java并发包&#xff08;java.util.concurrent&#xff09;中的一个框架级别的工具类&#xff0c;用于构建锁和同步器。它是许多同步类的基础&#xff0c;如ReentrantLock、Semaphore、CountDownLatch等…

【网络安全】Host碰撞漏洞原理+工具+脚本

文章目录 漏洞原理虚拟主机配置Host头部字段Host碰撞漏洞漏洞场景工具漏洞原理 Host 碰撞漏洞,也称为主机名冲突漏洞,是一种网络攻击手段。常见危害有:绕过访问控制,通过公网访问一些未经授权的资源等。 虚拟主机配置 在Web服务器(如Nginx或Apache)上,多个网站可以共…

YOLOv8改进 添加CVPR2024 PKINet中注意力机制CAAttention

一、PKINet论文 论文地址:2403.06258 (arxiv.org) 二、CAAttention结构 CAA(Context Anchor Attention)注意力模块是一种用于捕捉长距离上下文信息的并行模块。 在计算机视觉领域中,上下文信息是指与目标物体或任务相关的周围环境和语境信息。上下文信息可以帮助我们更好…

【UE5.1 角色练习】13-枪械射击——拿出与收起武器

目录 效果 步骤 一、安装射击武器 二、拿武器和收武器 效果 步骤 一、安装射击武器 1. 在虚幻商城中将“FPS Weapon Bundle”添加到工程中&#xff0c;由于我们使用的是5.1版本&#xff0c;我们可以先将该资产放入UE4工程中&#xff0c;然后迁移到5.1版本的工程 2. 打开角…

threejs基础入门案例研究——三维立体物体沿指定曲线逐渐增长变长

效果 threejs按照指定曲线效果逐渐增长 全部代码 主要思路是先创建指定曲线路径,并将其分为1000个点,然后按照自定义路线拉伸三维物体,从头遍历点的位置,然后放入物体拉伸路径中,实现缓慢增长效果 全部代码如下: <template><div class="threejs">…

工作助手VB开发笔记(2)

今天继续讲功能 2.功能 2.9开机自启 设置程序随windows系统启动&#xff0c;其实就是就是将程序加载到注册表 Public Sub StartRunRegHKLM()REM HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Microsoft \ Windows \ CurrentVersion \ RunDim strName As String Applicat…