码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • QGIS+qt+二次开发之要素的移动


    目录

    1 前言

    2 开发环境

    3 添加要素

    4 如何移动要素

    5 分析

    6 如何调用

    6.1 先拷贝一些依赖的qgis文件

    6.2 代码调整

    6.3 外部调用

    7 最后效果


    1 前言

            最近在研究gis相关的开发,之前使用arcgis进行二次开发,虽然arcgis的文档很丰富,demo功能也比较全,实例代码也都有,可无奈的是,arcgis的桌面版只支持x86平台,由于我的项目涉及到的是arm平台的,只能再找一个能同时支持x86和arm的gis开发库了。

            通过网上搜索,最后发现QGIS用的比较多,而且是开源的,于是就选择使用QGIS来进行开发了,但QGIS的资料真的是很少,比arcgis还少,没办法,自己研究吧。

            图层的添加,要素的添加,这些都是基本的,baidu一搜一大堆,我这里就不说了。此文主要来说一下如果对图层中的要素进行移动。

    2 开发环境

            Qt 5.12.12+QGIS 3.10+Win11

            编译器选择vs2017(msvc2017_64bit)

    3 添加要素

            首先,我们先在QGIS desktop中导入一张shp图层,如下图:

     代码如下:

    1. void MainWindow::addVectorLayer(const QString& path)
    2. {
    3. QString fileName;
    4. if (path.isEmpty())
    5. {
    6. fileName = QFileDialog::getOpenFileName(this, tr("Open shape file"), "", "*.shp");
    7. if(fileName.isNull())//如果未选择文件则返回
    8. return;
    9. }
    10. else
    11. {
    12. fileName = path;
    13. }
    14. QFileInfo info(fileName);
    15. QString basename = info.baseName();
    16. qDebug()<<"basename:"<
    17. // 创建矢量图层
    18. QgsVectorLayer* vecLayer = new QgsVectorLayer(fileName, basename, "ogr");
    19. if (!vecLayer->isValid())
    20. {
    21. QMessageBox::critical(this, "error", QString("layer is invalid: \n") + fileName);
    22. return;
    23. }
    24. // 缩放至图层区域
    25. m_mapCanvas->setExtent(vecLayer->extent());
    26. mlayers.append(vecLayer);
    27. m_mapCanvas->setLayers(mlayers);
    28. m_mapCanvas->refresh();
    29. // 设置坐标系,坐标系以导入的shp文件为准
    30. vecLayer->setCrs(QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem::EpsgCrsId));
    31. // 设置当前图层
    32. m_mapCanvas->setCurrentLayer(vecLayer);
    33. }

    导入之后运行效果如下:

    4 如何移动要素

            接下来说一下如何移动要素。通过参考QGIS Desktop工具上的工具栏,可以发现要素操作的工具栏,见下图:

  • 相关阅读:
    LVGL 8.2图片缩放及旋转
    毕设 连锁酒店
    Flutter学习-导航和路由
    Google Earth Engine(GEE)——防止影像属性丢失的好方法(copyProperties)
    【无标题】
    jsp基站管理系统servlet开发sqlserver数据库MVC结构java编程计算机网页项目
    rmq事务消息
    阿里云10M公网收费价格表(一年和1个月报价)
    ElasticSearch 创建索引超时(ReadTimeoutError)
    一个被华为/腾讯招聘所提到的PMP证书,在我国大体是个啥情况?
  • 原文地址:https://blog.csdn.net/dinjay/article/details/127898277
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号