[Migration:Résolu] petit problème avec OL et gml

Problèmes, bugs et difficultés rencontrés sur le site.
Avatar du membre
sly
Messages : 5041
Enregistré le : 29 févr. 2004, 17:59
Localisation : Chambéry - Savoie

[Migration:Résolu] petit problème avec OL et gml

Message par sly »

Si je renvois à OL mes géométries avec des coordonnées au format :
<gml:coordinates>6.2,45.56</gml:coordinates>

OL ne semble pas en vouloir

Si je les envois au format
<gml:coordinates decimal="." cs="," ts=" ">6.2,45.56</gml:coordinates>
là, il en veut, sauf que decimal="." cs="," ts=" " c'est le par défaut d'après la doc GML.
(Ouverture testée avec qgis, tout se passe bien)

Évidement, dans la logique "on génère nous même" c'est pas si difficile d'expliciter le par défaut. Sauf que depuis qu'on utilise postGIS, la fonction st_asGML fait tout toute seule comme une grande et je m'évite toute galère pour les multi-polygones et ça fait plein de code en moins à maintenir.

Expert OL, une idée ?
Avatar du membre
Dominique
Messages : 3705
Enregistré le : 08 avr. 2006, 21:58

Message par Dominique »

Hé oui, les parsers embarqués dans OL sont capricieux (c'est bien leur tour !)
Et ne me demandez pas de les modifier: j'ai essayé, c'est un vrai casse tête (en +, pas pérenne)
Ce qui prouve que, quand on veut qu'un module envoie des données à un autre module, il faut au moins avoir la possibilité de modifier un des modules sinon on est rapidement bloqué

Note: les générateur de code embarqués dans OL sont aussi capricieux (suite de notre discussion d'hier sur la génération des formats par OL)
Avatar du membre
sly
Messages : 5041
Enregistré le : 29 févr. 2004, 17:59
Localisation : Chambéry - Savoie

Message par sly »

Dominique a écrit :Hé oui, les parsers embarqués dans OL sont capricieux (c'est bien leur tour !)
Et ne me demandez pas de les modifier: j'ai essayé, c'est un vrai casse tête (en +, pas pérenne)
Ce qui prouve que, quand on veut qu'un module envoie des données à un autre module, il faut au moins avoir la possibilité de modifier un des modules sinon on est rapidement bloqué
Argh, quelle tristesse, si OL n'arrive pas à communiquer en direct avec PG alors qu'il sont tous les deux issus de l'OGC, ou va-t-on ma bonne dame !

Du bon GML bien correct pourtant, 50 lignes de code qu'on aurrait pû jeter et php ne faisait plus que jouer à la passe à 3 en faisant passer de PG à OL.

Ben retour à je te me me le fais à la main alors que PG sort nativement du GML (ou plutôt je vais tenter d'injecter la "," puisque OL y tient tant)
Avatar du membre
sly
Messages : 5041
Enregistré le : 29 févr. 2004, 17:59
Localisation : Chambéry - Savoie

Message par sly »

Étant du genre têtu, surtout quand la norme est respectée, je farfouille donc les docs de openlayers à la recherche de l'option oubliée ou du patch salvateur ou de l'explication du où est-ce que je [censuré].

Première piste :
http://openlayers.org/dev/examples/gml-layer.html

L'exemple simple fourni sur le site OL ouvre un polygone simple en GML et qui a cette forme :
http://openlayers.org/dev/examples/gml/polygon.xml

C'est à dire la forme que je fourni moi sans préciser les séparateurs, donc, OL sait faire semble-t-il, au moins dans des versions récentes, je continue de chercher...
Avatar du membre
sly
Messages : 5041
Enregistré le : 29 févr. 2004, 17:59
Localisation : Chambéry - Savoie

Message par sly »

Bon, j'ai bien fait de me battre, en fait, je me gourais complètement, OL supporte bien le format de coordonnées par défaut, ce que notre version de OL ne supporte pas mais que j'ai mis du temps à comprendre, ce sont les multipolygones.

C'est sans doute une des raisons qui font que yip n'a pas pu utiliser notre version "custom" de ol mais qu'avec une version plus récente, ça passait.

Bref, gros avantage donc d'avoir la main ;-) j'ai arbitrairement pris le premier polygone (ce qui ne change rien dans 98% des cas : seules quelques rares réserves naturelles ne pourront s'afficher que partiellement) et tout roule sans bidouille bien méchantes :

J'ai remplacé
st_asGML(geom) par st_asGML(st_GeometryN(geom,1)) et roule ma poule !