public void writeMembers ( ) { int index = 1 ; GMLFeatureWriter writer = new GMLFeatureWriter ( ) ; for ( SimpleGeometry geometryItem : geometries ) { // Find bounding box information double [ ] lowerCorner = geometryItem . getBBLower ( ) ; double [ ] upperCorner = geometryItem . getBBUpper ( ) ; fileOutput += "<wfs:member>" // Write Geometry Information + "<" + WFSController . TDSNAMESPACE + ":" + ftName + " gml:id=\"" + ftName + "." + index + "\">" // GML Bounding Box + "<gml:boundedBy>" + "<gml:Envelope srsName=" + "\"urn:ogc:def:crs:EPSG::4326\"" + ">" + "<gml:lowerCorner>" + lowerCorner [ 0 ] + " " + lowerCorner [ 1 ] + "</gml:lowerCorner>" + "<gml:upperCorner>" + upperCorner [ 0 ] + " " + upperCorner [ 1 ] + "</gml:upperCorner>" + "</gml:Envelope>" + "</gml:boundedBy>" + "<" + WFSController . TDSNAMESPACE + ":geometryInformation>" ; //write GML features fileOutput += writer . writeFeature ( geometryItem ) ; // Cap off headers fileOutput += "</" + WFSController . TDSNAMESPACE + ":geometryInformation>" + "</" + WFSController . TDSNAMESPACE + ":" + ftName + ">" + "</wfs:member>" ; index ++ ; } }
In the WFS specification for GetFeature each feature type is its own member and so writeMembers add each member to the fileOutput