2020-11-03-qgis环境搭建与地图显示

286 阅读1分钟

一、环境搭建

参考大神文章花一下午时间搭建了二次开发环境,现在就环境搭建的过程和中间遇到的问题做个记录

1.1、下载osgeo4w(www.qgis.org/en/site/for…)

我下载的是网络版64位: image.png

1.2.打开安装包,选择高级安装,一直下一步,我的放在了d盘;

image.png

1.3.下载仓库选择武大的(gwmodel.whu.edu.cn/mirrors/osg…

image.png

1.4.下载的包

Qgis相关的选择: image.png qt选择 image.png

然后等待完成,只要选择了武大的镜像,下载速度还是很快的

1.5、新建一个c++空项目,右键属性配置

image.png 包含目录内容:image.png 库目录:image.png 链接器->附加依赖项

Qt5Core.lib
Qt5Gui.lib
Qt5Widgets.lib
qgis_core.lib
qgis_gui.lib
qgis_app.lib

image.png image.png 调试环境配置:

PATH=D:\OSGeo4W64\bin;D:\OSGeo4W64\apps\qgis-ltr\bin;D:\OSGeo4W64\apps\Qt5\bin

image.png 在生成的release目录下,新建qt.conf文件,目的是运行时用到的插件会在这个文件夹下寻找,找不到会报错,里面内容:

[Paths]
Plugins=D://OSGeo4W/apps/Qt5/plugins

image.png

二、显示一个shp

2.1、新建main.cpp,内容如下

#define _USE_MATH_DEFINES
#include <cmath>

#include <qgsapplication.h>
#include <qgsproviderregistry.h>
#include <qgsmapcanvas.h>
#include <qgsvectorlayer.h>
#include <qgsproject.h>

int main(int argc, char *argv[]) {
	// 创建 QgsApplication 实例
	QgsApplication app(argc, argv, true);

	// 设置并检查数据插件目录
	QgsProviderRegistry::instance("D:/OSGeo4W64/apps/qgis-ltr/plugins");

	// 控制台打印已载入的插件目录
	qDebug() << "QGIS data providers loaded:" << QgsProviderRegistry::instance()->providerList() << endl;

	// 设置 GDAL 数据目录环境变量
	qputenv("GDAL_DATA", "D:/OSGeo4W64/share/gdal");

	// 创建 QgsCanvas 画布实例
	QgsMapCanvas c;

	// 从磁盘 .shp 文件创建矢量图层
	QgsVectorLayer* pVectorLayer = new QgsVectorLayer(u8"F:/草原类型图/青海省草原类型图_xa80.shp", u8"市级行政区");

	// 确认图层是否创建成功
	qDebug() << "Is layer valid:" << pVectorLayer->isValid();

	// 将图层添加到画布上
	c.setLayers(QList<QgsMapLayer*>() << pVectorLayer);

	// 设置画布窗体标题并显示画布
	// 画布本身是 QWidget 的子类,因此可以承担 QWidget 的所有操作
	c.setWindowTitle(u8"QGIS 二次开发:画布");
	c.show();

	// 缩放到图层的空间范围
	c.zoomToFullExtent();

	// 启动 QgsApplication 实例
	return app.exec();
}

结果:image.png

三、遇到的问题

搭建环境用了一下午时间,遇到了一些问题,幸亏有qq群的大佬帮忙才能解决,还有一些是自己解决的,特此记录 1.按照大神的教程安装了qgis桌面程序和开发包,在apps->qt5->include下面只有一个文件夹,需要按照我1.4中的步骤安装qt image.png