« S'*il n'y a pas de solution*, *c'est qu*'*il n'y a pas de problème*. »
Devise des Shadoks ! 2012/5/4 Marc Sibert <m...@sibert.fr> > Le 04/05/2012 13:29, Philippe Verdy a écrit : > >> 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<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<http://lists.openstreetmap.org/listinfo/talk-fr> >> > Pourquoi ne pas simplement fermer les petites surfaces par des contours > continus et ne pas "mutualiser" les limites, c'est à dire en faire > plusieurs. > La modélisation restera juste mais non optimale. > > Note : "Quand il n'y a pas de solution... c'est qu'il n'y a pas de > problème !" (ou qu'il est mal posé). Ici le problème, c'est le code > d'osm2gis qui ne gère pas correctement le modèle d'OSM. Il faudrait poser > la question à dev. Je ne vois pas d'utilité à remettre en cause le modèle > OSM. > > -- > Marc Sibert > mailto:m...@sibert.fr > > > ______________________________**_________________ > Talk-fr mailing list > Talk-fr@openstreetmap.org > http://lists.openstreetmap.**org/listinfo/talk-fr<http://lists.openstreetmap.org/listinfo/talk-fr> > -- -------------------------------------------------------------------- Arnaud Van De Casteele Mines Paris Tech - CRC Sophia-Antipolis 0698 24 25 29 SIG - WebMapping - Spatial Ontology - GeoCollaboration Web Site http://perso.crc.mines-paristech.fr/~arnaud.van_de_casteele/ http://geotribu.net/ http://www.i2c.eu/
_______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr