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 const QString outputDir = parameterAsString( parameters, u
"OUTPUT_DIRECTORY"_s, context );
133 const QString xyzTemplate = parameterAsString( parameters, u
"XYZ_TEMPLATE"_s, context );
135 dsUri.
setParam( u
"type"_s, u
"xyz"_s );
136 dsUri.
setParam( u
"url"_s, QUrl::fromLocalFile( outputDir +
"/" + xyzTemplate ).toString() );
141 outputs.insert( u
"OUTPUT_DIRECTORY"_s, outputDir );
148QString QgsWriteVectorTilesMbtilesAlgorithm::name()
const
150 return u
"writevectortiles_mbtiles"_s;
153QString QgsWriteVectorTilesMbtilesAlgorithm::displayName()
const
155 return QObject::tr(
"Write Vector Tiles (MBTiles)" );
158QStringList QgsWriteVectorTilesMbtilesAlgorithm::tags()
const
160 return QObject::tr(
"mbtiles,vector" ).split(
',' );
165 return new QgsWriteVectorTilesMbtilesAlgorithm();
168void QgsWriteVectorTilesMbtilesAlgorithm::initAlgorithm(
const QVariantMap & )
176 addParameter(
new QgsProcessingParameterString( u
"META_DESCRIPTION"_s, QObject::tr(
"Metadata: Description" ), QVariant(),
false,
true ) );
177 addParameter(
new QgsProcessingParameterString( u
"META_ATTRIBUTION"_s, QObject::tr(
"Metadata: Attribution" ), QVariant(),
false,
true ) );
179 auto metaTypeParam = std::make_unique<QgsProcessingParameterString>( u
"META_TYPE"_s, QObject::tr(
"Metadata: Type" ), QVariant(),
false,
true );
180 metaTypeParam->setMetadata( { { u
"widget_wrapper"_s, QVariantMap( { { u
"value_hints"_s, QStringList() << u
"overlay"_s << u
"baselayer"_s } } ) }
182 addParameter( metaTypeParam.release() );
188 const QString outputFile = parameterAsFileOutput( parameters, u
"OUTPUT"_s, context );
190 dsUri.
setParam( u
"type"_s, u
"mbtiles"_s );
191 dsUri.
setParam( u
"url"_s, outputFile );
196 const QString metaName = parameterAsString( parameters, u
"META_NAME"_s, context );
197 const QString metaDescription = parameterAsString( parameters, u
"META_DESCRIPTION"_s, context );
198 const QString metaAttribution = parameterAsString( parameters, u
"META_ATTRIBUTION"_s, context );
199 const QString metaVersion = parameterAsString( parameters, u
"META_VERSION"_s, context );
200 const QString metaType = parameterAsString( parameters, u
"META_TYPE"_s, context );
201 const QString metaCenter = parameterAsString( parameters, u
"META_CENTER"_s, context );
204 if ( !metaName.isEmpty() )
205 meta[
"name"] = metaName;
206 if ( !metaDescription.isEmpty() )
207 meta[
"description"] = metaDescription;
208 if ( !metaAttribution.isEmpty() )
209 meta[
"attribution"] = metaAttribution;
210 if ( !metaVersion.isEmpty() )
211 meta[
"version"] = metaVersion;
212 if ( !metaType.isEmpty() )
213 meta[
"type"] = metaType;
214 if ( !metaCenter.isEmpty() )
215 meta[
"center"] = metaCenter;
219 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.