8.11 矢量圖層線要素單一符號使用二

文章目錄

  • 前言
  • 箭頭(Arrow)
    • QGis設置線符號為箭頭(Arrow)
    • 二次開發代碼實現
  • 總結

前言

  • 本章介紹矢量圖層線要素單一符號中箭頭(Arrow)的使用
  • 說明:文章中的示例代碼均來自開源項目qgis_cpp_api_apps

箭頭(Arrow)

  • 以river.shp圖層為例,在QGis中添加river圖層,默認使用的符號是簡單線,如下圖所示
    在這里插入圖片描述

QGis設置線符號為箭頭(Arrow)

  • Symbol layer type選擇箭頭(Arrow),可以設置箭頭的屬性,如下圖所示
    在這里插入圖片描述
  • 箭頭(Arrow)圖層可以設置子符號為填充類型符號,填充類型符號進一步設置其符號圖層的屬性,如下圖
    在這里插入圖片描述
  • 設置完成后效果如下圖
    在這里插入圖片描述

二次開發代碼實現

  • QgsArrowSymbolLayer代表箭頭圖層(Arrow layer),詳情見文檔,類圖如下
    在這里插入圖片描述
  • QgsArrowSymbolLayer還可以設置子符號setSubSymbol (QgsSymbol *symbol),調用該函數可以設置填充類型符號
  • QgsArrowSymbolLayer構造函數中默認創建了填充類型的符號,代碼如下
QgsArrowSymbolLayer::QgsArrowSymbolLayer()
{/* default values */setOffset( 0.0 );setOffsetUnit( QgsUnitTypes::RenderMillimeters );mSymbol.reset( static_cast<QgsFillSymbol *>( QgsFillSymbol::createSimple( QVariantMap() ) ) );
}
  • 代碼實現設置圖層符號有兩種方法:構造函數和靜態函數create
  • 方法一:構造函數
  1. 從圖層獲取渲染器
    //從圖層獲取渲染器QgsFeatureRenderer * layerRenderer= layer->renderer();QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 構造函數:這里使用的默認屬性,需要修改屬性調用其setxxx函數即可,如setHeadType (HeadType type)
auto arrowSymbolLayer  = new QgsArrowSymbolLayer();
  1. 創建符號并設置到渲染器
    //多個Symbol Layer構成一個SymbolQgsSymbolLayerList layerList;layerList << arrowSymbolLayer;//構造QgsLineSymbol并設置rendererauto lineSymbol = new QgsLineSymbol(layerList);singleSymbolRenderer->setSymbol(lineSymbol);layer->setRenderer(singleSymbolRenderer);
  • 方法二
    方法一中步驟1,3不變,步驟2中使用create()成員函數
    QVariantMap mp;mp["head_type"] = "0";mp["arrow_type"] = "0";auto arrowSymbolLayer  = QgsArrowSymbolLayer::create(mp);
  • 完整測試代碼如下
void MainWindow::lineArrowSlot()
{//添加一個線圖層QgsVectorLayer* layer = addTestShape(QStringLiteral("maps/shapefile/rivers.shp"));//從圖層獲取渲染器QgsFeatureRenderer * layerRenderer= layer->renderer();QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
#if 0auto arrowSymbolLayer  = new QgsArrowSymbolLayer();
#elseQVariantMap mp;mp["head_type"] = "0";mp["arrow_type"] = "0";auto arrowSymbolLayer  = QgsArrowSymbolLayer::create(mp);
#endif//多個Symbol Layer構成一個SymbolQgsSymbolLayerList layerList;layerList << arrowSymbolLayer;//構造QgsLineSymbol并設置rendererauto lineSymbol = new QgsLineSymbol(layerList);singleSymbolRenderer->setSymbol(lineSymbol);layer->setRenderer(singleSymbolRenderer);
}
  • 效果如下圖
    在這里插入圖片描述
    在這里插入圖片描述

總結

  • 介紹了矢量圖層單一符號箭頭的使用

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

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

相關文章

證照之星是什么軟件 證照之星哪個版本好用?證照之星支持哪些相機 證照之星XE免費版

許多人都需要使用證件照&#xff0c;為了滿足這一需求&#xff0c;人們會使用照相機、手機、電腦等工具進行拍攝。除此之外&#xff0c;市面上還存在專門的證件照拍攝軟件&#xff0c;比如證照之星。那么&#xff0c;各位小伙伴是否了解證照之星哪個版本好用&#xff0c;證照之…

如何利用3D可視化大屏提升信息展示效果?

老子云3D可視化平臺https://www.laozicloud.com/ 引言 在信息爆炸的時代&#xff0c;如何有效地傳達和展示信息成為了各行各業的一大挑戰。傳統的平面展示方式已經無法滿足人們對信息展示的需求&#xff0c;3D可視化大屏應運而生&#xff0c;成為了提升信息展示效果的利器。本…

會員管理系統應該具備哪些功能?

?會員管理系統應該具備一系列核心功能&#xff0c;以滿足企業在會員管理、營銷和客戶服務等方面的需求。 以下是一些關鍵的會員管理系統功能&#xff1a; 1、會員信息管理&#xff1a;這是會員管理系統的基本功能&#xff0c;包括會員注冊、信息錄入、修改和查詢等。系統應支…

URL入參出參請求頭可配置化

整體思路 通過spring的Spell表達式解析變量的參數值&#xff0c;參數名定義為${XXX},在解析參數值后&#xff0c;將${XXX}替換成#XXX以匹配Spell表達式。 核心實現類 package com.example.spring_boot_study.spring.spell;import cn.hutool.core.map.MapUtil; import cn.hut…

大模型相關內容的研究學習

大模型研究學習 1.大模型的“幻覺” 幻覺可以分為事實性幻覺和忠實性幻覺。 事實性幻覺&#xff0c;是指模型生成的內容與可驗證的現實世界事實不一致。 比如問模型“第一個在月球上行走的人是誰&#xff1f;”&#xff0c;模型回復“Charles Lindbergh在1951年月球先驅任務…

the7主題下載,探索WordPress主題的無限可能

在數字時代&#xff0c;一個出色的網站是任何企業或個人品牌的必備。但在這個競爭激烈的網絡世界中&#xff0c;如何讓您的網站脫穎而出&#xff1f;答案就是 the7 —— 一款專為創造獨特和視覺沖擊力強的網站而設計的 WordPress 主題。 1. 無限設計可能性 the7 以其獨特的設…

探索政務熱線24小時在線服務:提升政府服務效能與民眾滿意度

一. 引言 在信息化、網絡化日益深入的今天&#xff0c;政府服務的方式也在不斷地變革與創新。政務熱線系統作為政府與民眾溝通的重要橋梁&#xff0c;其重要性不言而喻。政務熱線不僅是政府傾聽民眾聲音、回應社會關切的重要渠道&#xff0c;更是推動政府服務向數字化、智能化…

代碼隨想錄Day40:Leetcode343、96

Leetcode343&#xff1a; 問題描述&#xff1a; 給定一個正整數 n &#xff0c;將其拆分為 k 個 正整數 的和&#xff08; k > 2 &#xff09;&#xff0c;并使這些整數的乘積最大化。 返回 你可以獲得的最大乘積 。 代碼及注釋解析&#xff1a; class Solution { publ…

Linux-CentOS-7忘記密碼-修改登錄密碼圖文詳解

Linux-CentOS-7忘記密碼-修改登錄密碼圖文詳解 1.重啟系統&#xff1a; 在登錄界面&#xff0c;選擇要登錄的用戶并點擊"Power"按鈕&#xff0c;然后選擇"Restart"或"Reboot"重新啟動系統。 在系統啟動時持續按下 “e” 鍵進入編輯模式。 2…

谷歌 I/O 2024大會全面硬鋼OpenAI;騰訊宣布旗下的混元文生圖大模型;阿里巴巴技術下的AI自動視頻剪輯工具

? 1: 谷歌 I/O 2024 谷歌 I/O 2024 發布了眾多新技術&#xff0c;包括 Gemini AI、大語言模型和通用 AI 智能體等&#xff0c;全面顛覆搜索體驗。 谷歌 I/O 2024發布會帶來許多令人興奮的新功能和技術創新&#xff1a; Gemini 1.5 Pro&#xff1a;一個極其強大的語言模型&am…

文獻檢索神器分享:一鍵篩選頂刊論文,還能免費下載全文!

我是娜姐 迪娜學姐 &#xff0c;一個SCI醫學期刊編輯&#xff0c;探索用AI工具提效論文寫作和發表。 信息爆炸的時代&#xff0c;文獻是根本讀不完。一個關鍵詞能搜出來幾萬篇&#xff0c;而且有些結論還是完全相反的&#xff0c;到底該讀哪些&#xff1f; 第一步的文獻篩選很重…

Java面試八股之float和double的區別

Java中float和double的區別 存儲空間與精度&#xff1a; double&#xff1a;占據64位&#xff08;8字節&#xff09;存儲空間&#xff0c;屬于雙精度浮點數。它可以提供較高的精度&#xff0c;通常能夠精確表示大約15到17位十進制數字&#xff0c;適合用于需要較高精度計算或…

匯凱金業:3個高效的黃金投資技巧

黃金投資中的高效技巧往往承載了許多投資前輩的智慧與經驗教訓&#xff0c;成為新手投資者寶貴的學習資料。歷史上積累的黃金投資經驗可以作為新投資者的學習榜樣。 3個高效的黃金投資技巧 一、穩健的中長期投資策略 在金屬投資領域雖然不乏短線交易高手&#xff0c;但新手投資…

Cocos Creator 2D Mask與Layout 使用詳解

Cocos Creator是一款強大的2D游戲開發引擎&#xff0c;提供了豐富的功能和工具&#xff0c;使開發者可以輕松創建出高質量的游戲。其中&#xff0c;2D Mask和Layout是Cocos Creator中常用的兩個組件&#xff0c;它們可以幫助開發者實現更加復雜和精美的游戲界面設計。本文將詳細…

《Fundamentals of Power Electronics》——阻抗和傳遞函數的圖解構造

通常&#xff0c;我們可以通過觀察畫出近似的波德圖&#xff0c;而不需要大量雜亂的代數和不可避免的相關代數錯誤。使用這種方法可以對電路的工作原理有很大的了解。在不同頻率下&#xff0c;哪些元件主導電路響應變得很清楚&#xff0c;因此合適的近似變得很明顯。可以直接得…

JVM運行時內存:程序計數器

文章目錄 1. 程序計數器的作用2. 程序計數器的基本特征3. 程序計數器的問題 運行時內存整體結構如下圖所示: 1. 程序計數器的作用 為了保證程序(在操作系統中理解為進程)能夠連續地執行下去&#xff0c;CPU必須具有某些手段來確定下一條指令的地址。而程序計數器正是起到這種作…

WSL數據遷移(遷移ext4.vhdx)

WSL的ubuntu默認安裝在C盤&#xff0c;數據文件位于&#xff1a;C:\Users\hzgdi\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx, 使用一段時間后&#xff0c;尤其時使用大量的docker image 和容器后&#xff0c;占用空間較…

【JavaScript】尺寸和位置

DOM對象相關的尺寸和位置屬性 用于獲取和修改元素在頁面中的尺寸和位置。 只讀屬性&#xff1a; clientWidth和clientHeight&#xff1a;獲取元素可視區域的寬度和高度&#xff08;padding content&#xff09;&#xff0c;不包括邊框和滾動條。 offsetWidth和offsetHeight…

C# WinForm —— 15 DateTimePicker 介紹

1. 簡介 2. 常用屬性 屬性解釋(Name)控件ID&#xff0c;在代碼里引用的時候會用到,一般以 dtp 開頭Format設置顯示時間的格式&#xff0c;包含Long&#xff1a; Short&#xff1a; Time&#xff1a; Custom&#xff1a;采用標準的時間格式 還是 自定義的格式CustomFormat自定…

如何搭建本地DNS服務器

一、搭建本地DNS服務器 1.初始化設置 systemctl disable --now firewalld.service #關閉防火墻&#xff0c;并開機不自啟 setenforce 0 #臨時關閉selinux防火墻 vim /etc/selinux/config …