Skip to content

Commit ec3f7f6

Browse files
committed
[FEATURE]: Expressions in GetFeatureInfo output
1 parent bf8ed47 commit ec3f7f6

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/mapserver/qgswmsserver.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1496,7 +1496,7 @@ int QgsWMSServer::featureInfoFromVectorLayer( QgsVectorLayer* layer,
14961496
QgsCoordinateReferenceSystem layerCrs = layer->crs();
14971497
bool withGeom = layer->wkbType() != QGis::WKBNoGeometry;
14981498
int version = infoFormat.startsWith( "application/vnd.ogc.gml/3" ) ? 3 : 2;
1499-
QDomElement elem = createFeatureGML( &feature, infoDocument, layerCrs, layer->name(), withGeom, version );
1499+
QDomElement elem = createFeatureGML( &feature, layer, infoDocument, layerCrs, layer->name(), withGeom, version );
15001500
QDomElement featureMemberElem = infoDocument.createElement( "gml:featureMember"/*wfs:FeatureMember*/ );
15011501
featureMemberElem.appendChild( elem );
15021502
layerElement.appendChild( featureMemberElem );
@@ -1523,7 +1523,7 @@ int QgsWMSServer::featureInfoFromVectorLayer( QgsVectorLayer* layer,
15231523

15241524
QDomElement attributeElement = infoDocument.createElement( "Attribute" );
15251525
attributeElement.setAttribute( "name", attributeName );
1526-
attributeElement.setAttribute( "value", featureAttributes[i].toString() );
1526+
attributeElement.setAttribute( "value", QgsExpression::replaceExpressionText( featureAttributes[i].toString(), &feature, layer ) );
15271527
featureElement.appendChild( attributeElement );
15281528
}
15291529

@@ -1607,7 +1607,7 @@ int QgsWMSServer::featureInfoFromRasterLayer( QgsRasterLayer* layer,
16071607

16081608
QgsCoordinateReferenceSystem layerCrs = layer->crs();
16091609
int version = infoFormat.startsWith( "application/vnd.ogc.gml/3" ) ? 3 : 2;
1610-
QDomElement elem = createFeatureGML( &feature, infoDocument, layerCrs, layer->name(), false, version );
1610+
QDomElement elem = createFeatureGML( &feature, 0, infoDocument, layerCrs, layer->name(), false, version );
16111611
layerElement.appendChild( elem );
16121612
}
16131613
else
@@ -2499,6 +2499,7 @@ void QgsWMSServer::convertFeatureInfoToSIA2045( QDomDocument& doc )
24992499

25002500
QDomElement QgsWMSServer::createFeatureGML(
25012501
QgsFeature* feat,
2502+
QgsVectorLayer* layer,
25022503
QDomDocument& doc,
25032504
QgsCoordinateReferenceSystem& crs,
25042505
QString typeName,
@@ -2560,7 +2561,12 @@ QDomElement QgsWMSServer::createFeatureGML(
25602561
{
25612562
QString attributeName = fields->at( i ).name();
25622563
QDomElement fieldElem = doc.createElement( "qgs:" + attributeName.replace( QString( " " ), QString( "_" ) ) );
2563-
QDomText fieldText = doc.createTextNode( featureAttributes[i].toString() );
2564+
QString fieldTextString = featureAttributes[i].toString();
2565+
if ( layer )
2566+
{
2567+
fieldTextString = QgsExpression::replaceExpressionText( fieldTextString, feat, layer );
2568+
}
2569+
QDomText fieldText = doc.createTextNode( fieldTextString );
25642570
fieldElem.appendChild( fieldText );
25652571
typeNameElement.appendChild( fieldElem );
25662572
}

src/mapserver/qgswmsserver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ class QgsWMSServer
226226

227227
QDomElement createFeatureGML(
228228
QgsFeature* feat,
229+
QgsVectorLayer* layer,
229230
QDomDocument& doc,
230231
QgsCoordinateReferenceSystem& crs,
231232
QString typeName,

0 commit comments

Comments
 (0)