Hello Tim, Thanks for your answer. You're right, I did not notice the schema reference. Sorry.
The WFS server I using is base on the GML 3 schema by default : http://schemas.opengis.net/gml/3.1.1/base/gml.xsd where gml:pos is accept for gml:LinearRing (in geometryBasic2d.xsd). But It's possible for me to use GML SF. So I will follow your recommendation. Best Regards, Julien -----Message d'origine----- De : dev-boun...@openlayers.org [mailto:dev-boun...@openlayers.org] De la part de Tim Schaub Envoyé : lundi 4 janvier 2010 23:14 À : dev@openlayers.org Objet : Re: [OpenLayers-Dev] Format GML 3 issue? Julien Jeudy wrote: > Dear all, > > I have a doubt on a GML 3 OpenLayers format issue (from a WFS 1.1.0). > > In GML there are two ways to list polygons points: > Rrrr. I wrote the GML 3 parser based on the GML Simple Features Profile. Quoting from OGC® 06-049r1 8.4.4.10.2 a): """ in all cases, geometry coordinates shall only be specified using the gml:pos for gml:Point or gml:posList elements for all other types """ Our parser references the schema: http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd That defines LinearRingType with posList only. I know we are generally good about being "liberal in what we accept," but I also like that the parser doesn't account for all the complex legacy of GML. I'd be curious to hear if your server can be coerced to follow the simple features profile. This is generally safer as there are many things that we don't currently support outside the simple features profile. http://trac.openlayers.org/ticket/2396 As suggested there, I'd like to hear exactly what we want to support before adding too many conditions to this parser (and I think it would be better to have subclasses targeted at specific versions/profiles). Tim > 1. a unique posList element: the following geom is correctly transform from > GML3 to OpenLayers geometry > <gml:surfaceMember><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>- > 8427711.443672495 4658480.583807316 -8428116.646618983 4671596.358484082 > -8429661.427192722 4697373.995504196 -8432776.70314257 . > > 2. a list of pos elements: But this geom is not correctly transform > <gml:Surface > srsName="EPSG:900913"><gml:patches><gml:PolygonPatch><gml:exterior><gml:Line > arRing srsName="EPSG:900913"> > <gml:pos>3944245.09999984 3978948.409156078</gml:pos> > <gml:pos>3944282.8999998407 3978974.7107042107</gml:pos> . > > I think it's due to this part of code (from trunk - > OpenLayers.Format.GML.v3.js). Because on each iteration of gml pos the > points array is erased. > "pos": function(node, obj) { > var str = this.getChildValue(node).replace( > this.regExes.trimSpace, "" > ); > var coords = str.split(this.regExes.splitSpace); > var point; > if(this.xy) { > point = new OpenLayers.Geometry.Point( > coords[0], coords[1], coords[2] > ); > } else { > point = new OpenLayers.Geometry.Point( > coords[1], coords[0], coords[2] > ); > } > obj.points = [point]; > }, > > Does anyone know whether the GML is not conform or if it's possible to > propose a patch? > If it's not a GML conformity issue, I think that the following patch can > solve the problem but I'm not sure it's the best way: > "pos": function(node, obj) { > ... > if(obj.points) { > obj.points.push(point); > } else { > obj.points = [point]; > } > } > > thanks, > Julien > > _______________________________________________ > Dev mailing list > Dev@openlayers.org > http://openlayers.org/mailman/listinfo/dev -- Tim Schaub OpenGeo - http://opengeo.org Expert service straight from the developers. _______________________________________________ Dev mailing list Dev@openlayers.org http://openlayers.org/mailman/listinfo/dev _______________________________________________ Dev mailing list Dev@openlayers.org http://openlayers.org/mailman/listinfo/dev