QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
server
services
wms
qgswmsgetmap.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgswmsgetmap.cpp
3
-------------------------
4
begin : December 20 , 2016
5
copyright : (C) 2007 by Marco Hugentobler (original code)
6
(C) 2014 by Alessandro Pasotti (original code)
7
(C) 2016 by David Marteau
8
email : marco dot hugentobler at karto dot baug dot ethz dot ch
9
a dot pasotti at itopen dot it
10
david dot marteau at 3liz dot com
11
***************************************************************************/
12
13
/***************************************************************************
14
* *
15
* This program is free software; you can redistribute it and/or modify *
16
* it under the terms of the GNU General Public License as published by *
17
* the Free Software Foundation; either version 2 of the License, or *
18
* (at your option) any later version. *
19
* *
20
***************************************************************************/
21
#include "
qgswmsgetmap.h
"
22
23
#include "
qgswmsrenderer.h
"
24
#include "
qgswmsserviceexception.h
"
25
#include "
qgswmsutils.h
"
26
27
#include <QImage>
28
#include <QString>
29
30
using namespace
Qt::StringLiterals;
31
32
namespace
QgsWms
33
{
34
35
void
writeGetMap
(
QgsServerInterface
*serverIface,
const
QgsProject
*project,
const
QgsWmsRequest
&request,
QgsServerResponse
&response )
36
{
37
if
( request.
serverParameters
().
version
().isEmpty() )
38
{
39
throw
QgsServiceException
(
QgsServiceException::OGC_OperationNotSupported
, u
"Please add the value of the VERSION parameter"
_s, 501 );
40
}
41
42
// prepare render context
43
QgsWmsRenderContext
context( project, serverIface );
44
context.
setFlag
(
QgsWmsRenderContext::UpdateExtent
);
45
context.
setFlag
(
QgsWmsRenderContext::UseOpacity
);
46
context.
setFlag
(
QgsWmsRenderContext::UseFilter
);
47
context.
setFlag
(
QgsWmsRenderContext::UseSelection
);
48
context.
setFlag
(
QgsWmsRenderContext::AddHighlightLayers
);
49
context.
setFlag
(
QgsWmsRenderContext::AddExternalLayers
);
50
context.
setFlag
(
QgsWmsRenderContext::SetAccessControl
);
51
context.
setFlag
(
QgsWmsRenderContext::UseTileBuffer
);
52
context.
setParameters
( request.
wmsParameters
() );
53
context.
setSocketFeedback
( response.
feedback
() );
54
55
// rendering
56
QgsRenderer
renderer( context );
57
std::unique_ptr<QImage> result( renderer.
getMap
() );
58
59
if
( response.
feedback
() && response.
feedback
()->
isCanceled
() )
60
{
61
return
;
62
}
63
64
if
( result )
65
{
66
const
QString format = request.
parameters
().value( u
"FORMAT"
_s, u
"PNG"
_s );
67
writeImage
( response, *result, format, context.
imageQuality
() );
68
}
69
else
70
{
71
throw
QgsException
( u
"Failed to compute GetMap image"
_s );
72
}
73
}
74
}
// namespace QgsWms
QgsException
Defines a QGIS exception class.
Definition
qgsexception.h:34
QgsFeedback::isCanceled
bool isCanceled() const
Tells whether the operation has been canceled already.
Definition
qgsfeedback.h:56
QgsProject
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition
qgsproject.h:114
QgsServerInterface
Defines interfaces exposed by QGIS Server and made available to plugins.
Definition
qgsserverinterface.h:61
QgsServerParameters::version
virtual QString version() const
Returns VERSION parameter as a string or an empty string if not defined.
Definition
qgsserverparameters.cpp:536
QgsServerRequest::serverParameters
QgsServerParameters serverParameters() const
Returns parameters.
Definition
qgsserverrequest.cpp:123
QgsServerRequest::parameters
QgsServerRequest::Parameters parameters() const
Returns a map of query parameters with keys converted to uppercase.
Definition
qgsserverrequest.cpp:118
QgsServerResponse
Defines the response interface passed to QgsService.
Definition
qgsserverresponse.h:42
QgsServerResponse::feedback
virtual QgsFeedback * feedback() const
Returns the socket feedback if any.
Definition
qgsserverresponse.cpp:100
QgsWms::QgsRenderer
Map renderer for WMS requests.
Definition
qgswmsrenderer.h:71
QgsWms::QgsRenderer::getMap
std::unique_ptr< QImage > getMap()
Returns the map as an image (or nullptr in case of error).
Definition
qgswmsrenderer.cpp:1071
QgsWms::QgsServiceException
Exception class for WMS service exceptions.
Definition
qgswmsserviceexception.h:38
QgsWms::QgsServiceException::OGC_OperationNotSupported
@ OGC_OperationNotSupported
Definition
qgswmsserviceexception.h:60
QgsWms::QgsWmsRenderContext
Rendering context for the WMS renderer.
Definition
qgswmsrendercontext.h:35
QgsWms::QgsWmsRenderContext::setParameters
void setParameters(const QgsWmsParameters ¶meters)
Sets WMS parameters.
Definition
qgswmsrendercontext.cpp:48
QgsWms::QgsWmsRenderContext::setFlag
void setFlag(Flag flag, bool on=true)
Sets or unsets a rendering flag according to the on value.
Definition
qgswmsrendercontext.cpp:71
QgsWms::QgsWmsRenderContext::setSocketFeedback
void setSocketFeedback(QgsFeedback *feedback)
Sets the response feedback.
Definition
qgswmsrendercontext.cpp:1056
QgsWms::QgsWmsRenderContext::imageQuality
int imageQuality() const
Returns the image quality to use for rendering according to the current configuration.
Definition
qgswmsrendercontext.cpp:147
QgsWms::QgsWmsRenderContext::UseFilter
@ UseFilter
Definition
qgswmsrendercontext.h:42
QgsWms::QgsWmsRenderContext::UseOpacity
@ UseOpacity
Definition
qgswmsrendercontext.h:41
QgsWms::QgsWmsRenderContext::AddHighlightLayers
@ AddHighlightLayers
Definition
qgswmsrendercontext.h:44
QgsWms::QgsWmsRenderContext::UseSelection
@ UseSelection
Definition
qgswmsrendercontext.h:43
QgsWms::QgsWmsRenderContext::UseTileBuffer
@ UseTileBuffer
Definition
qgswmsrendercontext.h:51
QgsWms::QgsWmsRenderContext::AddExternalLayers
@ AddExternalLayers
Definition
qgswmsrendercontext.h:49
QgsWms::QgsWmsRenderContext::SetAccessControl
@ SetAccessControl
Definition
qgswmsrendercontext.h:46
QgsWms::QgsWmsRenderContext::UpdateExtent
@ UpdateExtent
Definition
qgswmsrendercontext.h:45
QgsWms::QgsWmsRequest
Defines request interfaces passed to WMS service.
Definition
qgswmsrequest.h:35
QgsWms::QgsWmsRequest::wmsParameters
const QgsWmsParameters & wmsParameters() const
Returns the parameters interpreted for the WMS service.
Definition
qgswmsrequest.cpp:32
QgsWms
Median cut implementation.
Definition
qgsdxfwriter.cpp:27
QgsWms::writeImage
void writeImage(QgsServerResponse &response, QImage &img, const QString &formatStr, int imageQuality)
Write image response.
Definition
qgswmsutils.cpp:104
QgsWms::writeGetMap
void writeGetMap(QgsServerInterface *serverIface, const QgsProject *project, const QgsWmsRequest &request, QgsServerResponse &response)
Output GetMap response in DXF format.
Definition
qgswmsgetmap.cpp:35
qgswmsgetmap.h
qgswmsrenderer.h
qgswmsserviceexception.h
qgswmsutils.h
Generated on
for QGIS API Documentation by
1.17.0