Le 5 mai 2012 10:23, DH <dhel...@free.fr> a écrit :
>> Ton lien est très bien et j'étais déjà tombé dessus mais il parle de la
>> primitive "POLYGON" de l'OGC pas de la primitive MULTIPOLYGON dont il est
>> question ici, qui elle autorise que deux polygons distinct se touchent au
>> sein
>> d'une primite MULTIPOLYGON
>>
> Exact. Pour un multipolygon ça ne le rend pas invalide. Comment se prend la
> décision de passer un way en polygone ou en multipolygone (hors cas faciles)

Le problème n'est pas celui de la validité (selon le modèle OSM
actuel) mais vient de l'ambiguité d'interprétation du modèle OSM,
parce que le cas que j'ai donné n'ai pas clairement documenté et
défini pour que la conversion OSM>GIS puisse se faire sans difficulté.

Une présupposition non décritedu modèle Multipolygone d'OSM s'avère
fausse et c'est bien là le problème. Et ce n'est pas non plus un bogue
à proprement parler d'osm2gis puisqu'il fait de son mieux pour
interpréter ce que lui indiquent les données OSM, afin de savoir quoi
générer : un ou plusieurs plolygnes fermés ou non, selon les
connexions de segments qu'il trouve dans la base.

> Si les bordures constitutives de la commune sont transformées en polygon, il
> y une erreur de validité de la figure. Si les bordures dont converties en
> multipolygon, ça passera sans souçi.

Si un noeud est utilisé par 4 segments (donc utilisés par au moins 2
ways différents), osm2gis ne sait pas comment joindre les segments car
il n'a pour l'instant encore strictement aucun de critère défini (et
documenté)

Il connecte tout ce qu'il peut (et pas dans l'ordre qui serait
approprié) puisqu'il ne tient pas compte (et ne peut PAS ENCORE tenir
compte) des rôles des membres d'une relation ni de leur ordre relatif
dans la relation, à cause des différentes façons de créer des
multipolygones (avec des rôles incohérents, avec ou sans tri, il doit
se débrouiller pour reconnecter le tout, et si ça marche pour les cas
simples et les plus fréquents où les polygones ne se touchent pas
entre eux, l'algo ne PEUT PAS fonctionner si ces polygones se
touchent).

Sans ces critères clairement défini, les multipolygones d'OSM ne
peuvent pas gérer correctement les polygones qui se touchent (alors
qu'ils sont nécessaires et standards dans les modèles GIS, même pour
le profil Simple Features).

Moi je propose une solution simple : le critère de choix pour les
connexion c'est le **rôle** (sans même lui attribuer une signification
"outer" ou "inner", c'est un simple nom symbolique permettant
d'identifier et séparer les polygones distincts). Si on fait ça
correctement, et si on le documente il devrait alors être possible de
modifier osm2gis pour qu'il en tienne compte au lieu de connecter
n'importe quelle paire de segments. Pour la compatibilité, il faut
toutefois que le rôle anonyme et les rôles "outer" et "exclave" soient
reconnus comme équivalentsau seul rôle étiqueté "outer" (mais en
continuant à ignorer leur signification en tant que contour externe ou
interne, car osm2gis le déterminera tout seul), et de même pour les
rôles "enclave" et "inner". Et d'autres rôles de la forme "outer:*" ou
'inner:*" devraient être acceptés, mais distingués pour permettre la
séparation des polygones qui ne doivent pas s'interconnecter.

En revanche l'ordre des membres dans la relation ne doit jouer
strictement aucun rôle (cet ordre des membres dans la relation ne sert
strictement à rien, on pourrait même éviter de le stocker dans la base
OSM, ce qui lui éviterait aussi de passer du temps et de l'espace
disque temporaire dans les tris pendant les requêtes de chargement ou
pour mettre à jour un index si le tri est précalculé et stocké dans
l'index). L'ordre des membres dans la liste n'est qu'une facilité de
présentation dans les éditeurs, mais les éditeurs peuvent trier ces
listes eux-mêmes automatiquement, et soumettre les listes dans
n'importe quel ordre (le serveur n'a pas besoin de stocker cet ordre
dans un index, ni même de trier les requêtes de chargement : il ira
d'autant plus vite !).

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

Répondre à