1. 程式人生 > 實用技巧 >Qgis 基於Qt環境下的開發:第二節《新增要素-點》

Qgis 基於Qt環境下的開發:第二節《新增要素-點》

上一節講了新增向量圖層,接下來我們來在向量圖層上新增我們的點要素.

    : 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);
}```
實現效果如下圖:
![](https://img2020.cnblogs.com/blog/2094497/202008/2094497-20200824190450754-165112497.png)
很簡單吧.學習Qgis,大家一定要掌握好的方法,這樣就可以快速的熟練運用