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;成为了提升信息展示效果的利器。本…

大模型相关内容的研究学习

大模型研究学习 1.大模型的“幻觉” 幻觉可以分为事实性幻觉和忠实性幻觉。 事实性幻觉&#xff0c;是指模型生成的内容与可验证的现实世界事实不一致。 比如问模型“第一个在月球上行走的人是谁&#xff1f;”&#xff0c;模型回复“Charles Lindbergh在1951年月球先驱任务…

the7主题下载,探索WordPress主题的无限可能

在数字时代&#xff0c;一个出色的网站是任何企业或个人品牌的必备。但在这个竞争激烈的网络世界中&#xff0c;如何让您的网站脱颖而出&#xff1f;答案就是 the7 —— 一款专为创造独特和视觉冲击力强的网站而设计的 WordPress 主题。 1. 无限设计可能性 the7 以其独特的设…

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;但新手投资…

《Fundamentals of Power Electronics》——阻抗和传递函数的图解构造

通常&#xff0c;我们可以通过观察画出近似的波德图&#xff0c;而不需要大量杂乱的代数和不可避免的相关代数错误。使用这种方法可以对电路的工作原理有很大的了解。在不同频率下&#xff0c;哪些元件主导电路响应变得很清楚&#xff0c;因此合适的近似变得很明显。可以直接得…

JVM运行时内存:程序计数器

文章目录 1. 程序计数器的作用2. 程序计数器的基本特征3. 程序计数器的问题 运行时内存整体结构如下图所示: 1. 程序计数器的作用 为了保证程序(在操作系统中理解为进程)能够连续地执行下去&#xff0c;CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作…

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 …

1727jsp思想政治活动Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 思想政治活动管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff…

ArcGIS软件损坏怎么修复?10.7分享

前言 我们经常ArcGIS用着用着就会出现一些莫名奇怪的情况&#xff0c;比如ArcGIS的工具箱都打&#xff0c;字体丢失等、dll文件缺失。尝试了很多方法之后没有效果的&#xff0c;我们可以对软件做修复 那么修复改如果做呢&#xff1f; 不需要卸载软件&#xff0c;直接安装deskt…

智慧安防监控EasyCVR视频汇聚管理平台视频播放花屏的原因分析及处理

智慧安防监控EasyCVR视频管理平台能在复杂的网络环境中&#xff0c;将前端设备统一集中接入与汇聚管理。国标GB28181协议视频监控/视频汇聚EasyCVR平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、…

哪个牌子的超声波清洗机好?四大质量出众超声波清洗机汇众

由于科技的进步&#xff0c;超声波清洗机已经成为了家庭和专业场所不可或缺的高效清洁工具。它利用超声波波动产生的微小气泡来清洁物品表面及细缝中的污渍&#xff0c;实现深层次的清洁效果。特别是对于眼镜这样的精密物品&#xff0c;定期进行深度清洁不仅能够确保视觉的清晰…

32、Flink 的 DataStream API 物理分区算子详解

3.物理分区 Flink 提供以下方法让用户根据需要在数据转换完成后对数据分区进行更细粒度的配置。 a&#xff09;自定义分区 DataStream → DataStream 使用自定义的 Partitioner 为每个元素选择目标任务。 dataStream.partitionCustom(partitioner, "someKey"); …

网络安全从业者“行话”

目录 ​编辑 一、攻击篇 1&#xff0e;攻击工具 2&#xff0e;攻击方法 3&#xff0e;攻击者 二、防守篇 1&#xff0e;软硬件 2&#xff0e;技术与服务 网络安全学习资源分享: 特别声明 一、攻击篇 1&#xff0e;攻击工具 肉鸡 所谓“肉鸡”是一种很形象的比喻&…

【MATLAB】Enigma机加密原理与自实现

文章目录 什么是EnigmaEnigma机加密通信流程Enigma的物理构造Enigma的加密设置Enigma加密通信密码重新设置Enigma加密消息拼接注意 Enigma的解密分解设置Enigma解密通信密码重新设置Enigma解密消息 Enigma的弱点MATLAB自实现Enigma加密与解密Enigma_functionRotate_functiontes…