J'ai un exemple de géométrie pour une commune très complexe (en
Espagne) pour lequel je ne trouve strictement aucun moyen de le
résoudre proprement.

Voir ici :

http://analyser.openstreetmap.fr/cgi-bin/index.py?relation=343332

Cette commune n'est pas une erreur ! Elle est effectivement très
fragmentée, mais le problème est moins le nombre de fragments que le
fait que certains fragments se touchent uniquement par un seul point,
dans un coin.

On a le cas suivant apparemment non prévu par OSM (mais prévu dans les
modèles OpenGIS), ou mal converti par osm2gis :

Le cas concerné est celui-là (simplifié ici):

   +-----+-----+ (noeuds 1, 2, 3)
   |  A  |  B  |
   +-----+-----+ (noeuds 4, 5, 6)
   |  C  |  A  |
   +-----+-----+ (noeuds 7, 8, 9)

Ici, la commune A possède deux anneaux qui se touchent au point
central, mais ces anneaux n'ont pas d'autre intersection : la surface
de l'intersection des zones est nulle. Dans un cas comme ça, il faut
fermer chaque anneau mais pas moyen non plus d'en faire un seul sauf
si la zone A en haut à gauche rejoint celle de droite en une seule,
auquel cas la zone B devient une enclave.

Donc les deux anneaux de A sont tagués en "outer". Et pas moyen de
joindre le trait descendant du haut vers le centre (à droite de la
première zone A), avec le trait allant du centre à gauche (sous la
première zone A), ni le trai joignant la droite au centre puis le
centre vers le bas, car ces traits qui délimitent une zone A ne
délimitent pas les mêmes zones externes (B et C). Pas moyen non plus
de créer une microzone entre les deux zones A pour éviter qu'elles se
touchent (à quelle commune B ou C faut(il l'attribuer) ?

Normalement, si on dessinait juste des anneaux cela marcherait, mais
on veut ici unifier les segments frontières sans superposition. Le
problème est que OSM2GIS ne parvient pas à générer correctement les
bons anneaux lorsqu'il fait le tri, malgré l'indication correcte ici
que les 4 anneaux représentés par les 6 ways horizontaux et les 6 ways
verticaux de cet exemple sont TOUS marqués (correctement !) de type
"outer", et correctement triés dans les relations A, B et C.

OSM2GIS se trompe et tente de mélanger les ways des deux anneaux
formant A, et aboutit à un anneau qui s'entrecroise lui-même alors que
ce n'est pas le cas dans les données OSM. De fait, la cartographie
obtenue se trompe, omet les deux zones A (qui possèdent en interne
leurs propres enclaves qui ensuite sont considérées comme faisant
partie de la surface A, alors que ces enclaves non représetées dans le
schéma ci-dessus) sont elles-même taguées correctement avec un rôle
"inner" (il croit que c'est faux et en fait des ways "outer".

Du coup, les libellés affichés dans les enclaves de chaque sous-zone
de A affichent le libellé de A et non le libellé propre à ces
enclaves.

OK les ways ne doivent pas se croiser, mais quand ils ont correctement
ordonnés, et leur intersection se réduit à un seul noeud, et tous les
noeuds d'un même anneau (tel qu'ordonné dans la base OSM) sont du même
côté (interne ou externe) de n'importe quel autre way de A, la
définition est valide.

J"ai cherché différentes solutions de tri des nœuds, de fusion ou non
de certains traits, et osmose aussi bien que Layers (qui se basent
tous deux sur les export OSM vers OpenGIS/SQL) se plantent dans les
deux cas.

Une solution alternative serait de créer les deux zones A de façon
séparées, en copiant leurs attributs, mais alors les tests
d'inclusions de points dans une commune échouent selon la zone
considérée (et il n'y a pas moyen non plus de modéliser une collection
de zones).

Comment faire ??? C'est la seule commune espagnole pour laquelle je
n'ai pas réussi à trouver de solution qui marche. On ne parvient donc
jamais à avoir un rendu correct, aussi bien dans Mapnik, que Osmose,
Layers, etc...

Pourquoi ne peut-on pas explicitement modéliser dans une même relation
de type multipolygone que deux sous-zones dessinées par frontières
forment bien des anneaux physiquement séparés, meˆme s'il se touchent
par un point de leur bordure) qui ne doivent pas être joints en un
seul en mélangeant les ways d'un anneau ou de l'autre ? L'outil OSM 2
GIS ne semble discriminer que les anneaux à partir du moment où ils
ont des rôles différents (inner ou outer), mais ici le rôle est outer
dans les deux cas.

Les deux erreurs signalées ici par Osmose n'en sont pas. Les couleurs
obtenues dans Layers sont incohérentes, de même que les libellés
affichés dans les enclaves qui sont alors inversées par endroit...

Pour un cas comme ça, il me faudrait un deuxième rôle autre que
"outer" (par exemple "outer:2" ?) pour marquer les anneaux à garder
séparés... Le rôle anonyme est ignoré : il est considéré comme
équivalent à "outer". Ce deuxième rôle n'est pas nécessaire dans le
cas où les anneaux ne se touchent pas du tout (enclaves et exclaves
classiques), puisqu'alors il est facile de les séparer.

Ce n'est pas le cas ici, OSM2GIS n'est fait qu'à sa guise et persiste
en triant les ways et en charchant à les interconnecter de façon
incorrecte, au point qu'il crée une figure entrecroisée en "8", d'où
l'erreur !

_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr

Reply via email to