QGIS API Documentation 3.41.0-Master (57ec4277f5e)
Loading...
Searching...
No Matches
qgswmsrenderer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgswmsrendrer.h
3 -------------------
4 begin : May 14, 2006
5 copyright : (C) 2006 by Marco Hugentobler
6 (C) 2017 by David Marteau
7 email : marco dot hugentobler at karto dot baug dot ethz dot ch
8 david dot marteau at 3liz dot com
9 ***************************************************************************/
10
11/***************************************************************************
12 * *
13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. *
17 * *
18 ***************************************************************************/
19
20#ifndef QGSWMSRENDERER_H
21#define QGSWMSRENDERER_H
22
23#include "qgslayoutatlas.h"
24#include "qgsserversettings.h"
25#include "qgswmsparameters.h"
26#include "qgswmsrendercontext.h"
27#include "qgsfeaturefilter.h"
29#include "qgseditformconfig.h"
30#include <QDomDocument>
31#include <QMap>
32#include <QString>
33
35class QgsPrintLayout;
36class QgsFeature;
37class QgsLayout;
38class QgsMapLayer;
40class QgsMapSettings;
41class QgsPointXY;
42class QgsRasterLayer;
43class QgsRectangle;
45class QgsVectorLayer;
47class QgsDxfExport;
49class QgsLayerTree;
53
54class QImage;
55class QPaintDevice;
56class QPainter;
58
59namespace QgsWms
60{
61
68 {
69 public:
75 QgsRenderer( const QgsWmsRenderContext &context );
76
78
86 QImage *getLegendGraphics( QgsLayerTreeModel &model );
87
96
106
116
117
118 typedef QSet<QString> SymbolSet;
119 typedef QHash<QgsVectorLayer *, SymbolSet> HitTest;
120
126
132 QImage *getMap();
133
138 std::unique_ptr<QgsDxfExport> getDxf();
139
146 std::unique_ptr<QgsMapRendererTask> getPdf( const QString &tmpFileName );
147
152 QByteArray getPrint();
153
158 QByteArray getFeatureInfo( const QString &version = "1.3.0" );
159
163 void configureLayers( QList<QgsMapLayer *> &layers, QgsMapSettings *settings = nullptr );
164
165 private:
166 QgsLegendSettings legendSettings();
167
168 // Build and returns highlight layers
169 QList<QgsMapLayer *> highlightLayers( QList<QgsWmsParametersHighlightLayer> params );
170
171 // Rendering step for layers
172 QPainter *layersRendering( const QgsMapSettings &mapSettings, QImage &image ) const;
173
174 // Rendering step for annotations
175 void annotationsRendering( QPainter *painter, const QgsMapSettings &mapSettings ) const;
176
177 // Set layer opacity
178 void setLayerOpacity( QgsMapLayer *layer, int opacity ) const;
179
180 // Set layer filter and dimension
181 void setLayerFilter( QgsMapLayer *layer, const QList<QgsWmsParametersFilter> &filters );
182
183 QStringList dimensionFilter( QgsVectorLayer *layer ) const;
184
185 // Set layer python filter
186 void setLayerAccessControlFilter( QgsMapLayer *layer ) const;
187
188 // Set layer selection
189 void setLayerSelection( QgsMapLayer *layer, const QStringList &fids ) const;
190
191 // Combine map extent with layer extent
192 void updateExtent( const QgsMapLayer *layer, QgsMapSettings &mapSettings ) const;
193
194 // Scale image with WIDTH/HEIGHT if necessary
195 QImage *scaleImage( const QImage *image ) const;
196
203 QImage *createImage( const QSize &size ) const;
204
212 void configureMapSettings( const QPaintDevice *paintDevice, QgsMapSettings &mapSettings, bool mandatoryCrsParam = true );
213
220 QgsRenderContext configureDefaultRenderContext( QPainter *painter = nullptr );
221
222 QDomDocument featureInfoDocument( QList<QgsMapLayer *> &layers, const QgsMapSettings &mapSettings, const QImage *outputImage, const QString &version ) const;
223
239 bool featureInfoFromVectorLayer( QgsVectorLayer *layer, const QgsPointXY *infoPoint, int nFeatures, QDomDocument &infoDocument, QDomElement &layerElement, const QgsMapSettings &mapSettings, QgsRenderContext &renderContext, const QString &version, QgsRectangle *featureBBox = nullptr, QgsGeometry *filterGeom = nullptr ) const;
240
252 void writeAttributesTabGroup( const QgsAttributeEditorElement *group, QgsVectorLayer *layer, const QgsFields &fields, QgsAttributes &featureAttributes, QDomDocument &doc, QDomElement &featureElem, QgsRenderContext &renderContext, QStringList *attributes = nullptr ) const;
253
265 void writeAttributesTabLayout( QgsEditFormConfig &config, QgsVectorLayer *layer, const QgsFields &fields, QgsAttributes &featureAttributes, QDomDocument &doc, QDomElement &featureElem, QgsRenderContext &renderContext, QStringList *attributes = nullptr ) const;
266
278 void writeVectorLayerAttribute( int attributeIndex, QgsVectorLayer *layer, const QgsFields &fields, QgsAttributes &featureAttributes, QDomDocument &doc, QDomElement &featureElem, QgsRenderContext &renderContext, QStringList *attributes = nullptr ) const;
279
281 bool featureInfoFromRasterLayer( QgsRasterLayer *layer, const QgsMapSettings &mapSettings, const QgsPointXY *infoPoint, const QgsRenderContext &renderContext, QDomDocument &infoDocument, QDomElement &layerElement, const QString &version ) const;
282
284 void runHitTest( const QgsMapSettings &mapSettings, HitTest &hitTest ) const;
286 void runHitTestLayer( QgsVectorLayer *vl, SymbolSet &usedSymbols, QgsRenderContext &context ) const;
287
292 bool testFilterStringSafety( const QString &filter ) const;
294 static void groupStringList( QStringList &list, const QString &groupString );
295
297 void convertFeatureInfoToSia2045( QDomDocument &doc ) const;
298
300 QByteArray convertFeatureInfoToHtml( const QDomDocument &doc ) const;
301
303 QByteArray convertFeatureInfoToText( const QDomDocument &doc ) const;
304
306 QByteArray convertFeatureInfoToJson( const QList<QgsMapLayer *> &layers, const QDomDocument &doc, const QgsCoordinateReferenceSystem &destCRS ) const;
307
308 QDomElement createFeatureGML(
309 const QgsFeature *feat,
310 QgsVectorLayer *layer,
311 QDomDocument &doc,
313 const QgsMapSettings &mapSettings,
314 const QString &typeName,
315 bool withGeom,
316 int version,
317 QStringList *attributes = nullptr
318 ) const;
319
321 static QString replaceValueMapAndRelation( QgsVectorLayer *vl, int idx, const QVariant &attributeVal );
323 QgsRectangle featureInfoSearchRect( QgsVectorLayer *ml, const QgsMapSettings &ms, const QgsRenderContext &rct, const QgsPointXY &infoPoint ) const;
324
332 bool configurePrintLayout( QgsPrintLayout *c, const QgsMapSettings &mapSettings, QgsLayoutAtlas *atlas );
333
334 void removeTemporaryLayers();
335
336 void handlePrintErrors( const QgsLayout *layout ) const;
337
338 void setLayerStyle( QgsMapLayer *layer, const QString &style ) const;
339
340 void setLayerSld( QgsMapLayer *layer, const QDomElement &sld ) const;
341
342 QgsWmsParameters mWmsParameters;
343
344 QgsFeatureFilter mFeatureFilter;
345
346 const QgsProject *mProject = nullptr;
347 QList<QgsMapLayer *> mTemporaryLayers;
348 const QgsWmsRenderContext &mContext;
349
351 bool mIsTemporal = false;
352 };
353
354} // namespace QgsWms
355
356#endif
QFlags< LegendJsonRenderFlag > LegendJsonRenderFlags
Definition qgis.h:4327
A helper class that centralizes restrictions given by all the access control filter plugins.
This is an abstract base class for any elements of a drag and drop form.
A vector of attributes.
This class represents a coordinate reference system (CRS).
Exports QGIS layers to the DXF format.
Contains configuration settings for an editor form.
A feature filter provider allowing to set filter expressions on a per-layer basis.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
Container of fields for a vector layer.
Definition qgsfields.h:46
A geometry is the spatial representation of a feature.
Layer tree group node serves as a container for layers and further groups.
The QgsLegendRendererItem class is abstract interface for legend items returned from QgsMapLayerLegen...
The QgsLayerTreeModel class is model implementation for Qt item views framework.
Namespace with helper functions for layer tree operations.
Class used to render QgsLayout as an atlas, by iterating over the features from an associated vector ...
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition qgslayout.h:49
The QgsLegendSettings class stores the appearance and layout settings for legend drawing with QgsLege...
Base class for all map layer types.
Definition qgsmaplayer.h:76
QgsTask task which draws a map to an image file or a painter as a background task.
The QgsMapSettings class contains configuration for rendering of the map.
A class to represent a 2D point.
Definition qgspointxy.h:60
Print layout, a QgsLayout subclass for static or atlas-based layouts.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition qgsproject.h:107
Represents a raster layer.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
QgsServerInterface Class defining interfaces exposed by QGIS Server and made available to plugins.
Represents a vector layer which manages a vector based data sets.
Map renderer for WMS requests.
QHash< QgsVectorLayer *, SymbolSet > HitTest
QByteArray getPrint()
Returns printed page as binary.
HitTest symbols()
Returns the hit test according to the current context.
std::unique_ptr< QgsDxfExport > getDxf()
Returns the map as DXF data.
QSet< QString > SymbolSet
void configureLayers(QList< QgsMapLayer * > &layers, QgsMapSettings *settings=nullptr)
Configures layers for rendering optionally considering the map settings.
std::unique_ptr< QgsMapRendererTask > getPdf(const QString &tmpFileName)
Returns a configured pdf export task.
QByteArray getFeatureInfo(const QString &version="1.3.0")
Creates an xml document that describes the result of the getFeatureInfo request.
QImage * getLegendGraphics(QgsLayerTreeModel &model)
Returns the map legend as an image (or nullptr in case of error).
QJsonObject getLegendGraphicsAsJson(QgsLayerTreeModel &model, const Qgis::LegendJsonRenderFlags &jsonRenderFlags=Qgis::LegendJsonRenderFlags())
Returns the map legend as a JSON object.
QImage * getMap()
Returns the map as an image (or nullptr in case of error).
Provides an interface to retrieve and manipulate WMS parameters received from the client.
Rendering context for the WMS renderer.
Median cut implementation.
QgsLayerTreeModelLegendNode * legendNode(const QString &rule, QgsLayerTreeModel &model)
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
const QgsCoordinateReferenceSystem & crs
const QString & typeName
bool withGeom