25using namespace Qt::StringLiterals;
30QString QgsWriteVectorTilesBaseAlgorithm::group()
const
32 return QObject::tr(
"Vector tiles" );
35QString QgsWriteVectorTilesBaseAlgorithm::groupId()
const
37 return u
"vectortiles"_s;
40QString QgsWriteVectorTilesBaseAlgorithm::shortHelpString()
const
42 return QObject::tr(
"This algorithm exports one or more vector layers to vector tiles - a data format optimized for fast map rendering and small data size." );
45QString QgsWriteVectorTilesBaseAlgorithm::shortDescription()
const
47 return QObject::tr(
"Exports one or more vector layers to vector tiles." );
50void QgsWriteVectorTilesBaseAlgorithm::addBaseParameters()
63 const int minZoom = parameterAsInt( parameters, u
"MIN_ZOOM"_s, context );
64 const int maxZoom = parameterAsInt( parameters, u
"MAX_ZOOM"_s, context );
66 const QVariant layersVariant = parameters.value( parameterDefinition( u
"LAYERS"_s )->name() );
77 prepareWriter( writer, parameters, context, outputs );
84 if ( parameters.contains( u
"EXTENT"_s ) )
90 const bool res = writer.
writeTiles( feedback );
102QString QgsWriteVectorTilesXyzAlgorithm::name()
const
104 return u
"writevectortiles_xyz"_s;
107QString QgsWriteVectorTilesXyzAlgorithm::displayName()
const
109 return QObject::tr(
"Write Vector Tiles (XYZ)" );
112QStringList QgsWriteVectorTilesXyzAlgorithm::tags()
const
114 return QObject::tr(
"xyz,vector,tiles" ).split(
',' );
119 return new QgsWriteVectorTilesXyzAlgorithm();
122void QgsWriteVectorTilesXyzAlgorithm::initAlgorithm(
const QVariantMap & )
132 QGS_MARK_ALGORITHM_SOURCE
134 const QString outputDir = parameterAsString( parameters, u
"OUTPUT_DIRECTORY"_s, context );
135 const QString xyzTemplate = parameterAsString( parameters, u
"XYZ_TEMPLATE"_s, context );
137 dsUri.
setParam( u
"type"_s, u
"xyz"_s );
138 dsUri.
setParam( u
"url"_s, QUrl::fromLocalFile( outputDir +
"/" + xyzTemplate ).toString() );
143 outputs.insert( u
"OUTPUT_DIRECTORY"_s, outputDir );
150QString QgsWriteVectorTilesMbtilesAlgorithm::name()
const
152 return u
"writevectortiles_mbtiles"_s;
155QString QgsWriteVectorTilesMbtilesAlgorithm::displayName()
const
157 return QObject::tr(
"Write Vector Tiles (MBTiles)" );
160QStringList QgsWriteVectorTilesMbtilesAlgorithm::tags()
const
162 return QObject::tr(
"mbtiles,vector" ).split(
',' );
167 return new QgsWriteVectorTilesMbtilesAlgorithm();
170void QgsWriteVectorTilesMbtilesAlgorithm::initAlgorithm(
const QVariantMap & )
178 addParameter(
new QgsProcessingParameterString( u
"META_DESCRIPTION"_s, QObject::tr(
"Metadata: Description" ), QVariant(),
false,
true ) );
179 addParameter(
new QgsProcessingParameterString( u
"META_ATTRIBUTION"_s, QObject::tr(
"Metadata: Attribution" ), QVariant(),
false,
true ) );
181 auto metaTypeParam = std::make_unique<QgsProcessingParameterString>( u
"META_TYPE"_s, QObject::tr(
"Metadata: Type" ), QVariant(),
false,
true );
182 metaTypeParam->setMetadata( { { u
"widget_wrapper"_s, QVariantMap( { { u
"value_hints"_s, QStringList() << u
"overlay"_s << u
"baselayer"_s } } ) } } );
183 addParameter( metaTypeParam.release() );
189 QGS_MARK_ALGORITHM_SOURCE
191 const QString outputFile = parameterAsFileOutput( parameters, u
"OUTPUT"_s, context );
193 dsUri.
setParam( u
"type"_s, u
"mbtiles"_s );
194 dsUri.
setParam( u
"url"_s, outputFile );
199 const QString metaName = parameterAsString( parameters, u
"META_NAME"_s, context );
200 const QString metaDescription = parameterAsString( parameters, u
"META_DESCRIPTION"_s, context );
201 const QString metaAttribution = parameterAsString( parameters, u
"META_ATTRIBUTION"_s, context );
202 const QString metaVersion = parameterAsString( parameters, u
"META_VERSION"_s, context );
203 const QString metaType = parameterAsString( parameters, u
"META_TYPE"_s, context );
204 const QString metaCenter = parameterAsString( parameters, u
"META_CENTER"_s, context );
207 if ( !metaName.isEmpty() )
208 meta[
"name"] = metaName;
209 if ( !metaDescription.isEmpty() )
210 meta[
"description"] = metaDescription;
211 if ( !metaAttribution.isEmpty() )
212 meta[
"attribution"] = metaAttribution;
213 if ( !metaVersion.isEmpty() )
214 meta[
"version"] = metaVersion;
215 if ( !metaType.isEmpty() )
216 meta[
"type"] = metaType;
217 if ( !metaCenter.isEmpty() )
218 meta[
"center"] = metaCenter;
222 outputs.insert( u
"OUTPUT"_s, outputFile );
Represents a coordinate reference system (CRS).
Stores the component parts of a data source URI (e.g.
QByteArray encodedUri() const
Returns the complete encoded URI as a byte array.
void setParam(const QString &key, const QString &value)
Sets a generic parameter value on the URI.
Abstract base class for processing algorithms.
Contains information about the context in which a processing algorithm is executed.
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context.
Custom exception class for processing related exceptions.
Base class for providing feedback from a processing algorithm.
A rectangular map extent parameter for processing algorithms.
A folder destination parameter, for specifying the destination path for a folder created by the algor...
A numeric parameter for processing algorithms.
A string parameter for processing algorithms.
A vector tile layer destination parameter, for specifying the destination path for a vector tile laye...
A parameter for Processing algorithms that need a list of input vector layers for writing of vector t...
static QList< QgsVectorTileWriter::Layer > parameterAsLayers(const QVariant &layersVariant, QgsProcessingContext &context)
Converts a QVariant value (a QVariantList) to a list of input layers.
A rectangle specified with double values.
Configuration of a single input vector layer to be included in the output.
Takes care of writing vector tiles.
QString errorMessage() const
Returns error message related to the previous call to writeTiles().
void setMaxZoom(int maxZoom)
Sets the maximum zoom level of tiles. Allowed values are in interval [0,24].
void setDestinationUri(const QString &uri)
Sets where and how the vector tiles will be written.
void setTransformContext(const QgsCoordinateTransformContext &transformContext)
Sets coordinate transform context for transforms between layers and tile matrix CRS.
void setExtent(const QgsRectangle &extent)
Sets extent of vector tile output.
bool writeTiles(QgsFeedback *feedback=nullptr)
Writes vector tiles according to the configuration.
void setLayers(const QList< QgsVectorTileWriter::Layer > &layers)
Sets vector layers and their configuration for output of vector tiles.
void setMinZoom(int minZoom)
Sets the minimum zoom level of tiles. Allowed values are in interval [0,24].
void setMetadata(const QVariantMap &metadata)
Sets that will be written to the output dataset. See class description for more on metadata support.