Skip to content

Commit ccde1d4

Browse files
committedFeb 28, 2014
BUG #9674 WFS GetFeature Request does not return features
The GetFeature Request does not return elements. The response of the request is valid but with a bbox : 0,0,0,0 and no features. The simple request : * SERVICE=WFS * VERSION=1.0.0 * REQUEST=GeTFeature * TYPENAME=* * OUTPUTFORMAT=* return no features.
1 parent 87e6b13 commit ccde1d4

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed
 

‎src/mapserver/qgsprojectparser.cpp

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -836,34 +836,44 @@ void QgsProjectParser::describeCoverage( const QString& aCoveName, QDomElement&
836836
}
837837
}
838838

839-
QList<QgsMapLayer*> QgsProjectParser::mapLayerFromTypeName( const QString& tName, bool useCache ) const
839+
QList<QgsMapLayer*> QgsProjectParser::mapLayerFromTypeName( const QString& aTypeName, bool useCache ) const
840840
{
841841
QList<QgsMapLayer*> layerList;
842842

843843
if ( mProjectLayerElements.size() < 1 )
844844
{
845845
return layerList;
846846
}
847-
848847
QStringList wfsLayersId = wfsLayers();
849848

849+
QStringList typeNameList;
850+
if ( aTypeName != "" )
851+
{
852+
QStringList typeNameSplit = aTypeName.split( "," );
853+
foreach ( const QString &str, typeNameSplit )
854+
{
855+
if ( str.contains( ":" ) )
856+
typeNameList << str.section( ":", 1, 1 );
857+
else
858+
typeNameList << str;
859+
}
860+
}
861+
850862
foreach ( const QDomElement &elem, mProjectLayerElements )
851863
{
852864
QString type = elem.attribute( "type" );
853865
if ( type == "vector" )
854866
{
855-
QgsMapLayer *mLayer = createLayerFromElement( elem, useCache );
867+
QgsMapLayer *mLayer = createLayerFromElement( elem );
856868
QgsVectorLayer* layer = dynamic_cast<QgsVectorLayer*>( mLayer );
857-
if ( !layer || !wfsLayersId.contains( layer->id() ) )
858-
return layerList;
869+
if ( !layer )
870+
continue;
859871

860872
QString typeName = layer->name();
861873
typeName = typeName.replace( " ", "_" );
862-
if ( tName == typeName )
863-
{
874+
875+
if ( wfsLayersId.contains( layer->id() ) && ( aTypeName == "" || typeNameList.contains( typeName ) ) )
864876
layerList.push_back( mLayer );
865-
return layerList;
866-
}
867877
}
868878
}
869879
return layerList;

‎src/mapserver/qgswfsserver.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,11 +1015,12 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
10151015
}
10161016

10171017
}
1018-
if ( featureCounter == 0 )
1019-
startGetFeature( request, format, layerCrs, &searchRect );
10201018

10211019
QgsMapLayerRegistry::instance()->removeAllMapLayers();
1022-
endGetFeature( request, format );
1020+
if ( featureCounter == 0 )
1021+
throw QgsMapServiceException( "RequestNotWellFormed", mErrors.join( ". " ) );
1022+
else
1023+
endGetFeature( request, format );
10231024

10241025
return 0;
10251026
}

0 commit comments

Comments
 (0)