[OpenLayers-Users] request and parse GML
Barbara Fiederer
barbara.fiederer at web.de
Thu Nov 12 03:15:03 EST 2009
Dear list,
I've got problems with parsing a GML-Format. I do get two objects though from geoserver, as I filtered them.
But I don't seem to be able to get the key:value-pairs either of the request or the parser (or both ;-)) set correctly.
Can someone please help me use the namespace prefixes and tags correctly.
var filter_header = '<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" service="WFS" ';
var filter_header = filter_header + ' version="1.1.0" ';
var filter_header = filter_header + 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">';
var filter_header = filter_header + '<wfs:Query typeName="demo:flurst" ';
var filter_header = filter_header + 'xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd ';
var filter_header = filter_header + 'http://myDomain.com:8090/geoserver/wfs/DescribeFeatureType?version=1.1.0&typename=demo:flurst" ';
var filter_header = filter_header + 'srsName="EPSG:31468" xmlns:feature="http://myDomain.com/demo">';
var filter_footer = '</wfs:Query></wfs:GetFeature>';
var filter_1_1 = new OpenLayers.Format.Filter({version: "1.1.0"});
var xml = new OpenLayers.Format.XML();
var filter_body = new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.OR,
filters: [
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: "infotext",
value: "FS30117000000"
}),
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: "infotext",
value: "FS50068000000"
})
]
});
filter_body = xml.write(filter_1_1.write(filter_body));
var final_filter = filter_header + filter_body + filter_footer;
var dbresponse = new OpenLayers.Request.POST({
url: "http://myDomain.com:8090/geoserver/wfs/DescribeFeatureType?version=1.1.0&typename=demo:flurst",
featureNS: "http://myDomain.com/demo",
featureNSPrefix:"gml",
featureType: "flurst",
data: final_filter,
geometryName: "the_geom",
schema:"http://myDomain.com:8090/geoserver/wfs/DescribeFeatureType?version=1.1.0&typename=demo:flurst",
callback:function(dbresponse){
//console.log(dbresponse.responseText);
var g = new OpenLayers.Format.GML(
{
featureType:'flurst',
gmlns: 'http://myDomain.com/demo',
featureNS:'http://myDomain.com/demo',
featurePrefix:"wfs",
featureName: 'flurst',
geometryName: "the_geom",
collectionName:"MultiSurface",
extractAttributes: true,
}
);
//console.log(g);
var vectorlayer = new OpenLayers.Layer.Vector("Vector");
var features = g.read(dbresponse.responseText);
console.log(features);
vectorlayer.addFeatures([features]);
map.addLayer(vectorlayer);
}
});
This is the answer copied from FIREBUG/Console:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="2" timeStamp="2009-11-12T08:41:00.430+01:00" xsi:schemaLocation="http://www.opengis.net/wfs http://myDomain.com:8090/geoserver/schemas/wfs/1.1.0/wfs.xsd http://myDomain.com/demo http://myDomain.com:8090/geoserver/wfs?service=WFS&version=1.1.0&request=DescribeFeatureType&typeName=demo:flurst"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:demo="http://myDomain.com/demo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ows="http://www.opengis.net/ows"
xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink">
<gml:featureMembers>
<demo:flurst gml:id="flurst.1359">
<demo:infotext>FS30117000000</demo:infotext>
<demo:gemeinde>Musterstadt</demo:gemeinde>
<demo:gemarkung>Musterfeld</demo:gemarkung>
.. more attributes ...
<demo:the_geom>
<gml:MultiSurface srsName="http://www.opengis.net/gml/srs/epsg.xml#31468">
<gml:surfaceMember>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:posList> ... long list of coordinates .. .
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</demo:the_geom>
</demo:flurst>
<demo:flurst gml:id="flurst.1537">
.. another feature ..
</demo:flurst>
</gml:featureMembers>
</wfs:FeatureCollection>
I use Geoserver 1.7.4., OL 2.8
I hope, someone can help me.
Thanks in advance from Babsi
_____________________________________________________________
DSL-Preisknaller: DSL-Komplettpakete von WEB.DE schon für
16,99 Euro/mtl.!* Hier klicken: http://produkte.web.de/go/02/
More information about the Users
mailing list