[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&amp;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&amp;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&amp;version=1.1.0&amp;request=DescribeFeatureType&amp;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