Qgis 基于Qt环境下的开发:第二节《添加要素-点》

上一节讲了添加矢量图层,接下来我们来在矢量图层上添加我们的点要素.
``

include "mainwindow.h"

include "ui_mainwindow.h"

include <qgsmapcanvas.h>

include <qgsvectorlayer.h>

include

include <qgssymbol.h>

include <qgssymbollayer.h>

include <qgsvectordataprovider.h>

MainWindow::MainWindow(QWidget *parent)
QMainWindow(parent)

{
//老规矩我们来创建画布
QgsMapCanvas *canvas = new QgsMapCanvas(this);
//添加一个背景矢量图层
QString path = "D:/Qt/bbb.shp";
QgsVectorLayer *layer = new QgsVectorLayer(path,"MyPoint","ogr");

//在这里缺少一步<创建链表>,我把QList<QgsMapLayer *>Layers设置成全局变量
//这个是点要素的添加方法,我们跳进函数来看一下
AddPoint();
//将矢量层追加到链表中
Layers.append(layer);

//设置画布缩放
canvas->setLayers(layers);
canvas->zoomToFullExtent();
//设置画布背景颜色,当然这个可以根据你自己的需求来设定
canvas->setCanvasColor(QColor(124,134,205));

//设置画布为当前中心窗口
this->setCentralWidget(canvas);

}

MainWindow::~MainWindow()
{

}

void MainWindow::AddPoint()
{
//创建一个点图层
QgsVectorLayer *point = new QgsVectorLayer("Point?crs=epsg:4326","MyPoint","memory");
//创建一个容器
QgsVectorDataProvider * dataProvider = point->dataProvider();

//创建一个点要素,
QgsFeature MyFeature;
//设置在地图的插入点的坐标
MyFeature.setGeometry(QgsGeometry::fromPointXY(QgsPointXY(116.3215,39.5416)));
dataProvider->addFeatures(QgsFeatureList()<<MyFeature);
//刷新图层
point->updateExtents();
//将点图层追加到链表中
Layers.append(point);

}``
很简单吧.学习Qgis,大家一定要掌握好的方法,这样就可以快速的熟练运用
实现效果如下图:

posted @ 2020-08-24 19:10  简单爱你  阅读(1155)  评论(0编辑  收藏  举报