qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)

这篇具有很好参考价值的文章主要介绍了qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在qt开发过程中可能要导入自定义格式的图层地图,那么可以把这些数据导入qgis然后导出为shp格式文件,然后下载qgis源码,在qt项目中配置环境变量导入qgis有关的头文件,然后再引入shp数据格式的地图。

qgis处理数据

QGIS安装

QGIS安装

QGIS导入数据

qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)
然后保存点击Layer->save as导出为shp格式文件
qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)

QT中的QGIS二次开发(编译的是release版本的)

参考QtCreator进行QGis二次开发(1)

QGIS源码包的安装我是参考VS2019+QT5.15.2+QGIS二次开发环境搭建里面安装QGIS的方法来的。安装好了之后,只创建了一个pro文件和一个cpp文件。

程序

  • main.cpp
#include <QMainWindow>
#include <qgsapplication.h>
#include "qgsproject.h"
#include <QMainWindow>
#include <QFileDialog>
#include <QMessageBox>
#include <QGridLayout>
//QGIS
#include "qgsproject.h"
#include <qgsmaptooldigitizefeature.h>
#include <qgsadvanceddigitizingdockwidget.h>
#include <qgssymbol.h>
#include <qgsmessagebar.h>
//QGIS include
#include "qgsmapcanvas.h"
#include "qgsmaplayer.h"
#include  <qgsmaptoolcapture.h>
#include<QMouseEvent>
#include <QMainWindow>
int main(int argc, char *argv[])
{
    QgsApplication app(argc, argv, true);
    QgsApplication::initQgis();

    // 加载.shp文件,地址为shp格式文件存放地址
    QString filePath = "C:/xxx/xxx.shp";
    QgsVectorLayer* layer = new QgsVectorLayer(filePath, "Layer Name", "ogr");

    if (!layer->isValid())
    {
        qDebug() <<"error";
        return -1;
    }

    // 添加图层到地图窗口
    QgsProject::instance()->addMapLayer(layer);

    // 显示地图窗口
    QgsMapCanvas* canvas = new QgsMapCanvas();
    canvas->setCanvasColor(QColor(255, 255, 255));
    canvas->setExtent(layer->extent());
    canvas->enableAntiAliasing(true);
    //canvas->setMapUnits(QgsUnitTypes::Meters);
    canvas->setLayers(QgsProject::instance()->mapLayers().values());
    canvas->show();

    // 进入Qt事件循环
    return app.exec();
}
  • .pro
QT       += core gui xml

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

DEFINES += QT_DEPRECATED_WARNINGS
DEFINES += _USE_MATH_DEFINES
# 这里需要改成你的OSGeo4W的地址
SOURCES += \
    main.cpp
INCLUDEPATH += "D:\OSGeo4W\include"
INCLUDEPATH +="D:\OSGeo4W\apps\qgis-ltr\include"
INCLUDEPATH +="D:\OSGeo4W\apps\Qt5\include"
LIBS += -L"D:\OSGeo4W\apps\qgis-ltr\lib" -lqgis_core -lqgis_gui

unix{
DEFINES += CORE_EXPORT=
DEFINES += GUI_EXPORT=
}
!unix{
DEFINES += CORE_EXPORT=__declspec(dllimport)
DEFINES += GUI_EXPORT=__declspec(dllimport)
}
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

环境配置

项目->Build Enviroment中

INCLUDE

qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)

LIB

qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)

Path

qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)

PROJ_LIB

新增一个变量叫做PROJ_LIB
qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)

拷贝dll等相关库文件

这一步非常重要!
在用release版本的编译之后,会出现一个编译的目录,叫做buid-xxx(你的项目名称)-Desktop_Qt_5_15_2_MSVC2019_64bit-Release,里面有一个文件夹release,进入这个文件夹,我们暂时把这个文件夹里面叫做exe目录

我的OSGeo4W源码包安装在D盘

  1. 拷贝D:\OSGeo4W\apps\Qt5\bin 目录下全部dll到exe目录下。大约300多MB。QT相关库。
  2. 拷贝D:\OSGeo4W\apps\Qt5\plugins 目录下的platforms目录到 exe目录下plugins目录里。Qt插件库。
  3. 拷贝D:\OSGeo4W\apps\qgis-ltr\bin 目录下全部文件考到exe目录下。Qgis相关库
  4. 拷贝D:\OSGeo4W\bin 目录下全部dll文件和gdalplugins目录考到exe目录下。GDAL、OSGEO相关库。

如何找到gdalplugins,在文件夹右上角搜索 。选择其中一个。
qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)文章来源地址https://www.toymoban.com/news/detail-453114.html

  1. 把D:\OSGeo4W\apps\qgis-ltr\plugins目录下全部文件考到exe同级plugins目录下,该目录下的dll是各种文件的驱动程序,如果缺少则无法打开文件。Qgis插件库。
  2. 拷贝D:\OSGeo4W\apps\gdal\share中gdal目录到exe同级的share目录下。这个目录包含了GDAL_DATA中的辅助文件,在代码中需要注册GDAL_DATA的环境变量到这个目录。
  3. 在exe目录下新建一个qt.conf文件,填写如下内容qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)
  4. 上面配置好了以后,在Release模式下重新生成exe
  5. 运行exe,然后就可以看到窗口了。

到了这里,关于qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QGIS开发五:VS使用QT插件创建UI界面

    前面我们说了在创建项目时创建的是一个空项目,即不使用 Qt 提供的综合开发套件 Qt Creator,也不使用 Qt Visual Studio Tools 这类工具。 但是后面发现,如果我想要有更加满意的界面布局,还是要自己写一个UI文件,如果不使用QT插件,在VS中导入自己的UI文件编译起来不是那么容

    2024年02月13日
    浏览(44)
  • QGIS3.28的二次开发一:编译工程

    更新:最近写了个3.18.3版本的编译教程,没有出现任何问题。 QGIS3.18编译教程_程序员班长的博客-CSDN博客 环境:VS2019+OSGeo4W+CMake_3.26+Cygwin64+QGIS_3.28 注意:一定要按照步骤顺序来! VS2019下载链接 https://my.visualstudio.com/Downloads?q=visual%20studio%202019wt.mc_id=o~msft~vscom~older-downloads 下载完

    2024年02月15日
    浏览(34)
  • QGIS二次开发:集成二维CAD控件MxDraw

    本文记录在QGIS中集成MxDraw控件的方法。 参见笔者博文“FreeCAD二次开发:集成二维CAD控件MxDraw”所述的安装方法。 参见笔者博文\\\"Windows 10下编译安装QGIS\\\"所述的编译安装方法。 按照QGIS的管理,Qt ui文件可放到src/ui目录及其子目录下。因此,可将MxDrawView.ui拷贝到src/ui/gd目录下,

    2024年02月15日
    浏览(26)
  • Ubuntu 22.04 配置 QGIS二次开发环境

    源码地址: https://github.com/qgis/QGIS/releases QGIS 官方指导文档地址: https://github.com/qgis/QGIS/blob/release-3_26/INSTALL.md(此处为3.26的指导文档,可以自行修改查看) sudo apt-get install bison ca-certificates ccache cmake cmake-curses-gui dh-python doxygen expect flex flip gdal-bin git graphviz grass-dev libexiv2-dev l

    2024年02月16日
    浏览(39)
  • QGIS3.28的二次开发九:添加矢量要素

    对矢量要素的编辑是 GIS 软件很重要的功能点之一,也是最难实现的功能点之一。编辑矢量要素涉及到很多方面的考虑,包括且不限于矢量要素的几何类型,拓扑关系,构成要素的节点的增删改,编辑会话 (session) 的启动、回溯和提交,要素属性的增删改等。本文不会也不可能

    2024年02月12日
    浏览(31)
  • 【ArcGIS Pro二次开发】(65):进出平衡SHP转TXT、TXT转SHP

    最近一个小伙伴提了这么一个需求,需要把TXT和SHP进行互转。 这种TXT文件其实遇到了好几个版本,都有一点小差异。之前已经做过一个TXT转SHP的工具,但好像不适用。于是针对这个版本,做了互转的2个工具。   如上图所示,在【数据处理】组—【TXT相关】面板下,点击【进

    2024年02月10日
    浏览(29)
  • 前端使用QGIS工具生成地图

    1.1 查找 json 数据的两个网址(个人常用) 1.1.1 DataV.GeoAtlas 网站 DataV.GeoAtlas 这个网站不能具体到县内包含的城镇分化,但是对于县级以上的地图数据,使用起来很方便。 1.1.2 POI数据 网站 POI数据 这个网站是我在做县级具体分布 json 数据时找到的,据我使用的过程看,好像没有

    2024年02月22日
    浏览(28)
  • 【ArcGIS Pro二次开发】(17):打开GDB、SHP、CAD等各种数据

    1、打开表格【Table】 2、打开要素类【FeatureClass】 3、以表格的形式打开一个要素类 这里虽然是以表格的形式打开,但是实际上它仍然是一个要素类,可以自由转换格式。 4、打开要素数据集【FeatureDataset】 需要注意的是,打开shp文件,可以带【.shp】的后缀,也可以不加。 如

    2023年04月21日
    浏览(52)
  • Qt中QSS文件的导入与使用-书写格式(笔记)

    想要美化Qt界面,就需要手动设定控件的qss样式 如果是直接在cpp文件中设定样式,则使用setStyleSheet(“xxx”)函数,但控件一多,你的代码界面就会变成这样 为了方便源码的阅读,这时要么考虑使用宏定义设定重复的qss,要么考虑使用qss文件 QSS文件加载 QSS文件书写格式 qss文件

    2024年02月10日
    浏览(33)
  • Qt下开发基于QGIS的应用程序

    由于有在背景地图上进行动态轨迹(曲线)显示的需要,故采用Qt+QGIS的方案! Qt5.12.12,VS2015编译器,QGIS3.10.1。 在配置之前,电脑是新装机的系统,没有任何相关软件版本。 在Qt官网(https://download.qt.io/)或国内镜像网站(https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt)或网络搜索

    2024年02月14日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包