QGIS/python/server/qgswfserver.sip
Juergen E. Fischer 9752c468c1 indentation update
2015-07-29 11:52:14 +02:00

126 lines
4.9 KiB
Plaintext

/***************************************************************************
qgswfsserver.sip
-------------------
begin : May 2, 2015
copyright : (C) 2015 by Alessandro Pasotti
email : a dot pasotti at itopen dot it
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSWFSSERVER_H
#define QGSWFSSERVER_H
#include <QDomDocument>
#include <QMap>
#include <QString>
#include <map>
#include "qgis.h"
#include "qgsowsserver.h"
#include "qgsvectorlayer.h"
#include "qgswfsprojectparser.h"
class QgsCoordinateReferenceSystem;
class QgsComposerLayerItem;
class QgsComposerLegendItem;
class QgsComposition;
class QgsFields;
class QgsMapLayer;
class QgsMapRenderer;
class QgsPoint;
class QgsRasterLayer;
class QgsConfigParser;
class QgsVectorLayer;
class QgsCoordinateReferenceSystem;
class QgsField;
class QgsFeature;
class QgsRectangle;
class QgsGeometry;
class QgsSymbol;
class QgsRequestHandler;
class QFile;
class QFont;
class QImage;
class QPaintDevice;
class QPainter;
/** This class handles all the wms server requests. The parameters and values have to be passed in the form of
a map<QString, QString>. This map is usually generated by a subclass of QgsWMSRequestHandler, which makes QgsWFSServer
independent from any server side technology*/
class QgsWFSServer: public QgsOWSServer
{
public:
/** Constructor. Takes parameter map and a pointer to a renderer object (does not take ownership)*/
QgsWFSServer( const QString& configFilePath, QMap<QString, QString>& parameters, QgsWFSProjectParser* cp,
QgsRequestHandler* rh );
~QgsWFSServer();
void executeRequest() override;
/** Returns an XML file with the capabilities description (as described in the WFS specs)*/
QDomDocument getCapabilities();
/** Returns an XML file with the describe feature type (as described in the WFS specs)*/
QDomDocument describeFeatureType();
/** Creates a document that describes the result of the getFeature request.
@return 0 in case of success*/
int getFeature( QgsRequestHandler& request, const QString& format );
/** Read and apply the transaction
@return 0 in case of success*/
QDomDocument transaction( const QString& requestBody );
/** Sets configuration parser for administration settings. Does not take ownership*/
void setAdminConfigParser( QgsWFSProjectParser* parser ) { mConfigParser = parser; }
private:
/** Don't use the default constructor*/
QgsWFSServer();
/** Get service address from REQUEST_URI if not specified in the configuration*/
QString serviceUrl() const;
/* The Type of Feature created */
QString mTypeName;
/* The list of Feature's Type requested */
QStringList mTypeNames;
QString mPropertyName;
bool mWithGeom;
/* Error messages */
QStringList mErrors;
QgsWFSProjectParser* mConfigParser;
protected:
void startGetFeature( QgsRequestHandler& request, const QString& format, int prec, QgsCoordinateReferenceSystem& crs, QgsRectangle* rect );
void setGetFeature( QgsRequestHandler& request, const QString& format, QgsFeature* feat, int featIdx, int prec, QgsCoordinateReferenceSystem& crs, QgsAttributeList attrIndexes, QSet<QString> excludedAttributes );
void endGetFeature( QgsRequestHandler& request, const QString& format );
//method for transaction
QgsFeatureIds getFeatureIdsFromFilter( QDomElement filter, QgsVectorLayer* layer );
//methods to write GeoJSON
QString createFeatureGeoJSON( QgsFeature* feat, int prec, QgsCoordinateReferenceSystem& crs, QgsAttributeList attrIndexes, QSet<QString> excludedAttributes ) /*const*/;
//methods to write GML2
QDomElement createFeatureGML2( QgsFeature* feat, QDomDocument& doc, int prec, QgsCoordinateReferenceSystem& crs, QgsAttributeList attrIndexes, QSet<QString> excludedAttributes ) /*const*/;
//methods to write GML3
QDomElement createFeatureGML3( QgsFeature* feat, QDomDocument& doc, int prec, QgsCoordinateReferenceSystem& crs, QgsAttributeList attrIndexes, QSet<QString> excludedAttributes ) /*const*/;
void addTransactionResult( QDomDocument& responseDoc, QDomElement& responseElem, const QString& status, const QString& locator, const QString& message );
};
#endif