@@ -815,14 +815,18 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
815
815
}
816
816
else if ( expFilterOk )
817
817
{
818
- QgsFeatureIterator fit = layer->getFeatures ( QgsFeatureRequest ()
819
- .setFilterRect ( searchRect )
820
- .setFlags ( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) )
821
- .setSubsetOfAttributes ( attrIndexes ) );
818
+ QgsFeatureRequest req;
819
+ req.setSubsetOfAttributes ( attrIndexes );
820
+ if ( layer->wkbType () != QGis::WKBNoGeometry )
821
+ {
822
+ req.setFilterRect ( searchRect )
823
+ .setFlags ( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) );
824
+ }
825
+ QgsFeatureIterator fit = layer->getFeatures ( req );
822
826
QgsExpression *mFilter = new QgsExpression ( expFilter );
823
827
if ( mFilter ->hasParserError () )
824
828
{
825
- throw QgsMapServiceException ( " RequestNotWellFormed" , mFilter ->parserErrorString () );
829
+ throw QgsMapServiceException ( " RequestNotWellFormed" ,QString ( " Expression filter error message: %1. " ). arg ( mFilter ->parserErrorString () ) );
826
830
}
827
831
if ( mFilter )
828
832
{
@@ -831,7 +835,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
831
835
QVariant res = mFilter ->evaluate ( &feature, fields );
832
836
if ( mFilter ->hasEvalError () )
833
837
{
834
- throw QgsMapServiceException ( " RequestNotWellFormed" , mFilter ->evalErrorString () );
838
+ throw QgsMapServiceException ( " RequestNotWellFormed" , QString ( " Expression filter eval error message: %1. " ). arg ( mFilter ->evalErrorString () ) );
835
839
}
836
840
if ( res.toInt () != 0 )
837
841
{
@@ -921,20 +925,24 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
921
925
QgsExpression *mFilter = QgsOgcUtils::expressionFromOgcFilter ( filterElem );
922
926
if ( mFilter ->hasParserError () )
923
927
{
924
- throw QgsMapServiceException ( " RequestNotWellFormed" , mFilter ->parserErrorString () );
928
+ throw QgsMapServiceException ( " RequestNotWellFormed" , QString ( " OGC expression filter error message: %1. " ). arg ( mFilter ->parserErrorString () ) );
925
929
}
926
930
if ( mFilter )
927
931
{
928
- QgsFeatureIterator fit = layer->getFeatures ( QgsFeatureRequest ()
929
- .setFilterRect ( searchRect )
930
- .setFlags ( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) )
931
- .setSubsetOfAttributes ( attrIndexes ) );
932
+ QgsFeatureRequest req;
933
+ req.setSubsetOfAttributes ( attrIndexes );
934
+ if ( layer->wkbType () != QGis::WKBNoGeometry )
935
+ {
936
+ req.setFilterRect ( searchRect )
937
+ .setFlags ( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) );
938
+ }
939
+ QgsFeatureIterator fit = layer->getFeatures ( req );
932
940
while ( fit.nextFeature ( feature ) && featureCounter < maxFeat )
933
941
{
934
942
QVariant res = mFilter ->evaluate ( &feature, fields );
935
943
if ( mFilter ->hasEvalError () )
936
944
{
937
- throw QgsMapServiceException ( " RequestNotWellFormed" , mFilter ->evalErrorString () );
945
+ throw QgsMapServiceException ( " RequestNotWellFormed" , QString ( " OGC expression filter eval error message: %1. " ). arg ( mFilter ->evalErrorString () ) );
938
946
}
939
947
if ( res.toInt () != 0 )
940
948
{
@@ -952,10 +960,14 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
952
960
}
953
961
else
954
962
{
955
- QgsFeatureIterator fit = layer->getFeatures ( QgsFeatureRequest ()
956
- .setFilterRect ( searchRect )
957
- .setFlags ( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) )
958
- .setSubsetOfAttributes ( attrIndexes ) );
963
+ QgsFeatureRequest req;
964
+ req.setSubsetOfAttributes ( attrIndexes );
965
+ if ( layer->wkbType () != QGis::WKBNoGeometry )
966
+ {
967
+ req.setFilterRect ( searchRect )
968
+ .setFlags ( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) );
969
+ }
970
+ QgsFeatureIterator fit = layer->getFeatures ( req );
959
971
while ( fit.nextFeature ( feature ) && featureCounter < maxFeat )
960
972
{
961
973
if ( featureCounter == 0 )
@@ -975,7 +987,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
975
987
976
988
}
977
989
if ( featureCounter == 0 )
978
- throw QgsMapServiceException ( " RequestNotWellFormed" , mErrors .join ( " . " ) );
990
+ throw QgsMapServiceException ( " RequestNotWellFormed" , QString ( " No feature found error messages: %1. " ). arg ( mErrors .join ( " . " ) ) );
979
991
else
980
992
endGetFeature ( request, format );
981
993
0 commit comments