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設置成全局變量
//這個是線要素的添加方法,我們跳進函數來看一下
AddLine();
//將矢量層追加到鏈表中
Layers.append(layer);

//設置畫布縮放
canvas->setLayers(layers);
canvas->zoomToFullExtent();
//設置畫布背景顏色,當然這個可以根據你自己的需求來設定
canvas->setCanvasColor(QColor(124,134,205));

//設置畫布為當前中心窗口
this->setCentralWidget(canvas);

}

MainWindow::~MainWindow()
{

}void MainWindow::AddLine()
{
// 創建一個線圖層。
QgsVectorLayer *Line_Layer = new QgsVectorLayer("LineString?crs=epsg:4326","MyLine","memory");
QgsVectorDataProvider *dataProder =Line_Layer->dataProvider();
//在指定坐標添加點
QgsFeature feature;
QgsGeometry geometry = QgsGeometry::fromPointXY(QgsPointXY(50,50));
//通過點坐標進行畫線
QgsPolyline line ;
line << QgsPoint(100.4443,32.2123) << QgsPoint(130.5557,50.4445);
geometry =QgsGeometry::fromPolyline(line);
feature.setGeometry( geometry );
dataProder->addFeatures(QgsFeatureList()<< feature);
Line_Layer->updateExtents();
//將線圖層加載到鏈表中
layers.append(Line_Layer);
}``

實現如下圖:

如果有什么問題,大家可以來探討,本人QQ895996365


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM