Qgis二次开发-QgsGeometry类简介

news/2024/5/22 5:08:29

1.简介

QgsGeometry类是QGIS中的一个核心类,用于表示和处理地理要素的几何形状。它提供了许多方法和函数,用于创建、修改和分析地理要素的几何形状。 QgsGeometry类的主要作用如下:

  • 表示和存储地理要素的几何形状:QgsGeometry可以表示点、线、面等不同类型的几何形状。它可以存储几何坐标信息,并提供了访问和修改几何形状的方法。
  • 进行几何操作:QgsGeometry类提供了丰富的几何操作方法,如计算两个几何对象之间的距离、判断几何对象是否相交、计算几何对象的缓冲区等。这些操作可以用于空间分析和地理信息处理等应用中。
  • 空间关系判断:QgsGeometry类提供了用于判断几何对象之间空间关系的方法,如判断一个点是否在一个多边形内部、判断两个几何对象是否相邻等。这些方法可以用于空间查询和空间过滤等应用中。
  • 几何形状的转换和投影:QgsGeometry类提供了方法用于几何形状的转换和投影。可以将一个几何对象从一个坐标系统转换为另一个坐标系统,或者进行几何形状的缩放、旋转等操作。 总之,QgsGeometry类是QGIS中用于处理地理要素几何形状的重要类。它可以帮助开发者进行地理信息处理、空间分析和空间查询等功能的实现。

2.常用方法

//添加环
OperationResult addRing (const QVector< QgsPointXY > &ring)//返回面积
double area () const//以二维点的形式返回几何图形的内容
QgsPointXY asPoint () const//以多边形形式返回几何图形的内容
QgsPolygonXY asPolygon () const//以折线形式返回几何图形的内容
QgsPolylineXY asPolyline () const//返回几何体的边界框
QgsRectangle boundingBox () const//是否包含点
bool contains (const QgsPointXY *p) const//如果该几何图形完全包含另一个几何图形,返回true
bool contains (const QgsGeometry &geometry) const//是否相交
bool crosses (const QgsGeometry &geometry) const//返回此几何图形与另一个几何图形之间的最小距离
double 	distance (const QgsGeometry &geom) const//测试这个几何是否与另一个几何完全相等
bool 	equals (const QgsGeometry &geometry) const

一些静态方法

//从一个QgsPointXY对象创建一个新的几何体。
static QgsGeometry 	fromPointXY (const QgsPointXY &point) SIP_HOLDGIL//从一个QgsPolygon创建一个新的几何体
static QgsGeometry 	fromPolygonXY (const QgsPolygonXY &polygon)//从一个QgsPolyline创建一个新的几何体
static QgsGeometry 	fromPolyline (const QgsPolyline &polyline)//从一个QPointF 创建一个新的几何体
static QgsGeometry 	fromQPointF (QPointF point) SIP_HOLDGIL

3.代码示例

	// 创建一个点QgsPointXY point(10.0, 20.0);QgsGeometry geometry = QgsGeometry::fromPointXY(point);// 获取几何形状类型QgsWkbTypes::Type geometryType = geometry.wkbType();qDebug() << "Geometry type:" << QgsWkbTypes::displayString(geometryType);// 获取点的坐标QgsPointXY point2 = geometry.asPoint();qDebug() << "Point coordinates:" << point2.x() << "," << point2.y();// 创建一个线QgsPoint startPoint(10.0, 20.0);QgsPoint endPoint(30.0, 40.0);QgsGeometry line = QgsGeometry::fromPolyline(QVector<QgsPoint>() << startPoint << endPoint);// 计算线的长度double length = line.length();qDebug() << "Line length:" << length;// 判断点是否在线上bool pointOnLine = line.contains(&QgsPointXY(20.0, 30.0));qDebug() << "Point on line:" << (pointOnLine ? "Yes" : "No");

4.相关参考

Qgis二次开发-QgsAnnotationItem(添加文字、图片标注(支持svg、png、jpg等常用图片格式))_Mr.codeee的博客-CSDN博客

Qgis二次开发-QgsMapTool地图交互工具详解_Mr.codeee的博客-CSDN博客 


http://www.mrgr.cn/p/61620620

相关文章

mysql的json处理

写在前面 需要注意&#xff0c;5.7以上版本才支持&#xff0c;但如果是生产环境需要使用的话&#xff0c;尽量使用8.0版本&#xff0c;因为8.0版本对json处理做了比较大的性能优化。你你可以使用select version();来查看版本信息。 本文看下MySQL的json处理。在正式开始让我们先…

使用GGML和LangChain在CPU上运行量化的llama2

Meta AI 在本周二发布了最新一代开源大模型 Llama 2。对比于今年 2 月发布的 Llama 1&#xff0c;训练所用的 token 翻了一倍&#xff0c;已经达到了 2 万亿&#xff0c;对于使用大模型最重要的上下文长度限制&#xff0c;Llama 2 也翻了一倍。 在本文&#xff0c;我们将紧跟趋…

AI聊天GPT三步上篮!

1、是什么&#xff1f; CHATGPT是OpenAI开发的基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;架构的聊天型人工智能模型。也就是你问它答&#xff0c;根据网络抓去训练 2、怎么用&#xff1f; 清晰表达自己诉求&#xff0c;因为它就是一个AI助手&#…

Eclipse memory analyzer 分析GC dump日志定位代码问题

1、问题描述&#xff1a; 使用命令 jstat -gcutil [pid] 查看JVM GC日志&#xff0c;发现生产系统频繁FullGC&#xff0c;大概几分钟一次&#xff0c;而且系统响应速度变慢很多 再使用 free -g 查看服务器内存全部占用&#xff0c;猜测是内存溢出了 2、导出dump日志 jmap -du…

【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;零基础快速入门人工智能《机器学习入门到精通》 K-近邻算法 1、什么是K-近邻算法&#xff1f;2、K-近邻算法API3、…

centos7安装mysql数据库详细教程及常见问题解决

mysql数据库详细安装步骤 1.在root身份下输入执行命令&#xff1a; yum -y update 2.检查是否已经安装MySQL&#xff0c;输入以下命令并执行&#xff1a; mysql -v 如出现-bash: mysql: command not found 则说明没有安装mysql 也可以输入rpm -qa | grep -i mysql 查看是否已…

Unity XML3——XML序列化

一、XML 序列化 ​ 序列化&#xff1a;把对象转化为可传输的字节序列过程称为序列化&#xff0c;就是把想要存储的内容转换为字节序列用于存储或传递 ​ 反序列化&#xff1a;把字节序列还原为对象的过程称为反序列化&#xff0c;就是把存储或收到的字节序列信息解析读取出来…

java+springboot+mysql疫情物资管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的疫情物资管理系统&#xff0c;系统包含超级管理员&#xff0c;系统管理员、员工角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;部门管理&#xff1b;职位管理&#xff1b;员工管理&…

zore-shot,迁移学习和多模态学习

1.zore-shot 定义&#xff1a;在ZSL中&#xff0c;某一类别在训练样本中未出现&#xff0c;但是我们知道这个类别的特征&#xff0c;然后通过语料知识库&#xff0c;便可以将这个类别识别出来。概括来说&#xff0c;就是已知描述&#xff0c;对未知类别&#xff08;未在训练集中…

Python 教程之标准库概览

概要 Python 标准库非常庞大&#xff0c;所提供的组件涉及范围十分广泛&#xff0c;使用标准库我们可以让您轻松地完成各种任务。 以下是一些 Python3 标准库中的模块&#xff1a; 「os 模块」 os 模块提供了许多与操作系统交互的函数&#xff0c;例如创建、移动和删除文件和…

Debeizum 增量快照

在Debeizum1.6版本发布之后&#xff0c;成功推出了Incremental Snapshot&#xff08;增量快照&#xff09;的功能&#xff0c;同时取代了原有的实验性的Parallel Snapshot&#xff08;并行快照&#xff09;。在本篇博客中&#xff0c;我将介绍全新快照方式的原理&#xff0c;以…

系统架构设计师-软件架构设计(5)

目录 一、构件与中间件技术 1、软件复用 2、构件与中间件技术的概念 3、构件的复用 3.1 检索与提取构件 3.2 理解与评价构件 3.3 修改构件 3.4 组装构件 4、中间件 4.1 采用中间件技术的优点&#xff1a; 4.2 中间件的分类&#xff1a; 5、构件标准 5.1 CORBA&#xff08;公共…

day43-Feedback Ui Design(反馈ui设计)

50 天学习 50 个项目 - HTMLCSS and JavaScript day43-Feedback Ui Design&#xff08;反馈ui设计&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&q…

CPU密集型和IO密集型任务的权衡:如何找到最佳平衡点

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、CPU密集型与IO密集型3.1、CPU密集型3.2、I/O密…

【已解决】windows7添加打印机报错:加载Tcp Mib库时的错误,无法加载标准TCP/IP端口的向导页

windows7 添加打印机的时候&#xff0c;输入完打印机的IP地址后&#xff0c;点击下一步&#xff0c;报错&#xff1a; 加载Tcp Mib库时的错误&#xff0c;无法加载标准TCP/IP端口的向导页 解决办法&#xff1a; 复制以下的代码到新建文本文档.txt中&#xff0c;然后修改文本文…

搭建测试平台开发(一):Django基本配置与项目创建

一、安装Django最新版本 1 pip install django 二、创建Django项目 首先进入要存放项目的目录&#xff0c;再执行创建项目的命令 1 django-admin startproject testplatform 三、Django项目目录详解 1 testplatform 2 ├── testplatform  # 项目的容器 3 │ ├──…

清洁机器人规划控制方案

清洁机器人规划控制方案 作者联系方式Forrest709335543qq.com 文章目录 清洁机器人规划控制方案方案简介方案设计模块链路坐标变换算法框架 功能设计定点自主导航固定路线清洁区域覆盖清洁贴边沿墙清洁自主返航回充 仿真测试仿真测试准备定点自主导航测试固定路线清洁测试区域…

ER系列路由器多网段划分设置指南

ER系列路由器多网段划分设置指南 - TP-LINK 服务支持 TP-LINK ER系列路由器支持划分多网段&#xff0c;可以针对不同的LAN接口划分网段&#xff0c;即每一个或多个LAN接口对应一个网段&#xff1b;也可以通过一个LAN接口与支持划分802.1Q VLAN的交换机进行对接&#xff0c;实现…

微信小程序导入微信地址

获取用户收货地址。调起用户编辑收货地址原生界面&#xff0c;并在编辑完成后返回用户选择的地址。 1&#xff1a;原生微信小程序接口使用API&#xff1a;wx.chooseAddress(OBJECT) wx.chooseAddress({success (res) {console.log(res.userName)console.log(res.postalCode)c…

Day02-作业(JavaScriptVue)

作业1&#xff1a;实现5秒之后&#xff0c;当前页面直接跳转到官网首页&#xff08;首页地址&#xff1a;https://www.itcast.cn&#xff09; 提示&#xff1a; 5秒之后&#xff0c;才触发某一个动作 素材&#xff1a; <!DOCTYPE html> <html lang"en"&…