VS配置QGIS二次开发(VS2019+QT5+QGIS3.14)

news2025/2/23 11:00:50

1.1 QGIS软件下载

QGIS软件是基于QT5开发的GIS系统,其易用性及其高效性使其已经成为当下极具竞争力的GIS系统,其占有率足以与Esri的ArcGIS等主流GIS软件分庭抗礼。QGIS软件因其开源特性也使得其广受广大GIS开发者的青睐。

在本次《地理信息系统设计与开发》的第一次课程作业中,笔者将就如何下载使用QGIS软件进行详细的介绍说明。

Step1:首先,我们需要使用搜索引擎进入QGIS的官网,这里笔者测试过,可以在bing搜索或者百度直接输入“QGIS”即可找到相应的网页。其官网界面(2024年9月4日)如图1.1.1所示。

Tips:网址:Spatial without Compromise · QGIS Web Site

图1.1.1 QGIS官网界面

Step2:接下来,可以直接点击“Download”按键,进行下载,点击后会进入到QGIS的捐赠界面(爱心人士可以选择捐赠支持开源传作者),继续点击“Skit it and go to download”即可进入到软件版本下载的选择界面,如图1.1.2所示。

图1.1.2 QGIS软件下载版本选择界面

Step3:这里的选择依据自身电脑的操作系统而定,这里笔者使用的是Windows系统,因此直接点击“Long Term Version for Windows(3.34 LTR)”下载QGIS目前最新的长期支持版本3.34.10即可。

Tips:由于QGIS官网部署在境外的org主机,因此下载速度会较慢。

Step4:下载完成后,会得到一个msi格式的光盘文件,如图1.1.3所示。

图1.1.3 QGIS下载所得光盘格式文件

Step5:接下来,双击安装包进行安装指引操作即可进行相应的软件安装操作。安装完成后会将快捷方式文件夹添加到桌面。如图1.1.4所示。

Tips:这里的操作就是无脑点击下一步即可,即一直点击“next”,当然,安装位置需要根据用户的实际情况来进行相应的调整。

图1.1.4 软件安装位置

进行到这一步,软件的安装操作便已经完成,下一节就QGIS桌面端的操作给出简易的介绍。

1.2 QGIS桌面端软件操作

在上一节中,笔者已就如何下载QGIS给出详细的介绍,本节将就如何使用QGIS给出简易的介绍。

Step1:首先,找到QGIS快捷方式文件夹,打开其中的“QGIS Desktop 3.34.10”即桌面端QGIS,如图1.2.1所示。

图1.2.1 桌面端QGIS

Step2:双击打开对应的桌面端QGIS软件,由于QGIS开发的特性,所以这里首次打开时的界面是英文版本的。这里可以因此点击“Settings”,选择“Options”进入设置。如图1.2.2所示。

图1.2.2 QGIS界面操作

Step3:接下来,需要勾选“Override System Locale”启用语言配置操作,在选择语言为简体中文即可。如图1.2.3所示

图1.2.3 QGIS语言配置操作

Step3:点击确定后,需要重启软件,进行插件的适配操作。再次打开时,即会显示为中文界面,如图1.2.4所示。

图1.2.4 QGIS中文桌面端界面

Step4:这里,可以选择新建一个新工程,接下来便可以进行GIS软件的操作,这里笔者导入了一个武汉市的矢量数据进行测试演示。如图1.2.5所示。

图1.2.5 QGIS打开矢量数据测试

QGIS作为一款成熟的GIS软件,当然还具备其他的功能操作,限于篇幅这里就不一一演示了。在后续的操作中,笔者将介绍的是关于QGIS二次开发的配置操作。

1.3 QGIS二次开发组件下载

Step1:首先需要进行OSGeo4W 安装程序下载,下载地址为:Installation Guide · QGIS Web Site。当然,由于这里下载过程较慢且较为复杂,这里选择使用课程群里已经提供的预先下载安装包,解压缩可以得到对应的配置数据,如图1.3.1所示:

图1.3.1 对应环境

Tips:当然,这里也可以选择通过网络进行安装,这里主要需要安装的是对应的QGIS二次开发环境组件和支持QT5环境。

一直点下一步即可,下图界面需要耗费一些时间。

1.4 在VS中配置QGIS二次开发组件

完成了所需开发环境的下载后,便可以通过VS进行对应的环境的配置了。

Step1:首先,打开vs(笔者这里使用的是VS2019版),接下来进行QT插件的安装。这里首先要安装QT Visual Studio Tools以扩展VS的QT功能开发,即在扩展中搜索QT进行下载,如图1.4.1所示。

图1.4.1 QT扩展安装

Tips:由于VS上的插件提供多来自Github上,因此下载较慢,这里推荐使用清华镜像:

https://mirrors.tuna.tsinghua.edu.cn/qt/archive/vsaddin/3.2.0/?C=M&O=D

Step2:点击下载后,需要关闭VS,此时即会弹出对应的下载提示,进行下载即可,下载完成会进行弹窗提示,如图1.4.2所示。

图1.4.2 QT Visual Studio Tool安装成功提示

Step3:接下来,打开VS新建一个QT Widget Application项目,在对应的QT的选择时,这里选择到此前下载的配置环境中的QT5目录下的bin目录中的qmake,,同时选择为对应的Release版本,如图1.4.3所示。

图1.4.3 配置下载好的QT环境

Tips:这里我们打开对应的QT会发现已经适配好对应的QT版本,如图1.4.4所示。

图1.4.4 对应配置的QT版本显示

Step4:接下来,进行项目的属性配置,这里右键项目“属性”进行项目属性设置。

(1)设置附加包含目录

在项目->属性-> c/c++->常规中,添加“附加包含目录” ,目录为下载的osgeo-4w-qgis-dev的相关库存储路径,需要根据自己存储路径个性化设置。如图1.4.5所示。

图1.4.5 对应附件包含目录配置

  1. D:\QGIS\osgeo4w-qgis-dev\QGIS-ltr\include
  2. D:\ QGIS\osgeo4w-qgis-dev\3rdParty\include
  3. D:\ QGIS\osgeo4w-qgis-dev\Qt5\include
  4. D:\ QGIS\osgeo4w-qgis-dev\Qt5\include\QtCore
  5. D:\ QGIS\osgeo4w-qgis-dev\Qt5\include\QtWidgets
  6. D:\ QGIS\osgeo4w-qgis-dev\Qt5\include\QtXml
  7. D:\ QGIS\osgeo4w-qgis-dev\Qt5\include\QtGui

(2)设置附加库目录

在项目->链接器->常规中,添加“附加库目录”。如图1.4.6所示。

图1.4.6 附件库目录配置

  1. D:\QGIS\osgeo4w-qgis-dev\3rdParty\lib
  2. D:\QGIS\osgeo4w-qgis-dev\QT5\lib
  3. D:\QGIS\osgeo4w-qgis-dev\QGIS-ltr\lib

(3)设置附加依赖项

最后还需要进行附加依赖项的配置,依次在项目->链接器->输入中,添加“附加依赖性”。如图1.4.7所示。

图1.4.7 附加依赖项设置

  1. qgis_core.lib
  2. qgis_app.lib
  3. qgis_gui.lib
  4. Qt5Core.lib
  5. Qt5Gui.lib
  6. Qt5Widgets.lib

(4)其他相关设置

1.设置预处理器定义

在c/c++->预处理器->预处理器定义:“_USE_MATH_DEFINES”。如图1.4.8所示。

图1.4.8 预处理定义配置

2.设置C++语言标准

将C++语言标准设置为ISO C++17标准(/std:c++17)。如图1.4.9所示。

图1.4.9 语言配置

完成上述操作后,VS中的相关配置便已完成,这里给出一个简单应用QGIS二次开发组件打开栅格数据的方法进行测试。即将main函数中的代码替换为如下所示代码:

#include <QApplication>

#include <QmainWindow>

#include <qgsmapcanvas.h>

#include <qgsrasterlayer.h>

#include <qgsmaptoolpan.h>

//整数类型主函数(整数类型统计参数个数,字符类型指针数组指向字符串参数)

int main(int argc, char** argv)

{

        //QApplication有且仅有一个应用程序类的对象 

        QApplication app(argc, argv);

        //继承于QWidget,QWidget是一个窗口基类,main_window是一个窗口类 

        QMainWindow main_window;



        //创建画布 

        QgsMapCanvas map_canvas;



        //添加本地影像路径

        QgsRasterLayer layer(R"(C:\Users\33439\Desktop\1\1.tif)");//这里需要应用自己的栅格文件路径

        //设置图层集合

        map_canvas.setLayers({ &layer });

        //设置图层范围

        map_canvas.setExtent(layer.extent());

        //刷新画布 

        map_canvas.refresh();





        QgsMapToolPan map_tool_pan(&map_canvas);

        map_canvas.setMapTool(&map_tool_pan);



        //设置画布居中显示

        main_window.setCentralWidget(&map_canvas);

        //显示窗口(默认是隐藏模式)

        main_window.show();

        //等待用户操作

        return app.exec();

}

当配置成功时,会正确打开对应栅格图像,笔者这里打开的时武汉地区的栅格图像,成功打开时如图1.4.10所示。

图1.4.10 成功打开视图

1.5配置中常见的问题

1.可能存在的无法打开源文件“QDomDocument”,如图1.5.1所示。

图1.5.1 无法打开源文件“QDomDocument”

解决方法:这是由于Qt Modules未包含相应的QXML扩展。右击工程,选择【QT】,然后接着点击【Qt Project Settings】,在对应的【Qt Modules】中勾选上【QXML】并选择应用即可,如图1.5.2所示。

图1.5.2 添加QXML扩展

2.由于找不到对应的dll而出现错误,如图1.5.3所示。

图1.5.3找不到对应的dll

解决方法:将相关dll文件放在项目.exe目录下

将图1.5.4对应的下列bin中所有的文件全部复制到此目录下:

图1.5.4 对应文件夹

  1. D:\QGIS\osgeo4w-qgis-dev\Qt5\bin
  2. D:\ QGIS\osgeo4w-qgis-dev\3rdParty\bin
  3. D:\ QGIS\osgeo4w-qgis-dev\qgis-ltr\bin

3.若出现如图1.5.5所示错误

图1.5.5 对应QT错误

解决方法:则将下列文件夹复制到.exe目录下(一定要复制到含有工程的exe目录下)。

D:\osgeo4w-qgis-dev\QT5\plugins\platforms。如图1.5.6所示。

图1.5.6 拖到对应框栏

4.若出现如图1.5.7所示错误。

图1.5.7 对应打开错误

解决方法:在项目->属性->配置属性->VC++目录->库目录里进行添加lib文件目录。如图1.5.8所示。

图1.5.8 对应lib调整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2105333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

风趣图解LLMs RAG的15种设计模式-第二课

全部用的是Midjourney连续性一致性绘图画成

前端报文加密

前端加密功能 前端提供简单的AES对称加密算法&#xff0c;注意key 和后端网关配置相同&#xff0c;这里打包混淆后&#xff0c;相对安全。 &#xff08;lun-ui\src\store\modules\user.js、base-gateway-dev.yml&#xff09; 后端解密功能 使用hutool提供的工具类进行解密pub…

鸿蒙开发基础知识 第二篇【页面布局】

鸿蒙开发基础知识 第二篇 1. 两端对齐 demo 2.交叉轴对齐方式 demo 3.列表项布局 demo 4.自适应伸缩布局 demo 自行练习 5.弹性布局 flex 换行布局 demo 案例 更多鸿蒙技能知识与案例 我已经整理到下面了 ↓↓↓ 快去看那看吧&#xff01; 点击下方↓↓↓↓↓↓↓…

【C++】类和对象(三)再探构造函数|static成员函数|友元函数|内部类|匿名对象|对象拷贝时的编译优化

欢迎来到HarperLee的学习笔记&#xff01; 一、再探构造函数 初始化列表&#xff1a;构造函数初始化的第二种方式&#xff08;第一种是使用函数体内赋值&#xff09;。使用方式&#xff1a;以一个冒号:开始&#xff0c;用逗号,分隔数据成员列表&#xff0c;每个成员变量后面跟…

Linux 命令行/bash脚本 批量创建文件

目录 一. 命令行1.1 需求1.2 代码 二. bash脚本2.1 需求2.2 前置知识2.3 无进度条版本2.3.1 知识点2.3.2 代码2.3.3 效果 2.4 有进度条版本2.4.1 代码2.4.2 效果 一. 命令行 1.1 需求 在当目录下生成指定年份的文件&#xff0c;要求从生成1月到12月&#xff0c;每个月份的文件…

如何使用 update-alternatives 切换软件版本 ?

Debian 中的 update-alternatives 命令是系统上多版本软件管理的利器。它允许您轻松地在同一程序的不同版本之间切换。假设您在单个系统上安装了多个 Java 版本或 Python 版本&#xff0c;在 update-alternatives 的帮助下&#xff0c;您可以将程序的任何版本设置为系统的默认版…

SAP MM模块与FI模块集成之科目配置

1. 定义评估范围 OMWD 评估范围设置在工厂层&#xff0c;那么系统自动建立和工厂具有相同ID的评估范围 IMG&#xff1a;物料管理>评估和科目设置>科目确定>无向导的科目确定>将评估范围群集分组 提示&#xff1a;评估层级——评估分组代码——评估范围。 2. OBYC…

【Unity案例】搭建射击系统与UI

上期将基础的移动系统搭建完毕后就可以开始搭建更加复杂的系统部分了 前排提示&#xff0c;由于一开始仅思考如何完成操作相关功能&#xff0c;以至于到后面重构稍微有些困难&#xff0c;继续写下去恐成屎山&#xff0c;故在搭完射击和武器UI后不再继续泛化到敌人和敌人状态机…

SF-HCI-SAP问题收集18:员工上级经理无效

导读 INTRODUCTION CPI集成&#xff1a;这几天一直在处理SuccessFactors与SAP集成的问题&#xff0c;因为没有给deubg权限&#xff0c;排查比较困难&#xff0c;这次讲解的案例就是一个比较难发现的案例&#xff0c;在同步员工主数据的时候提示&#xff0c;经历在某个区间无效…

前端原生Js批量修改页面元素属性的2个方法

前言 嘿&#xff0c;朋友们&#xff01;今天咱们来聊聊一个前端原生 JS 的小技巧。 今天在做一个 RPA 机器人时&#xff0c;碰到一个业务需求&#xff0c;网页上有两个日期控件元素&#xff0c;它们的输入框有 readonly 属性&#xff0c;只能通过选择的方式来输入日期&#x…

数据库和MySQL

ER图 实体&#xff08;矩形&#xff09;&#xff1a;通常是现实世界的业务对象&#xff0c;当然使用一些逻辑对象也可以。 属性&#xff08;椭圆&#xff09;&#xff1a;实体拥有的属性。 联系&#xff08;菱形&#xff09;&#xff1a;实体与实体之间的关系。 函数依赖 函数依…

idea 编译断点运行 tomcat 10.1.28 源码

idea 编译运行 tomcat 10.1.28 源码 1. 所需资源 tomcat 10.1.28 zulu JDK 22 maven idea (支持 JDK 22) 2. Idea 导入项目 10.1.28.tar.gz 解压到指定文件夹 如 ~\tomcat-source\tomcat-10.1.28 这里等待一段时间&#xff0c;生成 ~\tomcat-source\tomcat-10.1.28\.idea 文…

双向链表

双向链表是一种基本的数据结构&#xff0c;它与单向链表的主要区别在于节点的连接方式。下面我将分别描述双向链表的特点以及它与单向链表的区别。 双向链表的特点&#xff1a; 节点结构&#xff1a;在双向链表中&#xff0c;每个节点包含三个部分&#xff1a;数据域、指向前一…

WordPress自适应美图网站整站打包源码

直接服务器整站源码数据库打包了&#xff0c;恢复一下就可以直接投入使用。保证好用易用&#xff0c;无需独立服务器就可以使用。 强调一下&#xff0c;我这个和其他地方的不一样、不一样、不一样。具体的看下面的说明。 现在网络上同样的资源包都是用的加密带后门的主题&…

[C++11#47] (四) function包装器 | bind 函数包装器 | 结合使用

目录 一. function包装器 1. 在题解上 2.bind 绑定 1.调整参数顺序 2.对类中函数的包装方法 一. function包装器 function包装器也叫作适配器。C中的function本质是一个类模板&#xff0c;也是一个包装器。 那么我们来看看&#xff0c;我们为什么需要function呢&#xff1…

[数据集][目标检测]机油泄漏检测数据集VOC+YOLO格式43张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;43 标注数量(xml文件个数)&#xff1a;43 标注数量(txt文件个数)&#xff1a;43 标注类别数…

基于SSM的献血管理系统设计与实现(论文+源码)_kaic

摘 要 近年来&#xff0c;随着科技的飞速发展&#xff0c;在全球经济一体化的大背景下&#xff0c;我们面临着巨大的挑战&#xff0c;互联网技术将进一步提高社会综合发展的效率和速度&#xff0c;而且也会涉及到各个领域。献血管理系统在网络背景下有着无法忽视的作用&#x…

Xilinx FPGA 原语解析(三):OBUFDS差分输出缓冲器(示例源码及仿真)

目录 前言&#xff1a; 一、原语使用说明 二、原语实例化代码模版 三、使用示例 1.设计文件代码 2.仿真文件代码 3.仿真结果 前言&#xff1a; 主要参考 Xilinx 官方文档《Xilinx 7 Series FPGA and Zynq-7000 All Programmable SoC Libraries Guide for HDL Designs》…

网络工程师学习笔记——局域网和城域网(二)

快速以太网 快速以太网&#xff08;&#xff18;&#xff10;&#xff12;.&#xff13;&#xff55; &#xff11;&#xff10;&#xff10;&#xff2d;&#xff42;&#xff50;&#xff53;&#xff09; 其中多模光纤的芯线直径为&#xff16;&#xff12;.&#xff15;…

跟李沐学AI:循环神经网络RNN

循环神经网络 循环神经网络&#xff08;recurrent neural networks&#xff0c;RNNs&#xff09; 是具有隐状态的神经网络。RNN 具有隐状态&#xff08;hidden state&#xff09;的原因在于它需要一种机制来存储之前输入的信息&#xff0c;以便于处理当前输入时能够考虑之前的…