mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-24 00:47:57 -05:00
126 lines
4.9 KiB
Plaintext
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
|