库
直接安装
1
| sudo apt install libqgis-dev
|
工程
按照标准流程创建一个MainWindow工程
在pro配置中修改
1 2 3 4 5
| QT += xml network # 这个是qgis库的依赖 # 头文件和库文件 INCLUDEPATH += /usr/include/qgis/
LIBS += -lqgis_core -lqgis_gui -lqgis_server -lqgis_app -lqgis_native -lproj -lgdal
|
代码
mainwindow.h
添加头文件
1 2 3 4 5 6
| #include <QMainWindow> #include <QFileDialog> #include <QMessageBox>
#include "qgsmapcanvas.h" #include "qgsvectorlayer.h"
|
添加成员变量
1 2 3 4
| private: QgsMapCanvas *mapCanvas;
QList<QgsMapLayer *> layers;
|
mainwindow.cpp
在构造函数里面创建画布
1 2 3 4 5 6
| mapCanvas = new QgsMapCanvas(); this->setCentralWidget(mapCanvas);
mapCanvas->setCanvasColor(QColor(255, 255, 255)); mapCanvas->setVisible(true); mapCanvas->enableAntiAliasing(true);
|
在ui中添加一个打开菜单
在对应槽函数里面添加 打开shp文件 功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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();
|
效果
打开OSM地图数据geofabrik网站
随便下载一个shp文件,推荐Antarctica,因为它比较小。
编译运行程序
使用Open菜单选择下载的shp格式文件
选择gis_osm_water_a_free_1.shp