功能: 实现距离、面积的测量。

Qgis留下了专门的用于计算距离、面积的接口:QgsDistanceArea类。
这个类内部包括了许多与测量相关的函数,比较关键的点在于ellipsoid椭球体以及坐标系Rcs的设置,需要和给定的地图相符。

距离测量示例

先建立测量工具(这么理解吧)的实例。
然后设置坐标系为EPSG:4326以及变换的内部参数。
然后设置椭球体。这里取的WGS-84的椭球体,但是由于输入WGS-84的名称未成功,直接输入了半长轴和半短轴进行构造。
然后调用测量两点的函数,并转换单位为米
然后将结果格式化,打印。

 QgsDistanceArea* Measurer = new QgsDistanceArea();Measurer->setSourceCrs(QgsCoordinateReferenceSystem(QString("EPSG:4326")),QgsProject::instance()->transformContext());
//    Measurer->setSourceCrs(QgsProject::instance()->crs(),QgsProject::instance()->transformContext());// WGS-84的半长轴和半短轴,注释掉为笛卡尔坐标系,解除注释为椭球坐标系qDebug() << Measurer->setEllipsoid(6378137,6356752.3142); QgsPointXY p1 = QgsPointXY(8.909,50.126);QgsPointXY p2 = QgsPointXY(8.762,49.676);double distance = Measurer->convertLengthMeasurement(Measurer->measureLine(p1, p2),QgsUnitTypes::DistanceMeters);qDebug() << QgsDistanceArea::formatDistance(distance,5, QgsUnitTypes::DistanceMeters);

测量面积示例

基本结构相同,只是调用的函数和传入的内容不同,传入的是QVector<QgsPoints>

 QgsDistanceArea* Measurer = new QgsDistanceArea();Measurer->setSourceCrs(QgsCoordinateReferenceSystem(QString("EPSG:4326")),QgsProject::instance()->transformContext());qDebug() << Measurer->setEllipsoid(6378137,6356752.3142); // WGS-84的半长轴和半短轴,注释掉为笛卡尔坐标系,解除注释为椭球坐标系QgsPointXY p1 = QgsPointXY(9.383,50.820);QgsPointXY p2 = QgsPointXY(9.516,50.546);QgsPointXY p3 = QgsPointXY(9.247,50.385);QgsPointXY p4 = QgsPointXY(9.027,50.766);QVector<QgsPointXY> points;points << p1 << p2 << p3 << p4;// 对应的面积,qgis中算出,笛卡尔坐标系是1500756463.112 m^2// 对应的面积,qgis中算出,椭球坐标系是953237044.762 m^2double area = Measurer->convertAreaMeasurement( Measurer->measurePolygon(points), QgsUnitTypes::AreaUnit::AreaSquareMeters);qDebug() << QgsDistanceArea::formatArea(area, 5, QgsUnitTypes::AreaSquareMeters);

QT(5.12)+Qgis(3.10) 距离、面积测量相关推荐

  1. Qt 5.12 LTS(长期维护版本)中Qt Quick的性能改进

    我们一直致力于提高Qt的性能和优化其内存消耗.Qt 5.12的一个重点关注是在于减少QML引擎的内存消耗和优化JavaScript性能. 与上一个长期支持版Qt 5.6 LTS相比,Qt 5.9 LT ...

  2. Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)

    本文结构 第一部分 只安装Qt Creator和配置OpenCV 1.Qt Creator5.12.2下载与安装 2.Cmake下载与安装 3.OpenCV下载 4.编译OpenCV 5.测试Qt程序 ...

  3. Ubuntu安装qt 5.12

    1.下载qt5.12.10 qt下载网址:https://download.qt.io/archive/qt/ 下载完成后,将下载的文件拷入Ubuntu,去到文件目录添加执行权限 chmod +x 文 ...

  4. Qt 5.12学习笔记--QML性能策略

    Qt 5.12学习笔记--QML性能策略 1 简介 2 时间因素 2 性能分析 3 JavaScript 部分 4 绑定 5 类型转换 6 解析属性 6 属性绑定 7 序列提示(Sequence ti ...

  5. QGIS 3.10 插值与等值线提取

    插值(Interpolation)通过离散的点状数据生成连续的面状数据,是常用的GIS分析技术.现实世界中的很多现象是连续的,比如高程.土壤.温度等,很难通过对整个表面进行测量的方式完成对这些连续现象 ...

  6. ubuntu 12.04/11.10 PPA 安装 Nvidia 295.59

    2019独角兽企业重金招聘Python工程师标准>>> Nvidia 295.59 增加支持以下GPUs: NVS 5400M NVS 310 GeForce GT 620M GeF ...

  7. 安装教程-VMware 12 安装 Windows 10 企业版

    VMware 12 安装 Windows 10 企业版 1.实验描述 在虚拟机中,手动安装 Windows10 企业版操作系统,为一些实验提供平台,因此,有关系统激活问题不再演示.可自行百度,或者加入 ...

  8. python 计算s= 12+ 22+ 32 +... + (10*n+2)

    计算 s= 12+ 22+ 32 +- + (10*n+2) 参考代码 @author: Catwang """ def main():sum = 0n = int(in ...

  9. PostgreSQL 12系统表(10)pg_locks

    PostgreSQL 12系统表(10)pg_locks 视图pg_locks提供了数据库服务器上活动进程中保持的锁的信息. 名称 类型 引用 描述 locktype text 可锁对象的类型: re ...

  10. Ubuntu 18.04 安装Qt 5.12.0

    Ubuntu 18.04 安装Qt 5.12.0 1.安装包下载 2.安装QT 3.配置系统路径 4.配置QT creator 6.测试工程 1.安装包下载 官方下载地址 也可以下载到其他版本:htt ...

最新文章

  1. oracle中lock和latch的用途
  2. 【C#公共帮助类】 Image帮助类
  3. 两篇波兰地区重金属污染地区土壤微生物多样性的研究
  4. 嵌入式基础认识2:shell脚本的一些简单语法规则
  5. CreateThread和_beginthreadex的区别
  6. java.util.concurrent 多线程框架
  7. 【华为云专家原创】 服务注册与发现如何满足服务治理?
  8. 【人工智能】深度学习自动构图研究报告
  9. asp.net js 提示信息封装函数
  10. 5.26 考试修改+总结
  11. 太开放计算机软件快上课,[计算机软件及应用]CAXA电子图版上课.ppt
  12. iphone访问限制在哪 苹果手机设置访问限制方法
  13. 【哈利波特·魔法觉醒】手记全攻略
  14. 敬业签:备忘录在手机哪里能找到?
  15. TASK1_高等数学
  16. Hive Thrift Server
  17. Python汉字转换成拼音
  18. 274. H 指数(中)
  19. 数字抽奖小程序_抽奖小程序凭什么成为流量的风口?怎么以最快的方式引流?...
  20. error: Failed dependencies:mysql-community-client(x86-64) = 5.7.9 is needed by mysql-commu

热门文章

  1. 计算机英语面试翻译,计算机面试英文自我介绍范例
  2. 漫画英语作文怎么写 计算机,漫画英文作文怎么写
  3. 设置两个路由器无线桥接
  4. 繁体字转换为中文python
  5. graphpad饼状图_Graphpad绘制基因散点图
  6. 首条作品获8w推荐,视频号近期的创作趋势是什么?
  7. Spring中关于IOC的详解
  8. 离开阿里加盟复旦!大牛纷纷离职回归学界,撕下了国内大厂AI的最后遮羞布!大厂AI名存实亡?...
  9. ssm毕设项目鲲龙装饰公司在线管理系统的设计与开发前台模块iub6h(java+VUE+Mybatis+Maven+Mysql+sprnig)
  10. 两台虚拟服务器如何串联,巧用路由器的DHCP功能,完成两台路由器之间的串联,你学会了么...