diff --git a/src/server/qgswfsserver.cpp b/src/server/qgswfsserver.cpp index 6cf3fb2d2a24..94a9ae5bed23 100644 --- a/src/server/qgswfsserver.cpp +++ b/src/server/qgswfsserver.cpp @@ -1377,7 +1377,7 @@ void QgsWFSServer::setGetFeature( QgsRequestHandler& request, const QString& for fcString += " "; else fcString += " ,"; - fcString += createFeatureGeoJSON( feat, prec, crs, attrIndexes, excludedAttributes ); + fcString += createFeatureGeoJSON( feat, prec, crs, attrIndexes, excludedAttributes, pkAttributes ); fcString += "\n"; result = fcString.toUtf8(); @@ -1926,9 +1926,10 @@ QgsFeatureIds QgsWFSServer::getFeatureIdsFromFilter( const QDomElement& filterEl return fids; } -QString QgsWFSServer::createFeatureGeoJSON( QgsFeature* feat, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet& excludedAttributes ) /*const*/ +QString QgsWFSServer::createFeatureGeoJSON( QgsFeature* feat, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet& excludedAttributes, + const QgsAttributeList& pkAttributes ) /*const*/ { - QString id = QString( "%1.%2" ).arg( mTypeName, FID_TO_STRING( feat->id() ) ); + QString id = QString( "%1.%2" ).arg( mTypeName, featureGmlId( feat, pkAttributes ) ); QgsJSONExporter exporter; exporter.setSourceCrs( crs ); diff --git a/src/server/qgswfsserver.h b/src/server/qgswfsserver.h index a1a4c36f6efd..6f75929410fa 100644 --- a/src/server/qgswfsserver.h +++ b/src/server/qgswfsserver.h @@ -120,7 +120,8 @@ class QgsWFSServer: public QgsOWSServer QgsFeatureIds getFeatureIdsFromFilter( const QDomElement& filter, QgsVectorLayer* layer ); //methods to write GeoJSON - QString createFeatureGeoJSON( QgsFeature* feat, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet& excludedAttributes ) /*const*/; + QString createFeatureGeoJSON( QgsFeature* feat, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet& excludedAttributes, + const QgsAttributeList& pkAttributes = QgsAttributeList() ) /*const*/; //methods to write GML2 QDomElement createFeatureGML2( QgsFeature* feat, QDomDocument& doc, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet& excludedAttributes,