Skip to content

Commit 562aec3

Browse files
committed
[QGIS-Server] WFS Filter : send empty data instead of XML error when no feature found
Bug #8123 When a getFeature request has a FILTER parameter, and when no data corresponds, QGIS answer sometimes with : <ServiceExceptionReport version="1.3.0">i <ServiceException code="RequestNotWellFormed">No feature found error messages: .</ServiceException> </ServiceExceptionReport> It would be better to send back an empty GML (Or GeoJSON) instead.
1 parent a5ca9d7 commit 562aec3

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/mapserver/qgswfsserver.cpp

+9-7
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
288288

289289
QList<QgsMapLayer*> layerList;
290290
QgsMapLayer* currentLayer = 0;
291+
QgsCoordinateReferenceSystem layerCrs;
292+
QgsRectangle searchRect(0,0,0,0);
291293

292294
mErrors = QStringList();
293295
mTypeNames = QStringList();
@@ -401,12 +403,12 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
401403
}
402404

403405
//map extent
404-
QgsRectangle searchRect = layer->extent();
406+
searchRect = layer->extent();
405407
searchRect.set( searchRect.xMinimum() - 0.000001
406408
, searchRect.yMinimum() - 0.000001
407409
, searchRect.xMaximum() + 0.000001
408410
, searchRect.yMaximum() + 0.000001 );
409-
QgsCoordinateReferenceSystem layerCrs = layer->crs();
411+
layerCrs = layer->crs();
410412

411413
if ( maxFeatures == -1 )
412414
maxFeat += layer->featureCount();
@@ -708,7 +710,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
708710
const QgsFields& fields = provider->fields();
709711

710712
//map extent
711-
QgsRectangle searchRect = layer->extent();
713+
searchRect = layer->extent();
712714

713715
QgsAttributeList attrIndexes = provider->attributeIndexes();
714716
if ( mPropertyName != "*" )
@@ -747,7 +749,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
747749
searchRect.yMinimum() - 0.000001,
748750
searchRect.xMaximum() + 0.000001,
749751
searchRect.yMaximum() + 0.000001 );
750-
QgsCoordinateReferenceSystem layerCrs = layer->crs();
752+
layerCrs = layer->crs();
751753

752754
long featCounter = 0;
753755
if ( featureIdOk )
@@ -963,9 +965,9 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
963965

964966
}
965967
if ( featureCounter == 0 )
966-
throw QgsMapServiceException( "RequestNotWellFormed", QString( "No feature found error messages: %1." ).arg( mErrors.join( ". " ) ) );
967-
else
968-
endGetFeature( request, format );
968+
startGetFeature( request, format, layerCrs, &searchRect );
969+
970+
endGetFeature( request, format );
969971

970972
return 0;
971973
}

0 commit comments

Comments
 (0)