8.3 矢量图层点要素单一符号使用三(椭圆形标记和字符标记)

前言

  • 上一篇教程介绍了矢量图层点要素单一符号中图片标记和动画标记
  • 本章继续介绍单一符号中各种标记的用法
  • 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps

单一符号(Single symbol)渲染

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

椭圆形标记(Ellipse marker)

a simple marker symbol layer, with customizable width and height
A symbol layer for rendering objects with major and minor axis (e.g.ellipse, rectangle, etc).

  • 椭圆形标记:与其他标记不同的地方是宽高可以设置

QGis

  • 将Symbol layer type设置为椭圆形标记(Ellipse marker),可以设置的属性见下图
    在这里插入图片描述
    在这里插入图片描述

代码实现

  • QgsEllipseSymbolLayer类是椭圆形标记图层(Ellipse marker layer),类图如下
    在这里插入图片描述
  • 代码实现设置图层符号的步骤如下
  1. 首先从图层获取renderer,并转换为Single Symbol Renderer代码如下
QgsFeatureRenderer * layerRenderer= layer->renderer();
QgsSingleSymbolRenderer *singleRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造Ellipse标记层(Ellipse Marker SymbolLayer),代码如下
    //构造Ellipse标记层(Ellipse Marker SymbolLayer)方法一
    auto markerSymbolLayer = new QgsEllipseSymbolLayer();
    markerSymbolLayer->setShape(QgsEllipseSymbolLayer::Circle);
    markerSymbolLayer->setFillColor(QColor("pink"));
    markerSymbolLayer->setSymbolWidth(6.0);
    markerSymbolLayer->setSymbolHeight(6.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);

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

字符标记(Font marker)

similar to the simple marker symbol layer, except that it uses installed fonts to render the marker.

  • 类似于简单标记,字符标记使用字符作为符号

QGis

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

代码实现

  • QgsFontMarkerSymbolLayer类是字符标记图层(Font marker layer),类图如下
    在这里插入图片描述
  • 其构造函数包含了默认属性,如下代码
QgsFontMarkerSymbolLayer (const QString &fontFamily=DEFAULT_FONTMARKER_FONT, QString chr=DEFAULT_FONTMARKER_CHR, double pointSize=DEFAULT_FONTMARKER_SIZE, const QColor &color=DEFAULT_FONTMARKER_COLOR, double angle=DEFAULT_FONTMARKER_ANGLE)
  • 代码实现设置图层符号的步骤如下
  1. 首先从图层获取renderer,并转换为Single Symbol Renderer代码如下
QgsFeatureRenderer * layerRenderer= layer->renderer();
QgsSingleSymbolRenderer *singleRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造Font标记层(Font Marker SymbolLayer),代码如下
    //构造Font标记层(Font Marker SymbolLayer)方法一
    auto markerSymbolLayer = new QgsFontMarkerSymbolLayer(QStringLiteral("Mukti"),QChar('@'),6.0,QColor("pink"));
  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);

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

总结

  • 分别介绍了点图层使用单一符号,设置为椭圆形标记和字符标记的方法
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷动软件工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值