8.12 矢量圖層面要素單一符號使用七(隨機標記填充)

文章目錄

  • 前言
  • 隨機標記填充(Random Marker Fill)
    • QGis設置面符號為隨機標記填充(Random Marker Fill)
    • 二次開發代碼實現隨機標記填充(Random Marker Fill)
  • 總結

前言

  • 本章介紹矢量圖層線要素單一符號中使用隨機標記填充(Random Marker Fill)的使用
  • 說明:文章中的示例代碼均來自開源項目qgis_cpp_api_apps

隨機標記填充(Random Marker Fill)

A fill symbol layer which places markers at random locations within polygons.

  • 以protected_areas.shp為例,圖層符號為Simple Fill時顯示效果如下圖
    在這里插入圖片描述

QGis設置面符號為隨機標記填充(Random Marker Fill)

  • Symbol layer type設置為Random Marker Fill,可設置的屬性如下圖
    在這里插入圖片描述- Random Marker Fill需要設置其子符號,子符號類型為Marker
  • 屬性設置完成后,圖層顯示效果如下圖
    在這里插入圖片描述

二次開發代碼實現隨機標記填充(Random Marker Fill)

  • QgsRandomMarkerFillSymbolLayer是Random Marker Fill,詳情見文檔,類圖如下
    在這里插入圖片描述
  • 函數setSubSymbol (QgsSymbol *symbol)可以設置子符號
  • 創建符號層有兩種方法:構造函數和create
  • 方法一
  1. 從圖層獲取渲染器
    //從圖層獲取渲染器QgsFeatureRenderer * layerRenderer= layer->renderer();QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 構造函數:修改屬性可以調用setxxx函數,如下代碼
    int pointCount = 100;auto randomMarkerFillSymbolLayer = new QgsRandomMarkerFillSymbolLayer(100);randomMarkerFillSymbolLayer->setDensityArea(250.0);randomMarkerFillSymbolLayer->setCountMethod(Qgis::PointCountMethod::Absolute);
  1. 創建符號并設置到渲染器
    //多個Symbol Layer構成一個SymbolQgsSymbolLayerList layerList;layerList << randomMarkerFillSymbolLayer;//構造QgsFillSymbol并設置rendererauto fillSymbol = new QgsFillSymbol(layerList);singleSymbolRenderer->setSymbol(fillSymbol);layer->setRenderer(singleSymbolRenderer);
  • 方法二
    方法一中步驟1,3不變,步驟2中使用create()成員函數,顏色方案同樣有兩種選擇
    QVariantMap mp;mp["point_count"] = QStringLiteral("100");mp["density_area"] = QStringLiteral("250.0");mp["count_method"] = QStringLiteral("0");auto randomMarkerFillSymbolLayer = QgsRandomMarkerFillSymbolLayer::create(mp);
  • 完整測試代碼如下
void MainWindow::polygonRandomMarkerSlot()
{//添加一個線圖層QgsVectorLayer* layer = addTestShape(QStringLiteral("maps/shapefile/protected_areas.shp"));//從圖層獲取渲染器QgsFeatureRenderer * layerRenderer= layer->renderer();QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
#if 1int pointCount = 100;auto randomMarkerFillSymbolLayer = new QgsRandomMarkerFillSymbolLayer(100);randomMarkerFillSymbolLayer->setDensityArea(250.0);randomMarkerFillSymbolLayer->setCountMethod(Qgis::PointCountMethod::Absolute);
#elseQVariantMap mp;mp["point_count"] = QStringLiteral("100");mp["density_area"] = QStringLiteral("250.0");mp["count_method"] = QStringLiteral("0");auto randomMarkerFillSymbolLayer = QgsRandomMarkerFillSymbolLayer::create(mp);
#endif//多個Symbol Layer構成一個SymbolQgsSymbolLayerList layerList;layerList << randomMarkerFillSymbolLayer;//構造QgsFillSymbol并設置rendererauto fillSymbol = new QgsFillSymbol(layerList);singleSymbolRenderer->setSymbol(fillSymbol);layer->setRenderer(singleSymbolRenderer);
}
  • 效果如下圖
    在這里插入圖片描述
    在這里插入圖片描述

總結

  • 介紹了矢量圖層面要素單一符號中的隨機標記填充(Random Marker Fill)

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

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

相關文章

分班查詢怎么發布?

在現代教育環境中&#xff0c;傳統的學生分班通知方式可能顯得有些過時和低效。通常&#xff0c;這些方式依賴于紙質通知單&#xff0c;這不僅需要大量的物理資源進行打印和分發&#xff0c;而且容易出錯&#xff0c;如丟失、錯誤分發或延遲。 幸運的是&#xff0c;現在有了更高…

掌握Perl并發:線程與進程編程全攻略

掌握Perl并發&#xff1a;線程與進程編程全攻略 引言 Perl作為一種功能強大的編程語言&#xff0c;提供了豐富的并發編程手段。無論是通過threads模塊實現的線程&#xff0c;還是通過fork系統調用產生的進程&#xff0c;Perl都能幫助開發者高效地處理多任務。本文將深入探討如…

解釋Java的垃圾回收機制以及垃圾回收器的工作原理。

Java的垃圾回收機制&#xff08;Garbage Collection&#xff0c;GC&#xff09;是Java虛擬機&#xff08;JVM&#xff09;的一個重要組成部分&#xff0c;它負責自動管理內存&#xff0c;確保內存泄漏和內存溢出錯誤不會發生。垃圾回收器&#xff08;Garbage Collector&#xf…

心靈館咨詢系統小程序心理咨詢平臺聊天咨詢

心靈館咨詢系統小程序&#xff1a;解鎖你的心靈密碼 &#x1f496; 心靈之旅的導航者 在繁忙的現代生活中&#xff0c;我們時常會面臨各種壓力與困惑。心靈館咨詢系統小程序&#xff0c;如同一位貼心的導航者&#xff0c;引領我們探索內心的世界&#xff0c;尋找真正的自我。 …

shell 腳本的部分指令和操作符

終端輸入兩個數&#xff0c;判斷兩數是否相等&#xff0c;如果不相等&#xff0c;判斷大小關系 2.已知網址www.hqyj.com&#xff0c;使用expr截取出www、hqyj、com&#xff0c;不能使用cut&#xff0c;不能出現數字

JavaWeb系列十九: jQuery的DOM操作 上

查找節點, 修改屬性 查找屬性節點: 查找到所需要的元素之后, 可以調用jQuery對象的attr()方法用來 設置/返回 它的各種屬性值 設置屬性值 $(“img”).attr(“width”, “300”);返回屬性值 $(“img”).attr(“width”); 創建節點 創建節點: 使用jQuery的工廠函數$(): $(html標…

硬核實力再亮,玩出夢想科技發布全球首款安卓系統空間計算機

6月25日&#xff0c;玩出夢想科技在新加坡召開全球新品發布會&#xff0c;正式發布全球首款安卓系統空間計算機——玩出夢想MR&#xff0c;填補了空間計算機在安卓生態的空白。 作為品牌沉淀兩年的破曉之作&#xff0c;玩出夢想MR以業內領先軟硬件配置&#xff0c;強大自研算法…

刪除win10未激活水印

通過終止進程來刪除水印 remove.batecho off taskkill /F /IM explorer.exe explorer.exe exit右鍵管理員執行重啟

解決了!暗影精靈8 Pro酷睿版無聲音,揚聲器和麥克風都沒有聲音!

困擾好幾天的問題解決了&#xff01; 暗影精靈8 Pro酷睿版無聲音&#xff0c;揚聲器和麥克風都沒有聲音&#xff01;&#xff01;方法適用于OMEN by HP Gaming Laptop 16-k0xxx&#xff08;暗影精靈8 Pro酷睿版&#xff09;的Windows 10聲卡驅動&#xff01; 朋友們&#xff…

【應用開發一】LED開發

文章目錄 1應用層控制外設的兩種方式2 sysfs和/sys關系3 LED控制方式3.1 基本情況3.2 LED屬性文件介紹3.3 命令行屬性測試3.4 led程序3.5 開發板上測試 1應用層控制外設的兩種方式 使用設備文件控制 在Linux系統下&#xff0c;一切皆是文件。應用層控制底層硬件同樣也是通過文…

如何在 Linux 上安裝 Docker Desktop

如何在 Linux 上安裝 Docker Desktop Docker 是一個用于開發、部署和運行應用程序的開放平臺。Docker Desktop 是 Docker 在 macOS 和 Windows 上的官方客戶端&#xff0c;現在也支持 Linux 系統。本文將詳細介紹如何在 Linux 上安裝 Docker Desktop。 系統要求 在開始安裝之…

第100+12步 ChatGPT學習:R實現KNN分類

基于R 4.2.2版本演示 一、寫在前面 有不少大佬問做機器學習分類能不能用R語言&#xff0c;不想學Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi轉一下就得了唄。 加上最近也沒啥內容寫了&#xff0c;就幫各位搬運一下吧。 二、R代碼實現KNN分類 &#xff08;1&a…

【Docker】Consul 和API

目錄 一、Consul 1. 拉取鏡像 2. 啟動第一個consul服務&#xff1a;consul1 3. 查看consul service1 的ip地址 4. 啟動第二個consul服務&#xff1a;consul2&#xff0c; 并加入consul1&#xff08;使用join命令&#xff09; 5. 啟動第三個consul服務&#xff1a;consul3&…

攻擊者開始使用 XLL 文件進行攻擊

近期&#xff0c;研究人員發現使用惡意 Microsoft Excel 加載項&#xff08;XLL&#xff09;文件發起攻擊的行動有所增加&#xff0c;這項技術的 MITRE ATT&CK 技術項編號為 T1137.006。 這些加載項都是為了使用戶能夠利用高性能函數&#xff0c;為 Excel 工作表提供 API …

【SQL Server數據庫】關系模式與關系代數

目錄 一、請用關系代數完成下列查詢 1. 求 供應工程J1 零件P1的供應商號碼SNO&#xff1b; 2. 求 供應工程J1 零件&#xff08;P&#xff09;為紅色 的供應商號碼SNO&#xff1b; 3. 求 沒有使用 天津供應商&#xff08;P&#xff09;生產的紅色零件&#xff08;S&#xff0…

【雜記-淺談OSPF協議之RouterDeadInterval死區間隔】

OSPF協議之RouterDeadInterval死區間隔 一、RouterDeadInterval概述二、設置RouterDeadInterval三、RouterDeadInterval的重要性 一、RouterDeadInterval概述 RouterDeadInterval&#xff0c;即路由器死區間隔&#xff0c;它涉及到路由器如何在廣播網絡上發現和維護鄰居關系。…

pycharm中的使用技巧

1、更改主題&#xff1a;找到設置&#xff0c;然后更改主題 點擊選擇自己喜歡的主題&#xff0c;然后就可以更改主題了 2、設置字體的快捷鍵 找到設置&#xff0c;如下&#xff1a; 找到increase&#xff0c;如下&#xff1a; 右鍵選擇&#xff0c;增加字體快捷鍵 按住ctrl滑輪…

Excel 查找后隱去右邊列

Excel 有幾列數字 ABC11002042002202100102326027010841199100512100100 當給定參數時&#xff0c;請從每行找到該參數&#xff0c;隱去右邊的列。如果某行不含該參數&#xff0c;則隱去整行。當參數是 100 時&#xff0c;結果如下&#xff1a; ABC710082021009119910010121…

shell之免交互

免交互 交互&#xff1a;發出指令控制指令的運行&#xff0c;程序再接收到指令的效果做出對應的反應。 免交互&#xff1a;間接的&#xff0c;通過第三方的方式把指令傳送給程序&#xff0c;不用直接的下達指令 Hhere Document 免交互 這是命令行格式&#xff0c;也可以寫在腳本…

QTableWidget的使用

使用QTableWidget&#xff0c;初始化數據、設置列頭及格式&#xff0c;設置行數&#xff0c;設置每個單元格的編輯&#xff0c;間隔行底色變換、行選擇 &#xff0c;模式&#xff0c;單元格選擇模式、插入行 、追加行、刪除行&#xff0c;單元格加圖標&#xff0c;單元格顯示ch…