• 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

  • 相关阅读:
    [转]项目管理---敏捷开发思想---带来相当愉快的项目开发过程
    [转] 项目管理---项目经理如何应对客户的需求变更?
    [转]C# 线程知识--使用Task执行异步操作
    [转]细说ASP.NET的各种异步操作
    [转]oracle表分区详解
    解决Asp.net 部署后弹出登陆框
    SVN客户端TortoiseSVN安装配置图文教程
    .net版本区别及发展历程
    CLR via c#读书笔记九:字符、字符串和文本处理
    CLR via c#读书笔记九:接口
  • 原文地址:https://www.cnblogs.com/Qt895996365/p/13556034.html
Copyright © 2020-2023  润新知