9.2 栅格图层符号化单波段灰度渲染

文章目录

  • 前言
  • 单波段灰度
    • QGis设置为单波段灰度
    • 二次开发代码实现单波段灰度
  • 总结

前言

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

单波段灰度

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

QGis设置为单波段灰度

  • 在图层属性的“Symbology”选项卡中选择“Render type”为“Singleband gray”,如图所示
    在这里插入图片描述
  • 在“Gray band”中选择需要渲染的波段;在“Color gradient”中选择渐变方向,包括从黑色到白色(Black to white)和从白色到黑色(White to Black)两种方式。
  • 在“Contrast enhancement”中选择对比度增强方法,包括无增强(No enhancement)、拉伸到最小值和最大值之间的范围(Stretch to MinMax)、拉伸并裁剪到最小值和最大值之间的范围(Stretch and clip to MinMax)、裁剪到最小值和最大值之间的范围(Clip to MinMax)。经过裁剪后,超出范围的像元将不显示在地图画布上;反之,则显示为黑色或白色。
  • 在“Min”和“Max”中输入渐变区域的最小值和最大值,或者通过“Min / Max ValueSettings”中的四个选项进行自动设置。
    • User defined:用户自定义最大值和最小值。
    • Cumulative count Cut:按照数值从小到大排列,仅保留一定百分比内的数值,去除可能存在的异常值。
    • Min / max:设置为波段内数值的最小值或最大值。
    • Mean +/- standard deviation:取平均值左右两侧一个标准差范围内的数值,以及μ- σ与μ+σ之间的数值(μ表示平均值,σ表示标准差)。
    • 在“Statistics extent”中选择上述设置的统计范围,包括整个影像(Whole raster)、当前范围(Current canvas)和随范围变化(Updated canvas)。随范围变化指当用户改变地图范围时,栅格数据渲染的最大值和最小值也随之变化。
    • 在“Accuracy”中选择最大值和最小值的计算精度,包括估计(较快)[Estimate (faster)]和精确(较慢)[Actual (slower)]两种。
  • “Layer Rendering”选项区域设置显示效果,包括混合模式(Blending mode)、亮度(Brightness)、对比度(Contrast)、饱和度(Saturation)、灰阶(Grayscale)等。
  • 在“Resampling”选项区域可以设置显示效果的重采样方法,包括上采样(放大地图时插值数据)和下采样(缩小地图时抽取数据)两种。上采样(Zoom in)包括最邻近法(Nearest neighbour)、双线性法(Bilinear)和三次立方法(Cubic);下采样(Zoom out)包括最邻近法(Nearest neighbour)和平均值法(Average)。另外,还可以在“Oversampling”中选择过采样系数(默认为2,使用最邻近法时无效)。通常,默认的最邻近法渲染速度最快,但是使用双线性法(Bilinear)和三次立方法(Cubic)时渲染效果更好。
  • 属性设置完成后,图层渲染效果如下图
    在这里插入图片描述

二次开发代码实现单波段灰度

  • QgsSingleBandGrayRenderer是单波段灰度渲染器,详情见文档,类图如下
    在这里插入图片描述
  • 其构造函数有两个参数:QgsSingleBandGrayRenderer( QgsRasterInterface *input, int grayBand );,分别传入dataProvider和波段序号,代码如下
    const int grayBand = 1;
    QgsSingleBandGrayRenderer *renderer = new QgsSingleBandGrayRenderer( layer->dataProvider(), grayBand );
  • 调用类的成员函数setters,如void setGradient( Gradient gradient )设置参数,代码如下
    renderer->setGradient(QgsSingleBandGrayRenderer::BlackToWhite);//
    QgsContrastEnhancement *ce = new QgsContrastEnhancement( ( Qgis::DataType )(layer->dataProvider()->dataType( grayBand ) ) );
    ce->setContrastEnhancementAlgorithm(QgsContrastEnhancement::StretchToMinimumMaximum);
    ce->setMinimumValue(-1);
    ce->setMaximumValue(2630);
    renderer->setContrastEnhancement(ce);
    QgsRasterMinMaxOrigin mmOrigin = renderer->minMaxOrigin();
    renderer->setMinMaxOrigin(mmOrigin);
    //QgsRasterLayer中有Layer Rendering和Resampling中的相应设置
  • 最后设置图层的渲染器即可
  • 完整测试代码如下
void MainWindow::rasterSinglebandGraySlot()
{
    //添加测试图层
    QgsRasterLayer *layer = addTestRaster("maps/raster/3420C_2010_327_RGB_LATLNG.tif");
    //
    const int grayBand = 1;
    QgsSingleBandGrayRenderer *renderer = new QgsSingleBandGrayRenderer( layer->dataProvider(), grayBand );
    renderer->setGradient(QgsSingleBandGrayRenderer::BlackToWhite);//
    QgsContrastEnhancement *ce = new QgsContrastEnhancement( ( Qgis::DataType )(layer->dataProvider()->dataType( grayBand ) ) );
    ce->setContrastEnhancementAlgorithm(QgsContrastEnhancement::StretchToMinimumMaximum);
    ce->setMinimumValue(-1);
    ce->setMaximumValue(2630);
    renderer->setContrastEnhancement(ce);
    QgsRasterMinMaxOrigin mmOrigin = renderer->minMaxOrigin();
    renderer->setMinMaxOrigin(mmOrigin);
    //QgsRasterLayer中有Layer Rendering和Resampling中的相应设置

    layer->setRenderer(renderer);
}

  • 测试效果如下
    在这里插入图片描述
    在这里插入图片描述

总结

  • 介绍了栅格图层单波段灰度渲染的使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RTK_ROS_导航(2):卫星图查看

目录 1. 基于MapViz的卫星图查看 1. 基于MapViz的卫星图查看 安装 # 源码安装 mkdir -p RTK_VISION/src cd RTK_VISION/src git clone https://github.com/swri-robotics/mapviz.git --branchmelodic-eol sudo apt-get install ros-$ROS_DISTRO-mapviz ros-$ROS_DISTRO-mapviz-…

Idea-单个窗口导入并开启多个module项目

前言 大家是否有过这样的困扰,我们每次打开一个项目就需要单开一个idea窗口,项目少时了还好,一旦涉及多个项目间服务调用,特别是再包括网关、注册中心、前端web服务,需要开启的窗口就会是一大批,每次切换的…

B端全局导航:左侧还是顶部?不是随随便便,有依据在。

一、什么是全局导航 B端系统的全局导航是指在B端系统中的主要导航菜单,它通常位于系统的顶部或左侧,提供了系统中各个模块和功能的入口。全局导航菜单可以帮助用户快速找到和访问系统中的各个功能模块,提高系统的可用性和用户体验。 全局导航…

二叉树树的知识,选择➕编程

在一棵深度为7的完全二叉树中,可能有多少个结点?(1层深度为1,节点个数为1) 对于深度 d的完全二叉树: 完全二叉树中,前 d−1层是满的。 最后一层(第 d 层)可以不满&#x…

【vue3|第16期】初探Vue-Router与现代网页路由

日期:2024年7月6日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083…

前端工程师

15年前,前端主流的框架jquery,那个时候还没有前端工程师,后端开发人员既要写后台业务逻辑,又要写页面设计,还要应付IE不同版本浏览器兼容问题,非常的繁琐、难搞。 现在前端框架很多、很强大,前端开发工程师…

MySQL——第一次作业

部署MySQL 8.0环境 1,删除之前存在的MySQL程序 控制面板删除 2,删除完成后下载MySQL 官网: https://www.mysql.com 在window下下载MSI版本 3,自定义安装 4,配置环境变量 1,系统高级系统设置 2&#xff…

YOLOV8 + PYQT5单目测距—风险类别检测(五)

YOLOV8 PYQT5单目测距 1. 相关配置2. 测距源码3. PYQT环境配置4. 实验结果4.1 界面4.2 界面卡住解决方案 5. 实现效果 1. 相关配置 系统:win 10 YOLO版本:yolov8 拍摄视频设备:安卓手机 电脑显卡:NVIDIA 2080Ti(CPU也…

【Python】 已解决:ValueError: document with multiple roots

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:ValueError: document with multiple roots 一、分析问题背景 在Python编程中,处理XML或HTML文档时,有时会遇到“ValueError: document …

安防监控视频平台LntonAIServer视频智能分析平台行人入侵检测算法

在当今社会,随着科技的迅速发展和安全需求的日益增长,行人入侵检测技术成为了安全防护领域的重要研究方向。LntonAIServer行人入侵检测算法作为该领域的先进技术之一,其性能和应用效果受到了广泛关注。 首先,从技术角度来看&#…

【线程安全】线程互斥的原理

文章目录 Linux线程互斥线程互斥相关概念互斥量mutex引出线程并发问题引出互斥锁、互斥量 互斥量的接口初始化互斥量销毁互斥量互斥量加锁和解锁使用互斥锁抢票 可重入和线程安全概念:常见线程不安全的情况常见线程安全的情况常见不可重入的情况常见可重入情况可重入…

中霖教育怎么样?中级经济师证书领取流程介绍

在成功通过中级经济师考试之后,需要等待约2到3个月的时间,会发布相关领证公告。 在准备材料方面,考生需确保携带以下文件:身份证件、学历证明以及工作年限的证明文件等,前往相应的人事考试局进行资格审核。 资格审核…

探索交通安全新前沿:构建全面精准的交通事故数据集(目标检测)

亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 在21世…

Redis基础教程(十八):Redis管道技术

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

tomcat 安装和优化

tomcatat tomcat和http一样,都是用来处理动态页面的 tomcat也可以作为web服务器,开源的 php.php tomcat.jsp nginx.html tomcat使用java代码写的程序,运行的是java的web服务程序 tomcat的特点和功能: 1、servlet容器&…

【硬核科普】Ubuntu系统详细解析以及与深度学习的关系

文章目录 0. 前言1. Ubuntu的来源1.1 从Linux说起1.2 开源、稳定的Debian1.3 更稳定、友好且开放的Ubuntu 2. Ubuntu与深度学习3. Ubuntu在自动驾驶领域的应用4. 附录:Linux发行版统计 0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理…

白蛇插画:成都亚恒丰创教育科技有限公司

白蛇插画:古韵今风,情深意长 在浩瀚的艺术长河中,插画作为一种独特的艺术形式,以其生动形象的画面、丰富多彩的色彩和深邃悠远的意境,成都亚恒丰创教育科技有限公司深受人们喜爱。而“白蛇插画”,作为融合…

图像识别和目标检测在超市电子秤上的应用

目录 前言深度学习的目标检测图像识别技术视觉秤的优势其他应用场景中的技术应用未来展望 前言 随着科技的不断发展,电子秤在生鲜超市中的应用也在不断升级。传统的电子秤需要打秤人员手动输入秤码,这不仅耗时费力,还需要大量的培训以记住各…

Zabbix 6.0 组件 工作原理和组件

Zabbix组件 C/S架构 服务端:zabbix server(端口10051):zabbix服务端进程,用于接收代理端发来的监控指标数据,配置和管理zabbix应用程序,也是监控系统的告警中心(通过监控项告警触…

将亚马逊甩在身后的Flipkart在印度加速狂奔,Flipkart中国卖家怎么入驻开店?

Flipkart创立于2007年,是印度第一大电商平台,发展势头可谓十分迅猛,在印度就连亚马逊都被它远远地甩在了身后。除了销售图书和电子产品,Flipkart还有一个在线市场,允许第三方卖家入驻销售产品。 将亚马逊甩在身后的Fli…