首页 > 其他分享 >10.3.3 QGIS点类型注释(Annotation)的应用与二次开发实现

10.3.3 QGIS点类型注释(Annotation)的应用与二次开发实现

时间:2024-07-21 09:25:39浏览次数:17  
标签:10.3 QgsAnnotationItem QGIS 注释 item 二次开发 图层 Annotation

文章目录

前言

  • 介绍注释(Annotation)图层在QGis中的使用以及二次开发的实现
  • 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps

注释(Annotation)图层

表示包含一组地理参考注释的地图层,例如标记、直线、多边形或文本项。

QGis中的注释(Annotation)图层

  • 首先创建一个Annotation图层,如下图所示
    在这里插入图片描述
  • 创建点类型注释,如下图
    在这里插入图片描述

二次开发实现线段类型注释(Annotation)

Represents a map layer containing a set of georeferenced annotations, e.g.markers, lines, polygons or text items.
Annotation layers store a set of QgsAnnotationItem items, which are rendered according to the item’s z-order.

  • QgsAnnotationLayer是注释层,详情见文档,类图如下
    在这里插入图片描述
  • 其成员函数QString addItem (QgsAnnotationItem *item)用于向图层添加项目
  • QgsAnnotationItem是添加注释项目的基类,详情见文档,类图如下
    在这里插入图片描述
  • QgsAnnotationItem的几个基类,分别对应QGis中点、线、多边形和文本注释

点类型Item

  • QgsAnnotationMarkerItem是marker item,详情见文档,类图如下
    在这里插入图片描述
  • 成员函数void setSymbol(QgsMarkerSymbol *symbol)可以设置marker item的符号
  • 完成测试代码如下
void MainWindow::annotationLineSlot()
{
    //添加注释图层
    QgsAnnotationLayer *annotationLayer = addTestAnnotationLayer();
    //定义两个端点
    QgsPoint p1(20.33989,-33.86805);
    QgsPoint p2(20.47760,-33.86676);
    QVector<QgsPoint> points;
    points << p1 << p2;
    auto lineString = new QgsLineString(points);
    //构造并添加
    auto lineItem = new QgsAnnotationLineItem(lineString);
    annotationLayer->addItem(lineItem);
}
  • 效果如下图
    在这里插入图片描述
    在这里插入图片描述

总结

  • 介绍了点类型注释(Annotation)的应用与二次开发实现

标签:10.3,QgsAnnotationItem,QGIS,注释,item,二次开发,图层,Annotation
From: https://blog.csdn.net/richie12/article/details/140555497

相关文章

  • [Windows] 大佬基于Splayer二次开发 TuneFree v1.0.8便携版
    描述对于经常在互联网上进行操作的学生,白领等!一款好用的软件总是能得心应手,事半功倍。今天给大家带了一款高科技软件TuneFreev1.0.8便携版无需额外付费,永久免费!亲测可运行!!内容目前主要的内容以资源破解,对于学习破解资源有比较大的帮助!但是网络上面错综复杂,很多老......
  • abaqus基于python二次开发——钢结构穹顶建模
    模型示意本工作旨在建立一个上表面近乎球面的钢结构穹顶。如下图所示,该穹顶由环向梁和径向梁组成。环向梁径向梁上下截面都为工字钢。环向梁截面如下图所示,环向梁截面有一个倾斜角度,为了使其上表面尽可能与球面贴合。径向梁横截面为不经过旋转的工字形代码讲解 2......
  • 连锁门店收银系统源码,可二次开发
    1.多样化线下收银如Windows版收银(exe安装包)、安卓版收银(apk安装包)、AI智能称重收银(exe/安卓安装包)、无人自助收银(apk安装包)、手机端收银(微信小程序版)、聚合码收银(小程序版)。2.收银端ui风格收银端ui风格,门店可以根据自己的喜好去自定义,如天空蓝、高端金、热情红、生鲜绿、......
  • 禅道二次开发——禅道zentaoPHP框架扩展机制——对控制层扩展
    对现有模块的control层的扩展有两种,一种是覆盖现有的方法,一种是增加新的方法。下面我们来看下如何进行扩展。......
  • UG NX二次开发(C#)-根据草图创建拉伸特征(UFun+NXOpen)
    文章目录1、前言2、在UGNX中创建草图,然后创建拉伸特征3、基于UFun函数的实现4、基于NXOpen的实现代码1、前言UGNX是基于特征的三维建模软件,其中拉伸特征是一个很重要的特征,有读者问如何根据草图创建拉伸特征,我在这篇博客中讲述一下草图创建拉伸特征的UGNX二......
  • NXopen 二次开发 NXOpen::CurveCollection类 创建椭圆CreateEllipse
    NXOpen::NXMatrix*wcsNXMatrix; wcsNXMatrix=workPart->WCS()->CoordinateSystem()->Orientation(); NXOpen::Point3dcenter={0.0,0.0,0.0}; double majorRadius=2; double minorRadius=1; double startAngle=0; double endAngle=PI; d......
  • Lightroom Classic for mac/win (Lrc2021) 10.3中文直装版
    LightroomClassic是Adobe公司开发的一款专业的照片处理和管理软件,旨在帮助摄影师对其作品进行全方位的后期处理,包括调整画面的明暗、色彩、对比度等,以及进行修图、拼接和摄影作品的管理整理等功能。它是摄影师和摄影爱好者常用的后期处理软件之一,可以在室内外的各种场景中进行......
  • 【UG\NX二次开发】PK 求对象在某方向上的极限点(PK_BODY_find_extreme)
    UF_initialize();tag_tps_tag=null_tag;UF_PS_ask_ps_tag_of_object(objtag,&ps_tag);//通过NX对象获取PK对象 doublemainDir[3]={0,0,1};//求对象在主方向上的极限点,此处是在求正Z方向上的极限点doublemtx[9]={0};UF_MTX3_initialize_x(mainDir,mtx);......
  • C# TEKLA 二次开发 版本兼容性解决方案
    制作的exe程序,就存在版本兼容性问题用2022api编译的exe在2024中无法启动解决方案将exe放在如下位置从此处启动exe即可 从宏中可以获取stringXSDATADIR="";TeklaStructuresSettings.GetAdvancedOption("XSDATADIR",refXSDATADIR);stringextensionDir=Path.Co......
  • Superset二次开发之基于GitLab OpenAPI 查询项目的提交记录中修改的文件
    背景:Superset二次开发,在处理版本升级的过程中,需要手动迁移代码,如何在Superset项目众多的文件中,记录修改过的文件,迁移代码时只需重点关注这些文件修改的内容即可,但是针对项目中多次的commit信息,每个commit又涉及不同的文件,如何快速梳理出这些二开工作中修改的文件,是我们......