9.5 栅格图层符号化多波段彩色渲染

文章目录

  • 前言
  • 多波段彩色渲染
    • QGis设置为多波段彩色
    • 二次开发代码实现多波段彩色
  • 总结

前言

  • 介绍栅格图层数据渲染之多波段彩色渲染
  • 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps

多波段彩色渲染

  • 以“3420C_2010_327_RGB_LATLNG.tif”数据为例,在QGis中加载默认显示为多波段彩色如下图
    在这里插入图片描述

QGis设置为多波段彩色

  • 在图层属性的“Symbology”选项卡中选择“Render type”为“Multiband color”
  • 在“Red band”、“Green band”、“Blue band”中分别选择红、绿、蓝的波段及其最小值和最大值范围(也可以通过“Min / Max Value Settings”选项进行设置)
  • 在“Contrast enhancement”中选择对比度增强模式。
    在这里插入图片描述
  • 属性设置完成后,图层渲染效果如下图
    在这里插入图片描述

二次开发代码实现多波段彩色

  • QgsMultiBandColorRenderer是多波段彩色渲染器,详情见文档,类图如下
    在这里插入图片描述
  • 构造函数参数传入dataProvider,红绿蓝三个波段的序号以及红绿蓝的增减对比度类
    QgsMultiBandColorRenderer( QgsRasterInterface *input, int redBand, int greenBand, int blueBand,QgsContrastEnhancement *redEnhancement = nullptr, QgsContrastEnhancement *greenEnhancement = nullptr,QgsContrastEnhancement *blueEnhancement = nullptr );
  • 完整测试代码如下
void MainWindow::rasterMultibandSlot()
{//添加测试图层QgsRasterLayer *layer = addTestRaster("maps/raster/3420C_2010_327_RGB_LATLNG.tif");double minValue = 0;double maxValue = 0;minMaxValuesForBand( 1, layer->dataProvider(), minValue, maxValue );QgsContrastEnhancement *rce = new QgsContrastEnhancement( ( Qgis::DataType )(layer->dataProvider()->dataType( 1 ) ) );rce->setContrastEnhancementAlgorithm(QgsContrastEnhancement::StretchToMinimumMaximum);rce->setMinimumValue(minValue);rce->setMaximumValue(maxValue);minMaxValuesForBand( 2, layer->dataProvider(), minValue, maxValue );QgsContrastEnhancement *gce = new QgsContrastEnhancement( ( Qgis::DataType )(layer->dataProvider()->dataType( 2 ) ) );gce->setContrastEnhancementAlgorithm(QgsContrastEnhancement::StretchToMinimumMaximum);gce->setMinimumValue(minValue);gce->setMaximumValue(maxValue);minMaxValuesForBand( 3, layer->dataProvider(), minValue, maxValue );QgsContrastEnhancement *bce = new QgsContrastEnhancement( ( Qgis::DataType )(layer->dataProvider()->dataType( 3 ) ) );bce->setContrastEnhancementAlgorithm(QgsContrastEnhancement::StretchToMinimumMaximum);bce->setMinimumValue(minValue);bce->setMaximumValue(maxValue);QgsMultiBandColorRenderer *renderer = new QgsMultiBandColorRenderer(layer->dataProvider(),1,2,3,rce,gce,bce);//设置layer的属性layer->setBlendMode(QPainter::CompositionMode_SourceOver);layer->setRenderer(renderer);
}
  • 效果如下图
    在这里插入图片描述
    在这里插入图片描述

总结

  • 介绍了栅格图层多波段彩色渲染的用法

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

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

相关文章

常见条件控制算法流程图

内容讲解:流程控制[if…else…(if…elif…else…),while,for] 常见条件控制算法流程图高清图

新手教学系列——高效管理MongoDB数据:批量插入与更新的实战技巧

前言 在日常开发中,MongoDB作为一种灵活高效的NoSQL数据库,深受开发者喜爱。然而,如何高效地进行数据的批量插入和更新,却常常让人头疼。今天,我们将一起探讨如何使用MongoDB的bulk_write方法,简化我们的数据管理流程,让代码更加简洁高效。 常规做法:find、insertone…

【Linux】常见指令收官权限理解

tar指令 上一篇博客已经介绍了zip/unzip指令,接下来我们来看一下另一个关于压缩和解压的指令:tar指令tar指令:打包/解包,不打开它,直接看内容 关于tar的指令有太多了: tar [-cxtzjvf] 文件与目录 ...…

C++运行时类型识别

目录 C运行时类型识别A.What(什么是运行时类型识别RTTI)B.Why(为什么需要RTTI)C.dynamic_cast运算符Why(dynamic_cast运算符的作用)How(如何使用dynamic_cast运算符) D.typeid运算符…

各地户外分散视频监控点位,如何实现远程集中实时监看?

公司业务涉及视频监控项目承包搭建,此前某个项目需求是为某林业公司提供视频监控解决方案,需要实现各地视频摄像头的集中实时监看,以防止国家储备林的盗砍、盗伐行为。 公司原计划采用运营商专线连接各个视频监控点位,实现远程视…

跟着李沐学AI:线性回归

引入 买房出价需要对房价进行预测。 假设1:影响房价的关键因素是卧室个数、卫生间个数和居住面积,记为x1、x2、x3。 假设2:成交价是关键因素的加权和 。权重和偏差的实际值在后面决定。 拓展至一般线性模型: 给定n维输入&…

MySQL 9.0 正式发行Innovation创新版已支持向量

从 MySQL 8.1 开始,官方启用了新的版本模型:MySQL 创新版 (Innovation) 和长期支持版 (LTS)。 根据介绍,两者的质量都已达到可用于生产环境级别。区别在于: 如果希望尝试最新的功能和改进,并喜欢与最新技术保持同步&am…

怎样在 C 语言中实现栈?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会! 📙C 语言百万年薪修炼课程 通俗易懂,深入浅出,匠心打磨,死磕细节,6年迭代,看过的人都说好。 文章目…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-55循环神经网络的从零开始实现和简洁实现

55循环神经网络的实现 1.从零开始实现 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l import matplotlib.pyplot as plt import liliPytorch as lp# 读取H.G.Wells的时光机器数据集 batch_size, num_ste…

ElasticSearch第一天

学习目标: 能够理解ElasticSearch的作用能够安装ElasticSearch服务能够理解ElasticSearch的相关概念能够使用Postman发送Restful请求操作ElasticSearch能够理解分词器的作用能够使用ElasticSearch集成IK分词器能够完成es集群搭建 第一章 ElasticSearch简介 1.1 什么…

只会vue的前端开发工程师是不是不能活了?最近被一个flutter叼了

**Vue与Flutter:前端开发的新篇章** 在前端开发的世界里,Vue.js和Flutter无疑是两颗璀璨的明星。Vue以其轻量级、易上手的特点吸引了大量前端开发者的青睐,而Flutter则以其跨平台、高性能的优势迅速崛起。那么,对于只会Vue的前端…

【深度学习基础】环境搭建 linux系统下安装pytorch

目录 一、anaconda 安装二、创建pytorch1. 创建pytorch环境:2. 激活环境3. 下载安装pytorch包4. 检查是否安装成功 一、anaconda 安装 具体的安装说明可以参考我的另外一篇文章【环境搭建】Linux报错bash: conda: command not found… 二、创建pytorch 1. 创建py…

OceanBase:引领下一代分布式数据库技术的前沿

OceanBase的基本概念 定义和特点 OceanBase是一款由蚂蚁金服开发的分布式关系数据库系统,旨在提供高性能、高可用性和强一致性的数据库服务。它结合了关系数据库和分布式系统的优势,适用于大规模数据处理和高并发业务场景。其核心特点包括: …

python调用阿里云汇率接口

整体请求流程 介绍: 本次解析通过阿里云云市场的云服务来实现程序中对货币汇率实时监控,首先需要准备选择一家可以提供汇率查询的商品。 https://market.aliyun.com/apimarket/detail/cmapi00065831#skuyuncode5983100001 步骤1: 选择商品 如图点击…

debian 12 Install

debian 前言 Debian是一个基于Linux内核的自由和开放源代码操作系统,由全球志愿者组成的Debian项目维护和开发。该项目始于1993年,由Ian Murdock发起,旨在创建一个完整的、基于Linux的自由软件操作系统。 debian download debian 百度网盘…

分布式应用系统设计:即时消息系统

即时消息(IM)系统,涉及:站内消息系统 组件如下; 客户端: WEB页面,IM桌面客户端。通过WebSocket 跟ChatService后端服务连接 Chat Service: 提供WebSocket接口,并保持跟“客户端”状态的维护。…

会声会影分割音频怎么不能用 会声会影分割音频方法 会声会影视频制作教程 会声会影下载免费中文版2023

将素材中的音频分割出来,对声音部分进行单独编辑,是剪辑过程中的常用操作。会声会影视频剪辑软件在分割音频后,还可以对声音素材进行混音编辑、音频调节、添加音频滤镜等操作。有关会声会影分割音频怎么不能用,会声会影分割音频方…

如何快速制作您的数据可视化大屏?

数据大屏可视化主要就是借助图形,利用生动、直观的形式展示出数据信息的具体数值,使得使用者短时间内更加直观的接受到大量信息。数据大屏以直观、高度视觉冲击力的方式向受众揭示数据背后隐藏的规律,传达数据价值。其以图形化的形式呈现数据…

全国产T3+FPGA的SPI与I2C通信方案分享

近年来,随着中国新基建、中国制造2025规划的持续推进,单ARM处理器越来越难胜任工业现场的功能要求,特别是如今能源电力、工业控制、智慧医疗等行业,往往更需要ARM FPGA架构的处理器平台来实现例如多路/高速AD采集、多路网口、多路…

Tomcat多实例

一、Tomcat多实例 Tomcat多实例是指在同一台服务器上运行多个独立的tomcat实例,每个tomcat实例都具有独立的配置文件、日志文件、应用程序和端口,通过配置不同的端口和文件目录,可以实现同时运行多个独立的Tomcat服务器,每个服务…