Skip to content

Commit 8553e80

Browse files
arnaud-morvanrldhont
authored andcommitted
Fix BBOX CRS in WFS GetFeature
1 parent 9809f93 commit 8553e80

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

src/server/services/wfs/qgswfsgetfeature.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -336,11 +336,6 @@ namespace QgsWfs
336336
requestPrecision = QgsServerProjectUtils::wfsLayerPrecision( *project, vlayer->id() );
337337
}
338338

339-
if ( onlyOneLayer && !featureRequest.filterRect().isEmpty() )
340-
{
341-
requestRect = featureRequest.filterRect();
342-
}
343-
344339
if ( aRequest.maxFeatures > 0 )
345340
{
346341
featureRequest.setLimit( aRequest.maxFeatures + aRequest.startIndex - sentFeatures );
@@ -363,6 +358,23 @@ namespace QgsWfs
363358
outputCrs = QgsCoordinateReferenceSystem::fromOgcWmsCrs( query.srsName );
364359
}
365360

361+
if ( onlyOneLayer && !featureRequest.filterRect().isEmpty() )
362+
{
363+
Q_NOWARN_DEPRECATED_PUSH
364+
QgsCoordinateTransform transform( outputCrs, requestCrs );
365+
Q_NOWARN_DEPRECATED_POP
366+
try
367+
{
368+
featureRequest.setFilterRect( transform.transform( featureRequest.filterRect() ) );
369+
}
370+
catch ( QgsException &cse )
371+
{
372+
Q_UNUSED( cse );
373+
}
374+
375+
requestRect = featureRequest.filterRect();
376+
}
377+
366378
// Iterate through features
367379
QgsFeatureIterator fit = vlayer->getFeatures( featureRequest );
368380

tests/src/python/test_qgsserver_wfs.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,8 @@ def test_getfeature_post(self):
219219
<ogc:BBOX>
220220
<ogc:PropertyName>geometry</ogc:PropertyName>
221221
<gml:Envelope xmlns:gml="http://www.opengis.net/gml">
222-
<gml:lowerCorner>8 44</gml:lowerCorner>
223-
<gml:upperCorner>9 45</gml:upperCorner>
222+
<gml:lowerCorner>890555.92634619 5465442.18332275</gml:lowerCorner>
223+
<gml:upperCorner>1001875.41713946 5621521.48619207</gml:upperCorner>
224224
</gml:Envelope>
225225
</ogc:BBOX>
226226
</ogc:Filter>
@@ -268,6 +268,11 @@ def test_getFeatureBBOX(self):
268268
self.wfs_request_compare("GetFeature", '1.1.0', "SRSNAME=EPSG:4326&TYPENAME=testlayer&RESULTTYPE=hits&BBOX=913144,5605992,913303,5606048,EPSG:3857", 'wfs_getFeature_1_1_0_epsgbbox_3_feature_3857')
269269
self.wfs_request_compare("GetFeature", '1.1.0', "SRSNAME=EPSG:4326&TYPENAME=testlayer&RESULTTYPE=hits&BBOX=913206,5606024,913213,5606026,EPSG:3857", 'wfs_getFeature_1_1_0_epsgbbox_1_feature_3857')
270270

271+
self.wfs_request_compare("GetFeature", '1.0.0', "SRSNAME=EPSG:3857&TYPENAME=testlayer&RESULTTYPE=hits&BBOX=913144,5605992,913303,5606048,EPSG:3857", 'wfs_getFeature_1_0_0_epsgbbox_3_feature_3857')
272+
self.wfs_request_compare("GetFeature", '1.0.0', "SRSNAME=EPSG:3857&TYPENAME=testlayer&RESULTTYPE=hits&BBOX=913206,5606024,913213,5606026,EPSG:3857", 'wfs_getFeature_1_0_0_epsgbbox_1_feature_3857')
273+
self.wfs_request_compare("GetFeature", '1.1.0', "SRSNAME=EPSG:3857&TYPENAME=testlayer&RESULTTYPE=hits&BBOX=913144,5605992,913303,5606048,EPSG:3857", 'wfs_getFeature_1_1_0_epsgbbox_3_feature_3857')
274+
self.wfs_request_compare("GetFeature", '1.1.0', "SRSNAME=EPSG:3857&TYPENAME=testlayer&RESULTTYPE=hits&BBOX=913206,5606024,913213,5606026,EPSG:3857", 'wfs_getFeature_1_1_0_epsgbbox_1_feature_3857')
275+
271276
def test_getFeatureFeatureId(self):
272277
"""Test GetFeature with featureid"""
273278
self.wfs_request_compare("GetFeature", '1.0.0', "SRSNAME=EPSG:4326&TYPENAME=testlayer&FEATUREID=testlayer.0", 'wfs_getFeature_1_0_0_featureid_0')

0 commit comments

Comments
 (0)