QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgsmaplayerfactory.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsmaplayerfactory.cpp
3 --------------------------------------
4 Date : March 2021
5 Copyright : (C) 2021 by Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
7***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#include "qgsmaplayerfactory.h"
19
20#include "qgsannotationlayer.h"
21#include "qgsgrouplayer.h"
22#include "qgsmeshlayer.h"
23#include "qgspointcloudlayer.h"
24#include "qgsrasterlayer.h"
25#include "qgstiledscenelayer.h"
26#include "qgsvectorlayer.h"
27#include "qgsvectortilelayer.h"
28
29Qgis::LayerType QgsMapLayerFactory::typeFromString( const QString &string, bool &ok )
30{
31 ok = true;
32 if ( string.compare( QLatin1String( "vector" ), Qt::CaseInsensitive ) == 0 )
34 else if ( string.compare( QLatin1String( "raster" ), Qt::CaseInsensitive ) == 0 )
36 else if ( string.compare( QLatin1String( "mesh" ), Qt::CaseInsensitive ) == 0 )
38 else if ( string.compare( QLatin1String( "vector-tile" ), Qt::CaseInsensitive ) == 0 )
40 else if ( string.compare( QLatin1String( "point-cloud" ), Qt::CaseInsensitive ) == 0 ||
41 // We accept "pointcloud" for backward compatibility with the
42 // MIME related code, which spelled it that way before 3.42.0 where
43 // we have delegated to QgsMapLayerFactory::typeToString()
44 string.compare( QLatin1String( "pointcloud" ), Qt::CaseInsensitive ) == 0 )
46 else if ( string.compare( QLatin1String( "plugin" ), Qt::CaseInsensitive ) == 0 )
48 else if ( string.compare( QLatin1String( "annotation" ), Qt::CaseInsensitive ) == 0 )
50 else if ( string.compare( QLatin1String( "group" ), Qt::CaseInsensitive ) == 0 )
52 else if ( string.compare( QLatin1String( "tiled-scene" ), Qt::CaseInsensitive ) == 0 )
54
55 ok = false;
57}
58
60{
61 switch ( type )
62 {
64 return QStringLiteral( "vector" );
66 return QStringLiteral( "raster" );
68 return QStringLiteral( "plugin" );
70 return QStringLiteral( "mesh" );
72 return QStringLiteral( "vector-tile" );
74 return QStringLiteral( "annotation" );
76 return QStringLiteral( "point-cloud" );
78 return QStringLiteral( "group" );
80 return QStringLiteral( "tiled-scene" );
81 }
82 return QString();
83}
84
85QgsMapLayer *QgsMapLayerFactory::createLayer( const QString &uri, const QString &name, Qgis::LayerType type, const LayerOptions &options, const QString &provider )
86{
87 switch ( type )
88 {
90 {
91 QgsVectorLayer::LayerOptions vectorOptions;
92 vectorOptions.transformContext = options.transformContext;
93 vectorOptions.loadDefaultStyle = options.loadDefaultStyle;
94 vectorOptions.loadAllStoredStyles = options.loadAllStoredStyles;
95 return new QgsVectorLayer( uri, name, provider, vectorOptions );
96 }
97
99 {
100 QgsRasterLayer::LayerOptions rasterOptions;
101 rasterOptions.transformContext = options.transformContext;
102 rasterOptions.loadDefaultStyle = options.loadDefaultStyle;
103 return new QgsRasterLayer( uri, name, provider, rasterOptions );
104 }
105
107 {
108 QgsMeshLayer::LayerOptions meshOptions;
109 meshOptions.transformContext = options.transformContext;
110 meshOptions.loadDefaultStyle = options.loadDefaultStyle;
111 return new QgsMeshLayer( uri, name, provider, meshOptions );
112 }
113
115 {
116 const QgsVectorTileLayer::LayerOptions vectorTileOptions( options.transformContext );
117 return new QgsVectorTileLayer( uri, name, vectorTileOptions );
118 }
119
121 {
122 const QgsAnnotationLayer::LayerOptions annotationOptions( options.transformContext );
123 return new QgsAnnotationLayer( name, annotationOptions );
124 }
125
127 {
128 const QgsGroupLayer::LayerOptions groupOptions( options.transformContext );
129 return new QgsGroupLayer( name, groupOptions );
130 }
131
133 {
134 QgsPointCloudLayer::LayerOptions pointCloudOptions;
135 pointCloudOptions.loadDefaultStyle = options.loadDefaultStyle;
136 pointCloudOptions.transformContext = options.transformContext;
137 return new QgsPointCloudLayer( uri, name, provider, pointCloudOptions );
138 }
139
141 {
142 QgsTiledSceneLayer::LayerOptions tiledSceneOptions;
143 tiledSceneOptions.loadDefaultStyle = options.loadDefaultStyle;
144 tiledSceneOptions.transformContext = options.transformContext;
145 return new QgsTiledSceneLayer( uri, name, provider, tiledSceneOptions );
146 }
147
149 break;
150 }
151 return nullptr;
152}
LayerType
Types of layers that can be added to a map.
Definition qgis.h:190
@ Group
Composite group layer. Added in QGIS 3.24.
Definition qgis.h:198
@ Plugin
Plugin based layer.
Definition qgis.h:193
@ TiledScene
Tiled scene layer. Added in QGIS 3.34.
Definition qgis.h:199
@ Annotation
Contains freeform, georeferenced annotations. Added in QGIS 3.16.
Definition qgis.h:196
@ Vector
Vector layer.
Definition qgis.h:191
@ VectorTile
Vector tile layer. Added in QGIS 3.14.
Definition qgis.h:195
@ Mesh
Mesh layer. Added in QGIS 3.2.
Definition qgis.h:194
@ Raster
Raster layer.
Definition qgis.h:192
@ PointCloud
Point cloud layer. Added in QGIS 3.18.
Definition qgis.h:197
Represents a map layer containing a set of georeferenced annotations, e.g.
A map layer which consists of a set of child layers, where all component layers are rendered as a sin...
static QString typeToString(Qgis::LayerType type)
Converts a map layer type to a string value.
static Qgis::LayerType typeFromString(const QString &string, bool &ok)
Returns the map layer type corresponding a string value.
static QgsMapLayer * createLayer(const QString &uri, const QString &name, Qgis::LayerType type, const LayerOptions &options, const QString &provider=QString())
Creates a map layer, given a uri, name, layer type and provider name.
Base class for all map layer types.
Definition qgsmaplayer.h:80
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Represents a map layer supporting display of point clouds.
Represents a raster layer.
Represents a map layer supporting display of tiled scene objects.
Represents a vector layer which manages a vector based dataset.
Implements a map layer that is dedicated to rendering of vector tiles.
Setting options for loading annotation layers.
Setting options for loading group layers.
Setting options for loading layers.
QgsCoordinateTransformContext transformContext
Transform context.
bool loadAllStoredStyles
Controls whether the stored styles will be all loaded.
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
Setting options for loading mesh layers.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
Setting options for loading point cloud layers.
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Setting options for loading raster layers.
bool loadDefaultStyle
Sets to true if the default layer style should be loaded.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Setting options for loading tiled scene layers.
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Setting options for loading vector layers.
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
bool loadAllStoredStyles
Controls whether the stored styles will be all loaded.
Setting options for loading vector tile layers.