9.6 柵格圖層符號化唯一值著色渲染

文章目錄

  • 前言
  • 多波段彩色渲染唯一值著色
    • QGis設置為唯一值著色
    • 二次開發代碼實現唯一值著色
  • 總結

前言

  • 介紹柵格圖層數據渲染之唯一值著色渲染
  • 說明:文章中的示例代碼均來自開源項目qgis_cpp_api_apps

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

  • 以“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);
}
  • 效果如下圖
    在這里插入圖片描述
    在這里插入圖片描述

總結

  • 介紹了柵格圖層唯一值著色的用法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44727.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44727.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44727.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

硅谷甄選4(項目主體)

1.路由配置 1.1路由組件的雛形 src\views\home\index.vue&#xff08;以home組件為例&#xff09; 安裝插件&#xff1a; 1.2路由配置 1.2.1路由index文件 src\router\index.ts //通過vue-router插件實現模板路由配置 import { createRouter, createWebHashHistory } fro…

B站學習Java路線

Java 基礎 【零基礎 快速學Java】韓順平 零基礎30天學會Java JVM 尚硅谷宋紅康JVM全套教程&#xff08;詳解java虛擬機&#xff09; Java 并發 JUC

react-router實現路由攔截,useLocation,useNavigate鉤子

路由攔截 react-router中沒有直接給出攔截路由的方法&#xff0c;需要手動的去監聽路由的變化來攔截路由 路由攔截的要點&#xff1a; 能夠識別出目標路由和原始路由&#xff08;區分跳轉前和跳轉后&#xff09;能夠在跳轉時&#xff08;跳轉前或者跳轉后&#xff09;執行一些…

Python redis獲取的結果是字節不是字符串

Python redis獲取的結果是字節不是字符串 pool redis.ConnectionPool(hostlocalhost,port6379, passwordREDIS_PWD, decode_responsesTrue)需要指明給結果解碼decode_responsesTrue才能返回字符串

圖論基礎概念(詳細講解)

今天&#xff0c;我們講解一下圖論的概念&#xff0c;首先我們知道圖是一個什么東西。 圖你可以理解成一個網絡系統&#xff0c;兩個節點之間可能會有邊&#xff0c;邊鏈接兩個節點&#xff0c;可能是有向&#xff08;就比如說a只能往b,或者b只能往c)&#xff0c;可能是無向&a…

Vulnhub靶場 | DC系列 - DC1

https://www.vulnhub.com/series/dc,199/ 環境搭建 靶機鏡像下載地址&#xff1a;https://www.vulnhub.com/entry/dc-1,292/&#xff1b;需要將靶機和 kali 攻擊機放在同一個局域網里&#xff1b;本實驗kali 的 IP 地址&#xff1a;192.168.10.146。 滲透測試 1. 信息收集 …

CH16-DOM元素增刪改

CH16-DOM元素增刪改 本章目標 掌握如何使用DOM獲取節點時使用的屬性熟練使用DOM節點進行創建、添加、刪除、替換 一、使用DOM獲取節點時使用的屬性 1.1 首尾子節點 firstChild&#xff1a;獲取當前節點的首個子節點&#xff0c;注意&#xff1a;換行符、空格等也是節點。 …

【逆向】-異或-分組異或2

IDA查看源代碼 src長度32&#xff0c;encrypt函數加密&#xff0c;工4個參數&#xff0c;_FFFC雙擊&#xff0c;可以看到是個長度為7的固定值FnTest! 加密函數將4個參數又重新命名&#xff0c;混淆視聽&#xff0c;但是還是可以看到是嵌套循環&#xff0c;動態調試直接看結果可…

ArcGIS Pro SDK (八)地理數據庫 8 拓撲

ArcGIS Pro SDK &#xff08;八&#xff09;地理數據庫 8 拓撲 文章目錄 ArcGIS Pro SDK &#xff08;八&#xff09;地理數據庫 8 拓撲1 開放拓撲和進程定義2 獲取拓撲規則3 驗證拓撲4 獲取拓撲錯誤5 標記和不標記為錯誤6 探索拓撲圖7 找到最近的元素 環境&#xff1a;Visual …

C++11中重要的新特性之 lambda表達式 Part two

序言 在上一篇文章中&#xff0c;我們主要介紹了 C11 中的新增的關鍵詞&#xff0c;以及 范圍for循環 這類語法糖的使用和背后的邏輯。在這篇文章中我們會繼續介紹一個特別重要的新特性分別是 lambda表達式 。 1. lambda表達式 1.1 lambda的定義 C11 中的 lambda表達式 是一種…

昇思25天學習打卡營第19天 | ResNet50遷移學習再續

訓練模型部分代碼解析 構建Resnet50網絡 兩行初始化代碼 weight_init Normal(mean0, sigma0.02)這行代碼定義了一個初始化器weight_init&#xff0c;它將使用均值為0&#xff0c;標準差為0.02的正態分布來初始化網絡中的權重。這種初始化策略有助于在網絡的初始階段避免梯度…

Java基礎之集合

集合和數組的類比 數組: 長度固定可以存基本數據類型和引用數據類型 集合: 長度可變只能存引用數據類型存儲基本數據類型要把他轉化為對應的包裝類 ArrayList集合 ArrayList成員方法 添加元素 刪除元素 索引刪除 查詢 遍歷數組

day30【LeetCode力扣】18.四數之和

day30【LeetCode力扣】18.四數之和 1.題目描述 給你一個由 n 個整數組成的數組 nums &#xff0c;和一個目標值 target 。請你找出并返回滿足下述全部條件且不重復的四元組 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若兩個四元組元素一一對應&#xff0c;則認為兩個…

Linux: Mysql環境安裝

Mysql環境安裝&#xff08;Centos&#xff09; 前言一、卸載多余環境1.1 卸載mariadb1.2 查看并卸載系統mysql和mariadb安裝包 二、換取mysql官方yum源三、安裝并啟動mysql服務3.1 yum源加載3.2 安裝yum源3.3 安裝mysql服務3.3.1 安裝指令3.3.2 GPG密鑰問題解決方法3.3.3 查看是…

循環結構(一)——for語句【互三互三】

文章目錄 &#x1f341; 引言 &#x1f341; 一、語句格式 &#x1f341; 二、語句執行過程 &#x1f341; 三、語句格式舉例 &#x1f341;四、例題 &#x1f449;【例1】 &#x1f680;示例代碼: &#x1f449;【例2】 【方法1】 &#x1f680;示例代碼: 【方法2】…

【C++ 編程】引用 - 給變量起別名、淺復制

基本語法&#xff1a;數據類型 &別名 原名int a 10; int &b a;引用必須初始化 (? int &b;)&#xff0c;初始化后不可改變 (int c 5; b c&#xff1a;b 沒有變成c的別名&#xff0c;而是 a、b 對應的值變更為了 c 的值)本質是指針常量, 淺復制 【黑馬程序員匠…

Cartographer重入門到精通(二):運行作者demo及自己的數據集

在demo數據包上運行cartographer 現在Cartographer和Cartographer的Ros包已經都安裝好了&#xff0c;你可以下載官方的數據集到指定的目錄&#xff08;比如在Deutsches Museum用背包采集的2D和3D 數據&#xff09;&#xff0c;然后使用roslauch來啟動demo。 注&#xff1a;la…

IO半虛擬化-Virtio學習筆記

參考&#xff1a;《深入淺出DPDK》及大佬們的各種博客 Virtio簡介&運行環境 Virtio 是一種用于虛擬化環境中的半虛擬化 I/O 框架&#xff0c;目的是在虛擬機和主機之間提供一種高效的 I/O 機制。關于什么是半虛擬化和全虛擬化&#xff1a;見SR-IOV學習筆記。 YES&#xf…

PDMS二次開發(二十二)——關于1.0.3.1版本升級內容的說明

目錄 1.更新內容介紹2.效果演示3.關于重構自動添加焊口功能的說明3.1錯誤示例 3.問題交流1.創建焊口提示失敗2.程序崩潰 1.更新內容介紹 在添加焊口之前先清除當前branch已有焊口&#xff1b;顯示清除焊口的個數和添加焊口的個數&#xff1b;重構了自動添加焊口功能&#xff0…

值得關注的數據資產入表

不錯的講解視頻&#xff0c;來自&#xff1a;第122期-杜海博士-《數據資源入表及數據資產化》-大數據百家講壇-廈門大學數據庫實驗室主辦第122期-杜海博士-《數據資源入表及數據資產化》-大數據百家講壇-廈門大學數據庫實驗室主辦-20240708_嗶哩嗶哩_bilibili