当前位置: 首页 > news >正文

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);
}
  • 效果如下图
    在这里插入图片描述
    在这里插入图片描述

总结

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 网页数据抓取:融合BeautifulSoup和Scrapy的高级爬虫技术
  • Node学习-第六章-express中间件与RESful API接口规范(下)
  • live555 rtsp服务器实战之createNewStreamSource
  • 目标检测--X-anylabeling使用自己的模型自动标注
  • [C++]多态
  • C语言课程回顾:十、C语言之 指针
  • 推荐一款uniapp拖动验证码插件
  • 从LeetCode215看排序算法
  • Nginx集群部署指南:实现高性能和高可用性
  • qt 创建一个可以拖拽的矩形,简单实践
  • 网站架构核心要素
  • [C/C++入门][字符与ASCII码]6、用代码来转换字符与它的ASCII码
  • 【游戏客户端】大话slg玩法架构(三)建筑控件
  • 线性代数|机器学习-P23梯度下降
  • Perl语言之数组
  • 【刷算法】求1+2+3+...+n
  • Android Studio:GIT提交项目到远程仓库
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • IOS评论框不贴底(ios12新bug)
  • Java精华积累:初学者都应该搞懂的问题
  • Python3爬取英雄联盟英雄皮肤大图
  • SegmentFault 2015 Top Rank
  • SpiderData 2019年2月23日 DApp数据排行榜
  • vue:响应原理
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 力扣(LeetCode)357
  • 力扣(LeetCode)965
  • 前端
  • 入口文件开始,分析Vue源码实现
  • 使用agvtool更改app version/build
  • 字符串匹配基础上
  • # 数据结构
  • #define
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (pojstep1.3.1)1017(构造法模拟)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)Java算法:二分查找
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转) Android中ViewStub组件使用
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .Net OpenCVSharp生成灰度图和二值图
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 设计一套高性能的弱事件机制
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .stream().map与.stream().flatMap的使用
  • ::
  • @AliasFor 使用