8.2 矢量图层点要素单一符号使用一

news2024/11/16 3:28:33

文章目录

  • 前言
  • 单一符号(Single symbol)渲染
    • 简单标记(Simple Marker)
      • QGis
      • 代码实现
    • SVG标记(SVG marker)
      • QGis
      • 代码实现
  • 总结

前言

  • 上一篇教程对矢量图层符号化做了一个整体介绍,并以点图层为例介绍了可以使用的渲染器:
    • 无符号(No symbols)
    • 单一符号(Single symbol)
    • 分类(Categorized)
    • 分级(Graduated)
    • 基于规则(Rule-based)
    • 点分布(Point displacement)
    • 点聚合(Point cluster)
    • 热度图(Heatmap)
  • 本篇介绍如何使用单一符号
  • 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps

单一符号(Single symbol)渲染

  • qgis默认使用单一符号、简单标记(Simple Marker)进行渲染,以places_33S.shp为例,添加places_33S图层后,默认显示如下图
    在这里插入图片描述
  • 在点要素图层的图层属性中,选择“Symbology”选项卡,可以看到默认显示,如下图
    在这里插入图片描述
  • 除简单标记(Simple Marker)外,还有其他多种选择如下图
    在这里插入图片描述

简单标记(Simple Marker)

Simple marker symbol layer, consisting of a rendered shape with solid fill color and an stroke.

  • 简单标记是指使用一些简单的几何形状作为标记,并可以设置其填充颜色和画笔颜色

QGis

  • 将Symbol layer type设置为简单标记图层(Simple marker Layer),属性设置见下图
    在这里插入图片描述
    在这里插入图片描述

代码实现

  • QgsSimpleMarkerSymbolLayer类是简单标记图层(Simple marker Layer),类图如下
    在这里插入图片描述
  • 其构造函数如下,构造函数的参数是其对应的参数
QgsSimpleMarkerSymbolLayer (Qgis::MarkerShape shape=Qgis::MarkerShape::Circle, double size=DEFAULT_SIMPLEMARKER_SIZE, double angle=DEFAULT_SIMPLEMARKER_ANGLE, Qgis::ScaleMethod scaleMethod=DEFAULT_SCALE_METHOD, const QColor &color=DEFAULT_SIMPLEMARKER_COLOR, const QColor &strokeColor=DEFAULT_SIMPLEMARKER_BORDERCOLOR, Qt::PenJoinStyle penJoinStyle=DEFAULT_SIMPLEMARKER_JOINSTYLE)
  • 设置点符号为简单标记的步骤如下
  1. 首先从图层获取renderer,并转换为Single Symbol Renderer代码如下
QgsFeatureRenderer * layerRenderer= layer->renderer();
QgsSingleSymbolRenderer *singleRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造简单标记层(Simple Marker SymbolLayer),代码如下
auto markerSymbolLayer = new QgsSimpleMarkerSymbolLayer(Qgis::MarkerShape::Heart,4.0);
QgsSymbolLayerList layerList;
    layerList << markerSymbolLayer;
  1. 构造Marker Symbol,并为renderer设置symbol 代码如下
    auto markerSymbol = new QgsMarkerSymbol(layerList);
    singleRenderer->setSymbol(markerSymbol);
    layer->setRenderer(singleRenderer);

在这里插入图片描述
在这里插入图片描述

SVG标记(SVG marker)

provides you with images from your SVG paths to render as marker symbol.
Each SVG file colors and stroke can also be adapted.

  • svg标记是指使用svg图片作为标记,可以设置svg的填充颜色和画笔颜色

QGis

  • 将Symbol layer type设置为SVG标记(SVG marker),属性见下图
    在这里插入图片描述
    在这里插入图片描述

代码实现

  • QgsSvgMarkerSymbolLayer类是SVG标记图层(SVG marker layer),类图如下
    在这里插入图片描述
  • 其构造函数如下,构造函数的参数是其对应的参数
QgsSvgMarkerSymbolLayer (const QString &path, double size=DEFAULT_SVGMARKER_SIZE, double angle=DEFAULT_SVGMARKER_ANGLE, Qgis::ScaleMethod scaleMethod=DEFAULT_SCALE_METHOD)
  • 设置点符号为svg标记的步骤如下
  1. 首先从图层获取renderer,并转换为Single Symbol Renderer代码如下
QgsFeatureRenderer * layerRenderer= layer->renderer();
QgsSingleSymbolRenderer *singleRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造Svg标记层(Svg Marker SymbolLayer),代码如下
    //构造Svg标记层(Svg Marker SymbolLayer)方法一
    //作为示例,用到了path和size两个参数,其他参数使用类似
    QString path = QStringLiteral("resources/plane.svg");
    auto markerSymbolLayer = new QgsSvgMarkerSymbolLayer(path,4.0);
  1. 构造Marker Symbol,并为renderer设置symbol 代码如下
	//QgsMarkerSymbol构造函数中需要传入QgsSymbolLayerList
    //多个Symbol Layer构成一个Symbol
    QgsSymbolLayerList layerList;
    layerList << markerSymbolLayer;
    auto markerSymbol = new QgsMarkerSymbol(layerList);
    singleRenderer->setSymbol(markerSymbol);
    layer->setRenderer(singleRenderer);

在这里插入图片描述
在这里插入图片描述

总结

  • 分别介绍了点图层使用单一符号,设置为简单标记和svg标记的方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1131169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决org.quartz.SchedulerException: Job threw an unhandled exception.

文章目录 1. 复现错误2. 分析错误3. 解决问题3.1 解决方法一3.2 解决方法二 4. 分析spring中的jdk和cglib的动态代理4.1 动态代理对比4.2 原理区别4.3 性能区别4.4 各自局限4.5 静态代理和动态的本质区别 1. 复现错误 今天在执行quartz定时任务时&#xff0c;报出如下错误&…

使用element-UI Cascader组件,实现第一级单选选,第二级,第三级,子级可以多选

最近开发过程中&#xff0c;遇到需求测一个需求&#xff0c;就是级联选择器&#xff0c;需要多选&#xff1b;但是第一级是单选&#xff1b; 既要单选又要复选。参照网上内容&#xff0c;自己整理了一下功能实现&#xff1b; 如下图&#xff1a; 思路&#xff1a;1.把第一层的…

让酒酿得更明白,国台智能酿造标准体系重磅发布

执笔 | 洪大大 编辑 | 扬 灵 重阳下沙&#xff0c;是酱酒开启新一轮酿造周期的标志&#xff0c;是茅台镇千百年来恪守的传统文化&#xff0c;也是国台一年一度的重要时刻。 10月23日&#xff0c;智能酿造高质量发展论坛暨国台2024年度质量誓师大会隆重举办&#xff0c;此次…

orb-slam3编译手册(Ubuntu20.04)

orb-slam3编译手册&#xff08;Ubuntu20.04&#xff09; 一、环境要求1.安装git2.安装g3.安装CMake4.安装vi编辑器 二、源代码下载三、依赖库下载1.Eigen安装2.Pangolin安装3.opencv安装4.安装Python & libssl-dev5.安装boost库 三、安装orb-slam3四、数据集下载及测试 写在…

正点原子嵌入式linux驱动开发——Linux LCD驱动

LCD是很常用的一个外设&#xff0c;通过LCD可以显示绚丽的图片、界面等&#xff0c;提交人机交互的效率。STM32MP1提供了一个LTDC接口用于连接RGB接口的液晶屏。本章就来学校一下如何在Linux下驱动LCD屏。 LCD和LTDC简介 LCD简介 这里在当时学习stm32裸机开发的时候就学过了…

三代自动驾驶系统及主流科技公司自动驾驶技术方案简介

截止目前&#xff0c;按技术特点&#xff0c;自动驾驶技术大致经历了三代发展&#xff1a;第一代自动驾驶技术以后融合感知技术&#xff0c;高精度地图&#xff0c;基于惯导、GPS定位系统&#xff0c;预测模块&#xff0c;基于优化、搜索的规控等组成。第一代比较成熟的自动驾驶…

Pytorch实现深度学习常见问题

RuntimeError: stack expects each tensor to be equal size, but got [3, 300, 300] at entry 0 and [3, 301, 301] at entry 24 这里的问题出现的原因肯定是在数据预处理处&#xff0c;如下图&#xff0c;当数据使用不同的transforms处理方式时&#xff0c;会导致数据的尺寸大…

DC/DC升压模块电源 高电压稳压输出 12v24v28v48v转600V800V1000V1100V1300V1500V2000V3000V4000V

特点 ● 效率高达 80% ● 2*2 英寸标准封装 ● 单电压输出 ● 价格低 ● 稳压输出 ● 工作温度: -40℃~85℃ ● 阻燃封装&#xff0c;满足UL94-V0 要求 ● 温度特性好 ● 可直接焊在PCB 上 应用 HRA(B) 0.1~30W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为…

SpringBoot Web请求响应

目录 前言请求PostmanPostman使用 简单参数原始方式接收普通参数SpringBoot方式接收普通参数参数名不一致问题 实体参数简单实体参数复杂实体对象 数组集合参数数组参数集合参数 日期参数JSON参数路径参数 响应ResponseBody统一响应结果请求响应案例案例需求与准备工作案例实现…

足底筋膜炎能自愈吗

什么是足底筋膜炎 足底筋膜炎是足底的肌腱或者筋膜发生无菌性炎症所致。最常见症状是脚跟的疼痛与不适&#xff0c;压痛点常在足底近足跟处&#xff0c;有时压痛较剧烈&#xff0c;且持续存在。晨起时疼痛感觉明显&#xff0c;行走过度时疼痛感加剧&#xff0c;严重患者甚至站…

【Java网络编程】 三

本文主要介绍了TCP版本的回显服务器的编写。 一.TCP版本回显服务器 1.服务器 服务器的实现流程 1.接收请求并解析 2.根据请求计算出响应&#xff08;业务流程&#xff09; 3.把响应返回给客户端 代码&#xff1a; import java.io.IOException; import java.io.InputStream; i…

算法训练 第四周

一、二分查找 本题给我们提供了一个有n个元素的升序整形数组nums和一个目标值target&#xff0c;要求我们找到target在nums数组中的位置&#xff0c;并返回下标&#xff0c;如果不存在目标值则返回-1。nums中的所有元素不重复&#xff0c;n将在[1&#xff0c;10000]之间&#x…

高效视频剪辑:批量调整视频尺寸的技巧与步骤

对于许多新手和初学者来说&#xff0c;视频剪辑可能是一项令人望而生畏的任务。但是&#xff0c;有了正确的工具&#xff0c;比如固乔剪辑助手&#xff0c;即使你是个新手&#xff0c;也能轻松、高效地完成视频剪辑工作。下面就是关于如何使用固乔剪辑助手来批量调整视频尺寸的…

Python第三方库 - Flash(python web框架)

1 Flask 1.1 认识Flask Web Application Framework&#xff08; Web 应用程序框架&#xff09;或简单的 Web Framework&#xff08; Web 框架&#xff09;表示一个库和模块的集合&#xff0c;使 Web 应用程序开发人员能够编写应用程序&#xff0c;而不必担心协议&#xff0c;线…

部署springboot打包不打包配置文件,配置文件为外部配置文件使用 (真实场景)

场景 springboot项目打包的时候&#xff0c;想要将配置文件不要打包到jar包中&#xff0c;作为外部使用&#xff0c;不同环境&#xff0c;配置文件的配置值肯定不一样&#xff0c;真实场景。 比如 开发环境数据库配置为 127.0.0.1:3306 &#xff0c; 测试环境 122.0.2.2&am…

火山引擎 LAS Spark 升级:揭秘 Bucket 优化技术

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 文章介绍了 Bucket 优化技术及其在实际业务中的应用&#xff0c;包括 Spark Bucket 的基本原理&#xff0c;重点阐述了火山引擎湖仓一体分析服务 LAS&#xff08;下…

记录--vue3 + mark.js | 实现文字标注功能

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 页面效果 具体实现 新增 1、监听鼠标抬起事件&#xff0c;通过window.getSelection()方法获取鼠标用户选择的文本范围或光标的当前位置。2、通过 选中的文字长度是否大于0或window.getSelection().isC…

drf-过滤、排序、异常处理、自封装Response

过滤 过滤就是根据路由url?后的信息过滤出符合&#xff1f;后条件的数据而非全部&#xff0c;比如…/?nameweer就是只查name是weer的数据&#xff0c;其余不返回。 1、安装&#xff1a;pip3 install django-filter2、注册&#xff1a;在settings.py中的app中注册django-filt…

MYSQL(事务+锁+MVCC+SQL执行流程)理解(2)

一)MYSQL中的锁(知识补充) 可以通过In_use字段来进行判断是否针对于表进行加了锁 1)对于undo log日志来说:新增类型的&#xff0c;在事务提交之后就可以清除掉了&#xff0c;修改类型的&#xff0c;事务提交之后不能立即清除掉这些日志会用于mvcc只有当没有事务用到该版本信息时…

列表推导式、集合推导式、字典推导式、生成器

列表推导式 可以与三目运算符搭配使用 dict1 {name: "by", "age": 20} dict2 {name: "ss", "age": 25} dict3 {name: "sa", "age": 24} dict4 {name: "xs", "age": 27} list1 [dict1, …