QDomElement QgsWFSServer::createPolygonElem( QgsGeometry* geom, QDomDocument& doc ) const { if ( !geom ) { return QDomElement(); } QDomElement polygonElem = doc.createElement( "gml:Polygon" ); QgsPolygon poly = geom->asPolygon(); for ( int i = 0; i < poly.size(); ++i ) { QString boundaryName; if ( i == 0 ) { boundaryName = "outerBoundaryIs"; } else { boundaryName = "innerBoundaryIs"; } QDomElement boundaryElem = doc.createElementNS( "http://www.opengis.net/gml", boundaryName ); QDomElement ringElem = doc.createElement( "gml:LinearRing" ); QDomElement coordElem = createCoordinateElem( poly.at( i ), doc ); ringElem.appendChild( coordElem ); boundaryElem.appendChild( ringElem ); polygonElem.appendChild( boundaryElem ); } return polygonElem; }
QDomElement QgsWFSServer::createLineStringElem( QgsGeometry* geom, QDomDocument& doc ) const { if ( !geom ) { return QDomElement(); } QDomElement lineStringElem = doc.createElement( "gml:LineString" ); QDomElement coordElem = createCoordinateElem( geom->asPolyline(), doc ); lineStringElem.appendChild( coordElem ); return lineStringElem; }
QDomElement QgsWFSServer::createPointElem( QgsGeometry* geom, QDomDocument& doc ) const { if ( !geom ) { return QDomElement(); } QDomElement pointElem = doc.createElement( "gml:Point" ); QgsPoint p = geom->asPoint(); QVector<QgsPoint> v; v.append( p ); QDomElement coordElem = createCoordinateElem( v, doc ); pointElem.appendChild( coordElem ); return pointElem; }
QDomElement QgsWFSServer::createBoxElem( QgsRectangle* box, QDomDocument& doc ) /*const*/ { if ( !box ) { return QDomElement(); } QDomElement boxElem = doc.createElement( "gml:Box" ); QVector<QgsPoint> v; QgsPoint p1; p1.set( box->xMinimum(), box->yMinimum() ); v.append( p1 ); QgsPoint p2; p2.set( box->xMaximum(), box->yMaximum() ); v.append( p2 ); QDomElement coordElem = createCoordinateElem( v, doc ); boxElem.appendChild( coordElem ); return boxElem; }