@@ -603,7 +603,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
603
603
if ( featureCounter == 0 )
604
604
startGetFeature ( request, format, layerPrec, layerCrs, &searchRect );
605
605
606
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
606
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
607
607
608
608
fid = " " ;
609
609
++featCounter;
@@ -642,7 +642,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
642
642
643
643
if ( featureCounter >= startIndex )
644
644
{
645
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
645
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
646
646
++featCounter;
647
647
}
648
648
++featureCounter;
@@ -696,7 +696,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
696
696
697
697
if ( featureCounter >= startIndex )
698
698
{
699
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
699
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
700
700
++featCounter;
701
701
}
702
702
++featureCounter;
@@ -714,7 +714,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
714
714
715
715
if ( featureCounter >= startIndex )
716
716
{
717
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
717
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
718
718
++featCounter;
719
719
}
720
720
++featureCounter;
@@ -977,7 +977,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
977
977
if ( featureCounter == 0 )
978
978
startGetFeature ( request, format, layerPrec, layerCrs, &searchRect );
979
979
980
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
980
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
981
981
++featCounter;
982
982
++featureCounter;
983
983
}
@@ -1026,7 +1026,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
1026
1026
1027
1027
if ( featureCounter >= startIndex )
1028
1028
{
1029
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
1029
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
1030
1030
++featCounter;
1031
1031
}
1032
1032
++featureCounter;
@@ -1063,7 +1063,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
1063
1063
if ( featureCounter == 0 )
1064
1064
startGetFeature ( request, format, layerPrec, layerCrs, &searchRect );
1065
1065
1066
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
1066
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
1067
1067
1068
1068
fid = " " ;
1069
1069
++featCounter;
@@ -1102,7 +1102,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
1102
1102
1103
1103
if ( featureCounter >= startIndex )
1104
1104
{
1105
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
1105
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
1106
1106
++featCounter;
1107
1107
}
1108
1108
++featureCounter;
@@ -1151,7 +1151,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
1151
1151
1152
1152
if ( featureCounter >= startIndex )
1153
1153
{
1154
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
1154
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
1155
1155
++featCounter;
1156
1156
}
1157
1157
++featureCounter;
@@ -1190,7 +1190,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
1190
1190
1191
1191
if ( featureCounter >= startIndex )
1192
1192
{
1193
- setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes );
1193
+ setGetFeature ( request, format, &feature, featCounter, layerPrec, layerCrs, attrIndexes, layerExcludedAttributes, provider-> pkAttributeIndexes () );
1194
1194
++featCounter;
1195
1195
}
1196
1196
++featureCounter;
@@ -1363,7 +1363,8 @@ void QgsWFSServer::startGetFeature( QgsRequestHandler& request, const QString& f
1363
1363
fcString = " " ;
1364
1364
}
1365
1365
1366
- void QgsWFSServer::setGetFeature ( QgsRequestHandler& request, const QString& format, QgsFeature* feat, int featIdx, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet<QString>& excludedAttributes ) /* const*/
1366
+ void QgsWFSServer::setGetFeature ( QgsRequestHandler& request, const QString& format, QgsFeature* feat, int featIdx, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet<QString>& excludedAttributes,
1367
+ const QgsAttributeList& pkAttributes ) /* const*/
1367
1368
{
1368
1369
if ( !feat->isValid () )
1369
1370
return ;
@@ -1389,12 +1390,12 @@ void QgsWFSServer::setGetFeature( QgsRequestHandler& request, const QString& for
1389
1390
QDomElement featureElement;
1390
1391
if ( format == " GML3" )
1391
1392
{
1392
- featureElement = createFeatureGML3 ( feat, gmlDoc, prec, crs, attrIndexes, excludedAttributes );
1393
+ featureElement = createFeatureGML3 ( feat, gmlDoc, prec, crs, attrIndexes, excludedAttributes, pkAttributes );
1393
1394
gmlDoc.appendChild ( featureElement );
1394
1395
}
1395
1396
else
1396
1397
{
1397
- featureElement = createFeatureGML2 ( feat, gmlDoc, prec, crs, attrIndexes, excludedAttributes );
1398
+ featureElement = createFeatureGML2 ( feat, gmlDoc, prec, crs, attrIndexes, excludedAttributes, pkAttributes );
1398
1399
gmlDoc.appendChild ( featureElement );
1399
1400
}
1400
1401
@@ -1963,14 +1964,16 @@ QString QgsWFSServer::createFeatureGeoJSON( QgsFeature* feat, int prec, QgsCoord
1963
1964
return exporter.exportFeature ( f, QVariantMap (), id );
1964
1965
}
1965
1966
1966
- QDomElement QgsWFSServer::createFeatureGML2 ( QgsFeature* feat, QDomDocument& doc, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet<QString>& excludedAttributes ) /* const*/
1967
+ QDomElement QgsWFSServer::createFeatureGML2 ( QgsFeature* feat, QDomDocument& doc, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet<QString>& excludedAttributes,
1968
+ const QgsAttributeList& pkAttributes ) /* const*/
1967
1969
{
1968
1970
// gml:FeatureMember
1969
1971
QDomElement featureElement = doc.createElement ( " gml:featureMember" /* wfs:FeatureMember*/ );
1970
1972
1971
1973
// qgs:%TYPENAME%
1972
1974
QDomElement typeNameElement = doc.createElement ( " qgs:" + mTypeName /* qgs:%TYPENAME%*/ );
1973
- typeNameElement.setAttribute ( " fid" , mTypeName + " ." + QString::number ( feat->id () ) );
1975
+ QString gmlId = featureGmlId ( feat, pkAttributes );
1976
+ typeNameElement.setAttribute ( " fid" , mTypeName + " ." + gmlId );
1974
1977
featureElement.appendChild ( typeNameElement );
1975
1978
1976
1979
if ( mWithGeom && mGeometryName != " NONE" )
@@ -2047,14 +2050,16 @@ QDomElement QgsWFSServer::createFeatureGML2( QgsFeature* feat, QDomDocument& doc
2047
2050
return featureElement;
2048
2051
}
2049
2052
2050
- QDomElement QgsWFSServer::createFeatureGML3 ( QgsFeature* feat, QDomDocument& doc, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet<QString>& excludedAttributes ) /* const*/
2053
+ QDomElement QgsWFSServer::createFeatureGML3 ( QgsFeature* feat, QDomDocument& doc, int prec, QgsCoordinateReferenceSystem& crs, const QgsAttributeList& attrIndexes, const QSet<QString>& excludedAttributes,
2054
+ const QgsAttributeList& pkAttributes ) /* const*/
2051
2055
{
2052
2056
// gml:FeatureMember
2053
2057
QDomElement featureElement = doc.createElement ( " gml:featureMember" /* wfs:FeatureMember*/ );
2054
2058
2055
2059
// qgs:%TYPENAME%
2056
2060
QDomElement typeNameElement = doc.createElement ( " qgs:" + mTypeName /* qgs:%TYPENAME%*/ );
2057
- typeNameElement.setAttribute ( " gml:id" , mTypeName + " ." + QString::number ( feat->id () ) );
2061
+ QString gmlId = featureGmlId ( feat, pkAttributes );
2062
+ typeNameElement.setAttribute ( " gml:id" , mTypeName + " ." + gmlId );
2058
2063
featureElement.appendChild ( typeNameElement );
2059
2064
2060
2065
if ( mWithGeom && mGeometryName != " NONE" )
0 commit comments