[OpenLayers-Dev] Format GML 3 issue?

Bart van den Eijnden bartvde at osgis.nl
Mon Jan 4 04:02:58 EST 2010


Hi Julien,

I think your analysis is correct, so please file a ticket with your proposed patch. TIA.

Best regards,
Bart

On Jan 4, 2010, at 9:51 AM, 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:
> 
> 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 at openlayers.org
> http://openlayers.org/mailman/listinfo/dev
> 




More information about the Dev mailing list