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 下载