QGIS-创建QGIS项目
文章目录
- 前言
- 一、创建项目
- 二、代码编写
- 1.引入库
- 2.绘制界面
- 3.编写代码
- 1.初始化画布
- 2.打开栅格数据
- 2.打开矢量数据
- 总结
前言
本文意在整理学习资料,以备不时之需。如有谬误,欢迎指正。
安装环境:Windows10+VS2022+QT5.14.2
VS敲代码及环境配置还是有一定优势的,其环境配置更直接更简单。
本次采用VS2022进行编写(已安装QT插件)安装VS+qt环境
参考文章:http://t.csdn.cn/04U0g
一、创建项目
创建一个SampleLabelTool
的项目
release
的版本就好,有些debug后会出错。
编译器版本 5.14.2_msvc2017_64
- 包含目录
D:\QT\OSGeo4W\include
D:\QT\OSGeo4W\apps\qgis-ltr\include
D:\QT\OSGeo4W\apps\Qt5\include
D:\QT\OSGeo4W\apps\Qt5\include\QtGui
D:\QT\OSGeo4W\apps\Qt5\include\QtXml
D:\QT\OSGeo4W\apps\Qt5\include\QtWidgets
D:\QT\OSGeo4W\apps\Qt5\include\QtCore
- 库目录
D:\QT\OSGeo4W\apps\qgis-ltr\lib
D:\QT\OSGeo4W\apps\Qt5\lib
- 附加依赖项
qgis_core.lib
qgis_app.lib
qgis_gui.lib
Qt5Core.lib
Qt5Gui.lib
Qt5Widgets.lib
当后期需要添加一些模块的时候,记得添加相应的文件路径(包含目录、附加依赖项)!!!
- 预处理器
_USE_MATH_DEFINES
- C++语言标准
ISO C++ 17标准
复制以下路径下的dll到项目目录
D:\QT\OSGeo4W\bin
D:\QT\OSGeo4W\apps\Qt5\bin
D:\QT\OSGeo4W\apps\qgis-ltr\bin
复制D:\QT\OSGeo4W\apps\Qt5\plugins
下面的platforms
文件夹到文件生成的exe目录下(如:D:\VisualStudio\projects\SampleLabelTool2\x64\Release
)
二、代码编写
1.引入库
代码如下(示例):
#include "SampleLabelTool.h"
#include <QtWidgets/QApplication>
#include<QgsApplication.h>int main(int argc, char *argv[])
{//初始化QGisQgsApplication a(argc, argv, true);QgsApplication::setPrefixPath("D:/QT/OSGeo4W/apps/qgis-ltr", true);QgsApplication::initQgis();SampleLabelTool w;w.show();return a.exec();
}
注:到此处可以尝试运行监测环境配置
2.绘制界面
在VS中直接用Qt Designer打开ui。
若打开会闪退,文件打开不稳定。
扩展-》Qt VS Tools->create pro
创建pro文件结束后,可以在文件夹直接以QT编译器打开
如上图所示,拖一个widget到窗体中,并使窗口右键布局设置为栅格布局gridLayout(撑满窗体)
然后将widget更名为widget_mapCanvas
3.编写代码
1.初始化画布
在SampleLabelTool.h中添加#include <QgsMapCanvas.h>
void SampleLabelTool::initMapCanvas(QWidget* parent)
{mapCanvas = new QgsMapCanvas(parent);//创建画布QGridLayout* pLayout = new QGridLayout(parent);//设置画布窗口为栅格布局pLayout->addWidget(mapCanvas, 0, 0, 1, 1);//添加画布到栅格布局中pLayout->setMargin(0);//设置栅格布局的空隙为0QgsEditorWidgetRegistry a;a.initEditors(mapCanvas);//注册画布
}
2.打开栅格数据
void SampleLabelTool::addRaster(QString rasterPath, QString basename)
{qDebug() << "rasterPath :" << rasterPath;qDebug() << "basename :" << basename;QgsRasterLayer* rasterLayer = new QgsRasterLayer(rasterPath, basename, "gdal");qDebug() << "isValid :" << rasterLayer->isValid();if (!rasterLayer->isValid()) {QMessageBox::critical(this, "error", "open raster file error");return;}QgsProject::instance()->addMapLayer(rasterLayer);mapCanvasLayerSet->append(rasterLayer);mapCanvas->setExtent(rasterLayer->extent());mapCanvas->setLayers(*mapCanvasLayerSet);mapCanvas->setVisible(true);mapCanvas->freeze(false);mapCanvas->refresh();
}
2.打开矢量数据
void SampleLabelTool::addVector(QString vectorPath, QString basename)
{qDebug() << "vectorPath :" << vectorPath;qDebug() << "basename :" << basename;QgsVectorLayer* vecLayer = new QgsVectorLayer(vectorPath, basename, "ogr");if (!vecLayer->isValid()) {QMessageBox::critical(this, "error", "open shape file error");return;}QgsProject::instance()->addMapLayer(vecLayer);mapCanvasLayerSet->append(vecLayer);mapCanvas->setExtent(vecLayer->extent());mapCanvas->setLayers(*mapCanvasLayerSet);mapCanvas->setVisible(true);mapCanvas->freeze(false);mapCanvas->refresh();
}
全部代码
总结
实现QGIS二次开发的环境配置,以及简单的代码编写
QGIS-创建QGIS项目相关推荐
- Linux qgis 编译,QGIS简介与源代码编译
QGIS(http://qgis.org)是一个集成了很多个开源的空间数据处理库的桌面GIS软件,支持Python脚本.QGIS基于QT和SIP进行开发,支持Windows\Linux\MacOS等操 ...
- Eclipse+Maven创建web项目
有时候我们想用eclipse+maven创建web项目,怎么操作呢,下面我来给大家来分享一下方法 所需工具 已经安装了maven插件的elipse 步骤 1.打开eclipse,右键new--othe ...
- Java开发环境的搭建以及使用eclipse从头一步步创建java项目
原文:出自本人的Linux博客http://blog.csdn.net/unix21/article/details/18813173 一.Java 开发环境的搭建 这里主要说windows环境下怎么 ...
- 使用SVN+Axure RP 8.0创建团队项目
一.使用到的工具: VisualSVN Server --SVN服务器:https://www.visualsvn.com/server/ Axure RP 8.0 :http://www.down ...
- 使用idea创建springboot项目并打成war包发布到weblogic上...
部署tomcat也是类似的,但是需要注意项目配置的路径,或者直接将项目放到webapp的ROOT目录下. 使用工具:intelliJ IDEA2016.3, jdk1.8 ,weblogic12 一 ...
- 介绍一个懒人创建springmvc项目的方法(二)
PS: 我是一个懒人,我懒得搭建项目连pom都不想去找,连web.xml都不想配置.所以就会想着找一些简便的办法,来适应我这种懒人. ---------------------------- 本人介绍 ...
- 创建Django项目和模型(创建工程、子应用、设置pycharm环境、使用Django进行数据库开发的步骤)
1.创建Django项目 文档:Writing your first Django app, part 1 | Django documentation | Django 步骤 创建Django项目 ...
- Eclipse 创建 Java 项目概述
Eclipse 是一个开放源代码的.基于 Java 的可扩展开发平台.Eclipse 是 Java 的集成开发环境(IDE),当然 Eclipse 也可以作为其他开发语言的集成开发环境,如C,C++, ...
- 创建maven项目但是总是报错
在创建maven项目的时候总是报错,也不知道为什么,是不是我本地的maven版本是太低了,还是其他的什么原因,那么我还是重新下载一个maven吧,怎么下载: 我们可以从这个地址去下载: http:// ...
- IDEA创建maven项目报错解决:Failed to create a Maven project: 'C:/Users/../IdeaProjects/../pom.xml' already e
此文首发于我的个人博客:IDEA创建maven项目报错解决 Failed to create a Maven project 'C:/Users/-/IdeaProjects/-/pom.xml' a ...
最新文章
- 京东JIMI用户未来意图预测技术揭秘
- 论优秀的码农,学会这5点!
- SQL Server Integration Services(SSIS)中的脚本任务调试
- 【超简单已实现】CSDN实现点击跳转到指定段落
- 中国开启开源新纪元!
- Github 再现失误:部分用户密码明文暴漏
- python提取字符串中单词_从字符串中提取单词,删除标点符号并在Python中返回带有分隔单词的列表...
- 点击场景中的物件无法定位到Hierarchy
- Python爬取安居客租房数据,设置排除自己条件以外的数据
- 高效制作期刊论文三线表格教程
- css在线代码生成工具汇总
- PS人像修图,通道磨皮、高低频磨皮、滤镜磨皮、人像精修
- Mono.Cecil简介与示例
- 李雅普诺夫理论基础(1)
- 娱乐小游戏助力神器威信小程序源码下载多种游戏选择玩法多种
- python可以剪辑视频吗_你知道吗?Python也可以剪辑视频!
- 复杂的世界 简单的规律 —— 2021年诺贝尔物理奖科学背景介绍及解读
- 为你精选 · 地产行业数字化转型攻略
- 2048游戏代码java总结_软件工程——Java版2048游戏学习报告
- 【渝粤题库】广东开放大学 建筑测量 形成性考核