@@ -573,10 +573,13 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
573573
574574 // map extent
575575 searchRect = layer->extent ();
576- searchRect.set ( searchRect.xMinimum () - 1 . / pow ( 10 ., layerPrec )
577- , searchRect.yMinimum () - 1 . / pow ( 10 ., layerPrec )
578- , searchRect.xMaximum () + 1 . / pow ( 10 ., layerPrec )
579- , searchRect.yMaximum () + 1 . / pow ( 10 ., layerPrec ) );
576+ if ( !searchRect.isEmpty () )
577+ {
578+ searchRect.set ( searchRect.xMinimum () - 1 . / pow ( 10 ., layerPrec )
579+ , searchRect.yMinimum () - 1 . / pow ( 10 ., layerPrec )
580+ , searchRect.xMaximum () + 1 . / pow ( 10 ., layerPrec )
581+ , searchRect.yMaximum () + 1 . / pow ( 10 ., layerPrec ) );
582+ }
580583 layerCrs = layer->crs ();
581584
582585 QgsFeatureRequest fReq ;
@@ -1263,7 +1266,7 @@ void QgsWFSServer::startGetFeature( QgsRequestHandler& request, const QString& f
12631266 if ( format == " GeoJSON" )
12641267 {
12651268 fcString = " {\" type\" : \" FeatureCollection\" ,\n " ;
1266- if ( crs.isValid () )
1269+ if ( crs.isValid () && !rect-> isEmpty () )
12671270 {
12681271 QgsGeometry* exportGeom = QgsGeometry::fromRect ( *rect );
12691272 QgsCoordinateTransform transform;
@@ -1279,6 +1282,9 @@ void QgsWFSServer::startGetFeature( QgsRequestHandler& request, const QString& f
12791282 Q_UNUSED ( cse );
12801283 }
12811284 }
1285+ // EPSG:4326 max extent is -180, -90, 180, 90
1286+ rect = new QgsRectangle ( rect->intersect ( new QgsRectangle ( -180.0 , -90.0 , 180.0 , 90.0 ) ) );
1287+
12821288 fcString += " \" bbox\" : [ " + qgsDoubleToString ( rect->xMinimum (), prec ) + " , " + qgsDoubleToString ( rect->yMinimum (), prec ) + " , " + qgsDoubleToString ( rect->xMaximum (), prec ) + " , " + qgsDoubleToString ( rect->yMaximum (), prec ) + " ],\n " ;
12831289 fcString += " \" features\" : [\n " ;
12841290 result = fcString.toUtf8 ();
0 commit comments