[FEATURE][SERVER] GetFeature with an other Geometry

This commit completes 'GetFeature without geometry' e3a832c29e4a98ed70b8085563aa0c8a92d44669

The GeometryName parameter can be used to get the extent or the centroid as the geometry.
This Feature can be used to have a lighter gml document.

The extra parameter GeometryName can be:

* None
* Extent
* Centroid
This commit is contained in:
rldhont 2015-05-22 22:47:57 +02:00
parent df7e07bcf7
commit 2c5c866277

View File

@ -1696,7 +1696,12 @@ QString QgsWFSServer::createFeatureGeoJSON( QgsFeature* feat, int prec, QgsCoord
fStr += " \"bbox\": [ " + qgsDoubleToString( box.xMinimum(), prec ) + ", " + qgsDoubleToString( box.yMinimum(), prec ) + ", " + qgsDoubleToString( box.xMaximum(), prec ) + ", " + qgsDoubleToString( box.yMaximum(), prec ) + "],\n";
fStr += " \"geometry\": ";
fStr += geom->exportToGeoJSON( prec );
if ( mGeometryName == "EXTENT" )
fStr += QgsGeometry::fromRect( box )->exportToGeoJSON( prec );
else if ( mGeometryName == "CENTROID" )
fStr += geom->centroid()->exportToGeoJSON( prec );
else
fStr += geom->exportToGeoJSON( prec );
fStr += ",\n";
}
@ -1759,7 +1764,13 @@ QDomElement QgsWFSServer::createFeatureGML2( QgsFeature* feat, QDomDocument& doc
QgsGeometry* geom = feat->geometry();
QDomElement geomElem = doc.createElement( "qgs:geometry" );
QDomElement gmlElem = QgsOgcUtils::geometryToGML( geom, doc, prec );
QDomElement gmlElem;
if ( mGeometryName == "EXTENT" )
gmlElem = QgsOgcUtils::geometryToGML( QgsGeometry::fromRect( geom->boundingBox() ), doc, prec );
else if ( mGeometryName == "CENTROID" )
gmlElem = QgsOgcUtils::geometryToGML( geom->centroid(), doc, prec );
else
gmlElem = QgsOgcUtils::geometryToGML( geom, doc, prec );
if ( !gmlElem.isNull() )
{
QgsRectangle box = geom->boundingBox();
@ -1818,7 +1829,13 @@ QDomElement QgsWFSServer::createFeatureGML3( QgsFeature* feat, QDomDocument& doc
QgsGeometry* geom = feat->geometry();
QDomElement geomElem = doc.createElement( "qgs:geometry" );
QDomElement gmlElem = QgsOgcUtils::geometryToGML( geom, doc, "GML3", prec );
QDomElement gmlElem;
if ( mGeometryName == "EXTENT" )
gmlElem = QgsOgcUtils::geometryToGML( QgsGeometry::fromRect( geom->boundingBox() ), doc, "GML3", prec );
else if ( mGeometryName == "CENTROID" )
gmlElem = QgsOgcUtils::geometryToGML( geom->centroid(), doc, "GML3", prec );
else
gmlElem = QgsOgcUtils::geometryToGML( geom, doc, "GML3", prec );
if ( !gmlElem.isNull() )
{
QgsRectangle box = geom->boundingBox();