9.6 栅格图层符号化唯一值着色渲染

前言

多波段彩色渲染唯一值着色

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

QGis设置为唯一值着色

  • 在图层属性的“Symbology”选项卡中选择“Render type”为“Paletted/Unique values”
    在这里插入图片描述

  • 在“Band”中选择需要渲染的波段;在“Color ramp”中选择配色方案。

  • 单击“Classify”按钮会自动统计栅格波段所有的唯一值,并以配色方案的方式显示在列表中。“Value”列表示所有的渲染值;“Color”列表示渲染颜色;“Label”列表示图例文字。

  • 单击列表右下角的“…”下拉按钮,即可从其他图层或外部读取色彩配置表(Color map):

    • Load Classes from Layer:使用其他图层的色彩配置表。
    • Load Color Map from File…:从文件中加载色彩配置表。
    • Export Color Map to File…:导出色彩配置表到文件。
  • 属性设置完成后,图层渲染效果如下图
    在这里插入图片描述

二次开发代码实现唯一值着色

  • QgsPalettedRasterRenderer是对应的渲染器,详情见文档,类图如下
    在这里插入图片描述
  • 几个静态函数用于分类,代码如下
static QgsPalettedRasterRenderer::ClassData classDataFromFile (const QString &path)
static QgsPalettedRasterRenderer::ClassData classDataFromRaster (QgsRasterInterface *raster, int bandNumber, QgsColorRamp *ramp=nullptr, QgsRasterBlockFeedback *feedback=nullptr)
static QgsPalettedRasterRenderer::ClassData classDataFromString (const QString &string)
static QString classDataToString (const QgsPalettedRasterRenderer::ClassData &classes)
static QgsPalettedRasterRenderer::ClassData colorTableToClassData (const QList< QgsColorRampShader::ColorRampItem > &table)
  • 添加文件with_color_table.tif,调用函数colorTableToClassData,根据文件中包含的colorTable生成分类
const QgsPalettedRasterRenderer::ClassData classes = QgsPalettedRasterRenderer::colorTableToClassData( layer->dataProvider()->colorTable( grayBand ) );
  • 调用构造函数生成渲染器并设置给图层
  • 完整测试代码如下
void MainWindow::rasterPalettedSlot()
{
    //添加测试图层
    QgsRasterLayer *layer = addTestRaster("maps/raster/with_color_table.tif");

    const int grayBand = 1;
    const QgsPalettedRasterRenderer::ClassData classes = QgsPalettedRasterRenderer::colorTableToClassData( layer->dataProvider()->colorTable( grayBand ) );
    auto renderer = new QgsPalettedRasterRenderer( layer->dataProvider(),grayBand,classes );
    layer->setRenderer(renderer);
}
  • 效果如下图
    在这里插入图片描述
    在这里插入图片描述

总结

  • 介绍了栅格图层唯一值着色的用法

相关推荐

  1. ARCGIS PRO SDK 地图单一符号_____线

    2024-07-13 21:48:03       54 阅读
  2. ARCGIS PRO SDK 地图单一符号_____面

    2024-07-13 21:48:03       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 21:48:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 21:48:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 21:48:03       58 阅读
  4. Python语言-面向对象

    2024-07-13 21:48:03       69 阅读

热门阅读

  1. (day11)1614. 括号的最大嵌套深度

    2024-07-13 21:48:03       18 阅读
  2. anaconda常用指令学习

    2024-07-13 21:48:03       18 阅读
  3. paddlenlp cpu windows 下测试gpt

    2024-07-13 21:48:03       20 阅读
  4. 维度评分:Kylin Cube设计中的自定义智能

    2024-07-13 21:48:03       21 阅读
  5. ArcGIS Pro SDK (九)几何 1 空间参考

    2024-07-13 21:48:03       16 阅读
  6. 树和二叉树_4

    2024-07-13 21:48:03       21 阅读
  7. centos7安装mongodb

    2024-07-13 21:48:03       15 阅读