Skip to content

Commit efce338

Browse files
committed
[Server][WFS] GeoJSON FeatureCollection BBOX is restricted to -180,-90,180,90
1 parent 9f0ea45 commit efce338

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

src/server/qgswfsserver.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)