diff --git a/src/mapserver/qgswfsserver.cpp b/src/mapserver/qgswfsserver.cpp index ff30583..cf6f6ba 100644 --- a/src/mapserver/qgswfsserver.cpp +++ b/src/mapserver/qgswfsserver.cpp @@ -332,7 +332,37 @@ QDomDocument QgsWFSServer::describeFeatureType() //xsd:element QDomElement geomElem = doc.createElement( "element"/*xsd:element*/ ); geomElem.setAttribute( "name", "geometry" ); - geomElem.setAttribute( "type", "gml:GeometryPropertyType" ); + QGis::WkbType wkbType = layer->wkbType(); + switch ( wkbType ) + { + case QGis::WKBPoint25D: + case QGis::WKBPoint: + geomElem.setAttribute( "type", "gml:PointPropertyType" ); + break; + case QGis::WKBLineString25D: + case QGis::WKBLineString: + geomElem.setAttribute( "type", "gml:LineStringPropertyType" ); + break; + case QGis::WKBPolygon25D: + case QGis::WKBPolygon: + geomElem.setAttribute( "type", "gml:PolygonPropertyType" ); + break; + case QGis::WKBMultiPoint25D: + case QGis::WKBMultiPoint: + geomElem.setAttribute( "type", "gml:MultiPointPropertyType" ); + break; + case QGis::WKBMultiLineString25D: + case QGis::WKBMultiLineString: + geomElem.setAttribute( "type", "gml:MultiLineStringPropertyType" ); + break; + case QGis::WKBMultiPolygon25D: + case QGis::WKBMultiPolygon: + geomElem.setAttribute( "type", "gml:MultiPolygonPropertyType" ); + break; + default: + geomElem.setAttribute( "type", "gml:GeometryPropertyType" ); + break; + } geomElem.setAttribute( "minOccurs", "0" ); geomElem.setAttribute( "maxOccurs", "1" ); sequenceElem.appendChild( geomElem );