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);
}
- 效果如下图


总结
- 介绍了栅格图层多波段彩色渲染的用法
相关文章:
9.5 栅格图层符号化多波段彩色渲染
文章目录 前言多波段彩色渲染QGis设置为多波段彩色二次开发代码实现多波段彩色 总结 前言 介绍栅格图层数据渲染之多波段彩色渲染说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps 多波段彩色渲染 以“3420C_2010_327_RGB_LATLNG.tif”数据为例,…...
力扣第九题
回文数 提示: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 代码展示&#…...
鞭炮插画:成都亚恒丰创教育科技有限公司
鞭炮插画:年味里的绚烂记忆 在岁末年初的温柔时光里,总有一抹色彩,能瞬间唤醒沉睡的年味——那便是鞭炮插画中跃动的红与金,成都亚恒丰创教育科技有限公司 它们不仅仅是纸与墨的交织,更是情感与记忆的桥梁,…...
python 循环
循环 while语句 for语句 循环控制语句 break 立即退出循环。 continue 跳过当前循环的剩余部分,并开始下一次迭代。 else for 和 while 循环都可以有一个可选的 else 子句,当循环正常结束时执行。 嵌套 占位符pass pass 是一个空操作语句。当你需要在代…...
映美精黑白相机IFrameQueueBuffer转halcon的HObject
映美精黑白相机,用wpfhalcon开发取图 1.到官网下载,开发包 1sdk 2c开发例子 3c#开发例子 引入TIS.Imaging.ICImagingControl35.dll 3.ICImagingControl使用这个类控制相机 /// <summary> /// 相机控制 /// </summary> public ICImagingC…...
Linux的load(负载)
负载(load)是Linux机器的一个重要指标,直观了反应了机器当前的状态。 在Linux系统中,系统负载是对当前CPU工作量的度量,被定义为特定时间间隔内运行队列中的平均线程数。 Linux的负载高,主要是由于CPU使用、内存使用、10消…...
杜比全景声——空间音频技术
什么是杜比?是否是标清、高清、超清之上的更清晰的格式?杜比全景声 和传统多声道立体声的差别?杜比全景声音频的渲染方式?车载平台上杜比技术的应用? 杜比技术的起源 杜比实验室(Dolby Laboratories&…...
C 语言指针进阶
1.0 指针的定义 指针是内存中一个最小单元的编号(内存单元的编号称之为地址【地址就是指针指针就是地址】)指针通常是用来存放内存地址的一个变量。本质上指针就是地址:口语上说的指针起始是指针变量,指针变量就是一个变量&#…...
SpringBootWeb 篇-入门了解 Swagger 的具体使用
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Swagger 介绍 1.1 Swagger 和 Yapi 的使用场景 2.0 Swagger 的使用方式 2.1 导入 knife4j 的 maven 坐标 2.2 在配置类中加入 knife4j 相关配置 2.3 设置静态资源…...
Python面试题:如何在 Python 中处理大数据集?
在 Python 中处理大数据集可能面临许多挑战,包括内存限制、计算性能和数据处理效率等。以下是一些处理大数据集的常见方法和技术: 1. 使用高效的数据处理库 1.1 Pandas Pandas 是一个强大的数据分析库,可以处理中等大小的数据集࿰…...
C++:入门基础
1.命名空间 1.1namespace的价值 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称都将存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,避免命名冲突或者名字…...
微信小游戏 彩色试管 倒水游戏 逻辑 (二)
最近开始研究微信小游戏,有兴趣的 可以关注一下 公众号, 记录一些心路历程和源代码。 定义一个 Water class 1. **定义接口和枚举**: - WaterInfo 接口定义了水的颜色、高度等信息。 - PourAction 枚举定义了水的倒动状态,…...
【链表】算法题(一) ---- 力扣 / 牛客
一、移除链表元素 移除链表中值为val的元素,并返回新的头节点 思路: 题目上这样说,我们就可以创建一个新的链表,将值不为val的节点,尾插到新的链表当中,最后返回新链表的头节点。 typedef struct ListNo…...
Linux系统之部署盖楼小游戏
Linux系统之部署盖楼小游戏 一、小游戏介绍1.1 小游戏简介1.2 小游戏玩法基本介绍1.3 项目预览二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍2.3 版本要求三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本四、安装node.js4.1 安装nvm4.2 查看nvm版本4.3 安装…...
“金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)
题目 思路来源 官方题解 题解 手玩发现,能换的话,当且仅当.和1在一个环里,而这就是点双连通分量 所以最优策略是先把.换到(x,y)的位置,然后判断.和1在不在一个环里 也就是: 1. 判断删掉1时,.和(x,y)联…...
【机器翻译】基于术语词典干预的机器翻译挑战赛
文章目录 一、赛题链接二、安装库1.spacy2.torch_text 三、数据预处理赛题数据类定义 TranslationDataset批量处理函数 collate_fn 四、编码器和解码器Encoder 类Decoder 类Seq2Seq 类注意事项 五、主函数1. load_terminology_dictionary(dict_file)2. train(model, iterator, …...
推荐系统:从协同过滤到深度学习
目录 一、协同过滤(Collaborative Filtering, CF)1. 基于用户的协同过滤2. 基于物品的协同过滤 二、深度学习在推荐系统中的应用1. 深度学习模型的优势2. 深度学习在推荐系统中的应用实例 三、总结与展望 推荐系统是现代信息处理和传播中不可或缺的技术&…...
记录些Spring+题集(1)
接口防刷机制 接口被刷指的是同一接口被频繁调用,可能是由于以下原因导致: 恶意攻击:攻击者利用自动化脚本或工具对接口进行大量请求,以消耗系统资源、拖慢系统响应速度或达到其他恶意目的。误操作或程序错误:某些情…...
SpringBoot 解决 getSession().getAttribute() 在负载均衡环境下无法获取session的问题
在Spring Boot中,使用getSession().getAttribute()方法时遇到在负载均衡环境下无法正确获取session属性的问题,通常是由于session属性存储在单个服务器的内存中,而负载均衡会导致用户的请求被分配到不同的服务器上,因此无法找到在…...
Jmeter常用组件及执行顺序
一 常用组件 1.线程组 Thread Group 线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。 在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等…...
SOONet模型Git版本管理与协作开发实践指南
SOONet模型Git版本管理与协作开发实践指南 如果你正在和团队一起开发基于SOONet的项目,是不是经常遇到这些问题:谁改了哪个配置文件?为什么我本地跑得好好的,合并到主分支就出错了?新功能开发到一半,线上突…...
Block Diffusion【202503】:在自回归与扩散语言模型之间插值【Interpolating Between Autoregressive and Diffusion LM】
块扩散:在自回归与扩散语言模型之间插值 Marianne Arriola† ∗ Aaron Kerem Gokaslan† Justin T. Chiu‡ Zhihan Yang† Zhixuan Qi† Jiaqi Han Subham Sekhar Sahoo† Volodymyr Kuleshov† 摘要 扩散语言模型因其并行生成和可控性的潜力,相比自回归模型具有独特…...
MATLAB代码:基于主从博弈的电热综合能源系统DE算法优化动态定价与能量管理
MATLAB代码:基于主从博弈的电热综合能源系统动态定价与能量管理 关键词:主从博弈 电热综合能源 动态定价 能量管理 仿真平台:MATLAB 平台 优势:代码具有一定的深度和创新性,注释清晰,非烂大街的代码&…...
MaxKB源码部署实战:当Docker遇上Poetry,如何优雅解决PostgreSQL pgvector依赖和路径硬编码问题?
MaxKB源码部署实战:当Docker遇上Poetry,如何优雅解决PostgreSQL pgvector依赖和路径硬编码问题? 在开源项目部署过程中,技术选型与工具链的碰撞往往会催生一系列意料之外的问题。最近在Docker环境中部署MaxKB知识库系统时…...
OpenClaw+Phi-3-vision-128k-instruct低成本方案:自建多模态助手避坑指南
OpenClawPhi-3-vision-128k-instruct低成本方案:自建多模态助手避坑指南 1. 为什么选择本地部署多模态助手 去年我尝试用商业API搭建个人知识管理助手时,发现两个痛点:一是处理PDF和图片的token消耗像流水一样快,二是长文档分析…...
QuaggaJS摄像头安全最佳实践:保护用户隐私的完整指南
QuaggaJS摄像头安全最佳实践:保护用户隐私的完整指南 【免费下载链接】quaggaJS An advanced barcode-scanner written in JavaScript 项目地址: https://gitcode.com/gh_mirrors/qu/quaggaJS QuaggaJS作为一款基于JavaScript的高级条形码扫描库,…...
(97页PPT)DG华为流程管理全景从定位到优化的高效增长策略(附下载方式)
篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/AI_data_cloud/89624196 资料解读:《(97页PPT)DG华为流程管理全景从定位到优化的高效增长策略》 详细资料请看本解读文章…...
AI辅助地图开发:用自然语言告诉快马你想要什么样的智能地图应用
AI辅助地图开发:用自然语言告诉快马你想要什么样的智能地图应用 最近在做一个旅游推荐项目,需要展示杭州的几个著名景点在地图上的分布。传统做法可能需要手动查找每个地点的经纬度坐标,然后编写大量代码来添加标记点和实现筛选功能。但在In…...
颠覆式配置革命:OpCore-Simplify让黑苹果爱好者效率提升83%的智能工具
颠覆式配置革命:OpCore-Simplify让黑苹果爱好者效率提升83%的智能工具 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你在凌晨三点对着…...
SenseVoice-small轻量优势:模型加载时间<2秒,首字响应<800ms
SenseVoice-small轻量优势:模型加载时间<2秒,首字响应<800ms 1. 引言:当语音识别遇上“秒开”体验 想象一下这个场景:你正在一个网络信号极差的山区,或者在一台没有独立显卡的旧电脑上&#x…...
