QGIS二次开发环境搭建

1、下载:https://www.qgis.org/en/site/forusers/download.html#
在这里插入图片描述
2、安装

安装前提: win10 64 Qt5.12.3已经安装完成
2.1 双击exe,得到如下界面
在这里插入图片描述
2.2 点击 Next,点击 I agree得到如下界面
在这里插入图片描述
点击 next 出现如下界面 全选
在这里插入图片描述
点击Install ,知道完成安装。
安装完成,我们查看安装路径下内容C:\Qt\QGIS_3_6_3\apps\qgis 目录下并没有lib和include 文件夹,那是我上面只安装了运行程序。

3、打开 文件夹 C:\Qt\QGIS_3_6_3 找到 OSGeo4W.bat ,双击运行,输入setup。
在这里插入图片描述
回车
在这里插入图片描述

选择第三个 Advanced Install 点击 下一步
在这里插入图片描述
点击下一步
在这里插入图片描述
点击下一步
在这里插入图片描述
点击下一步
在这里插入图片描述
点击 下一步
在这里插入图片描述
选择 第二个 点击下一步
在这里插入图片描述
输入QGIS
在这里插入图片描述
安装所有与3.6.3-1 相关的
在这里插入图片描述
点击 下一步
在这里插入图片描述
点击 下一步
在这里插入图片描述
等待安装
在这里插入图片描述
安装完成后 点击确定

查看安装目录
在这里插入图片描述
4、 关于测试工程的代码,如下,非本人原创,参考其他博客得来。

首先,main.cpp

#include "gisTest2.h"
#include <qgsapplication.h>

int main(int argc, char *argv[])
{

    QgsApplication a(argc, argv, true);
    QgsApplication::setPrefixPath("C:/OSGeo4W/apps/qgis", true);
    QgsApplication::initQgis();    //初始化QGIS应用
    gisTest2 w;    //创建一个窗体,类似于Qt
    w.show();

    return a.exec();
}
 

gisTest2.cpp代码如下:

#include "gisTest2.h"
#include <qmenubar.h>
#include <qmessagebox.h>
#include <qfiledialog.h>
#include <qgsvectorlayer.h>

gisTest2::gisTest2(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(600, 400);

    // create the menus and then add the actions to them.
    fileMenu = this->menuBar()->addMenu("File");
    openFileAction = new QAction("Open", this);
    this->connect(openFileAction, SIGNAL(triggered(bool)), this, SLOT(on_openFileAction_triggered()));
    fileMenu->addAction(openFileAction);

    // initialize the map canvas
    mapCanvas = new QgsMapCanvas();
    this->setCentralWidget(mapCanvas);

    mapCanvas->setCanvasColor(QColor(255, 255, 255));
    mapCanvas->setVisible(true);
    mapCanvas->enableAntiAliasing(true);

}

void gisTest2::on_openFileAction_triggered() {
    addVectorLayer();
}

void gisTest2::addVectorLayer()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open shape file"), "", "*.shp");
    QStringList temp = fileName.split('/');
    QString basename = temp.at(temp.size() - 1);
    QgsVectorLayer* vecLayer = new QgsVectorLayer(fileName, basename, "ogr");

    if (!vecLayer->isValid())
    {
        QMessageBox::critical(this, "error", QString("layer is invalid: \n") + fileName);
        return;
    }
    mapCanvas->setExtent(vecLayer->extent());
    layers.append(vecLayer);
    mapCanvas->setLayers(layers);
    mapCanvas->refresh();
}

gisTest2.h代码

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_gisTest2.h"
#include <qmenu.h>
#include <qaction.h>
#include <qgsmapcanvas.h>


class gisTest2 : public QMainWindow
{
    Q_OBJECT

public:
    gisTest2(QWidget *parent = Q_NULLPTR);

private:
    // create the menus and then add the actions to them.
    QMenu *fileMenu;
    QAction *openFileAction;

    //map canvas
    QgsMapCanvas *mapCanvas;
    QList<QgsMapLayer *> layers;

    public slots:
    void on_openFileAction_triggered();
    //

public:
    void addVectorLayer();

};

5、工程项目编译或运行时,提示很多库找不到

   将 C:\OSGeo4W\apps\qgis\bin

      C:\OSGeo4W\bin  

  目录下dll文件拷贝到工程目录下,编译搞定,当然运行还是报错,根据错误提示将

   C:\OSGeo4W\apps\Qt5\bin  目录下的dll库拷贝,工程目录下,一直到成功编译运行成功为止。

 运行结果如下:

关于shp 文件的数据,大家可以到  国家地理信息公共服务平台 http://www.tianditu.gov.cn/index.html 下载
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值