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.mzph.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 …