Le 09/02/2012 23:07, isnogoud a écrit :
Le 09/02/2012 09:48, rldhont a écrit :
Avant tout import, une petite analyse des données brutes est nécessaire.
La ville de Montpellier fourni aussi son référentiel de rue ainsi que
l'ensemble des passages piétons de la ville. J'avais déjà pratiqué
une petite analyse des données des passages piétons et il se trouve
que la position peut laisser à désirer.
Dans le référentiel de rue, chaque rue est découpé en tronçon reliant
2 intersections qui se suivent. Ensuite chaque tronçon porte un
CODE_VOIE qui permet d'identifier la voie et qui sert de clef
étrangère pour lier d'autres éléments dont les passages piétons et
les adresses.
Et donc si on utilise ce CODE_VOIE pour lier un passage piéton ou une
adresse à sa rue on peut avoir quelques surprises. C'est ainsi que
26323 adresses se trouvent à plus de 11 mètres de la rue à laquelle
elle est associé d'après le CODE_VOIE. D'ailleurs ce CODE_VOIE à
servi à créer l'adresse.
Pour finir l'analyse :
* la majorité des adresses se trouvent à moins de 100 mètres
* 5215 adresses se trouvent à plus de 500 mètres de leur rue
* 2245 adresses se trouvent à plus de 1 km de leur rue
* 524 adresses se trouvent à plus de 2 km de leur rue
* 70 adresses se trouvent à plus de 3 km de leur rue
* 5 adresses se trouvent à plus de 5 km de leur rue
Merci pour cette analyse détaillée qui m'a amené à regarder de plus
près les résultats des traitements sur Montpellier.
Pour associer une adresse à une rue d'OSM, je procède comme suit :
- calculer le barycentre des adresses de chaque rue de l'opendata.
- calculer le barycentre de chaque rue d'OSM (highway avec un name
renseigné sur le secteur de Montpellier)
- calculer la distance de l'adresse la plus éloignée du barycentre des
adresses de la rue
Pourquoi utiliser un barycentre ? Dans PostGIS tu peux utiliser :
* ST_Line_Locate_Point qui renvoit un float entre 0 et 1 indiquant la
position de la porjeté d'un point sur une ligne
* ST_Line_Interpolate_Point qui renvoit un point à partir d'une ligne et
d'un float entre 0 et 1, peut servir avec ST_Line_Locate_Point pour
créer le point de la projection sur la ligne
* ST_Length et St_MakeLine en réutilisant ST_Line_Interpolate_Point et
ST_Line_Locate_Point pour calculer la distance
Tu obtiendrais ainsi quelque chose de précis
- associer les rues d'OSM et les rues de l'opendata par proximité du nom.
Fabien Poulard m'a suggéré quelques pistes. J'ai retenu l'identité de
SOUNDEX et une distance de Levenshtein < 3. Cela permet de tenir
compte des fautes de frappe éventuelles.
Pour Montpellier, les calculs donnent :
2 663 rues avec des barycentres distants de moins de 100 m.
3 446 rues avec des barycentres distants de moins de 500 m
3 592 rues avec des barycentres distants de moins de 1 000 m
3 651 rues avec des barycentres distants de moins de 2 000 m
3 767 rues avec des barycentres distants de moins de 5 000 m
Pour terminer, j'essaye de gommer l'effet d'échelle lié à la longueur
variable des rues en appliquant la condition suivante :
La distance entre les barycentres ne doit pas dépasser deux fois la
distance de l'adresse la plus éloignée au barycentre des adresses.
Les résultats ont été assez satisfaisants sur la communauté urbaine de
Nantes, d'autant qu'il y avait des rues homonymes situées dans des
communes différentes.
Pour Montpellier, l'opendata fournit 2879 rues. Le script fait les
associations de 2131 rues d'opendata avec 3551 rues d'OSM.
Il reste 748 rues sans association avec OSM.
L'import semi-automatique conduit les contributeurs à créer la rue
dans OSM lorsqu'elle manque ou à corriger le nom.
Sur Nantes, des incohérences sont fréquentes sur le type de voie
(rue/avenue/chemin/boulevard/impasse...).
D'autres corrections portent sur des doublons d'adresses ou des
numéros manifestement mal associés à la rue d'après l'ordre des
numéros dans la rue.
Avant tout import il faut déjà supprimer tous les points mal placés,
non ?
René-Luc
3Liz
Montpelliérain
Comment définir qu'un point adresse est mal placé ?
Pour Info les 5 adresses à plus de 5 km sont :
* 3 adresses d'une même rue
* 2 adresses d'une autre rue
Les rues et les points adresses sont à l'opposé l'un de l'autre.
J'ai des images pour le représenté mais ça ne passe pas sur la liste
Certains ont pris l'habitude de mettre le numéro en attribut de
bâtiment. Le rendu est peut être satisfaisant mais ne permet pas de
savoir de quel côté se trouve la boite au lettre ou l'entrée.
Apparemment, le point d'adresse de l'opendata est placé à proximité de
la boite aux lettres en limite de parcelle cadastrale (c'est souvent
le cas pour Nantes).
Pour Montpellier j'ai des doutes sur certains adresses ;-)
A Nantes, nous importons le point proposé par l'opendata mais cela est
laissé à l'appréciation du contributeur, notamment lorsqu'il a une
connaissance précise du terrain.
Avant de déplacer ou d'effacer des points existants, il est de bon ton
de contacter l'auteur pour obtenir son assentiment.
Oui, c'est la philosophie d'OSM
Pour terminer, il est à noter que l'import semi-automatique sur Nantes
permet d'identifier des anomalies dans les données de l'opendata mais
aussi de corriger des erreurs d'OSM.
Pour Nantes, le traitement complet va prendre plusieurs mois. L'apport
d'outils comme celui mis au point par Bruno se révèle indispensable
pour faciliter la tâche.
D'ores et déjà, un peu de publicité pourrait susciter des applications
auprès des acteurs gravitant autour de l'opendata.
Un des arguments à faire valoir est qu'OSM est meilleur que les
données brutes de l'opendata grâce aux corrections apportées par les
contributeurs.
A Montpellier les acteurs de l'OpenData et les responsables sont en
contact avec la communauté OSM :
* Organisation d'un e Mapping Party par le projet OpenData de Montpellier
* Discussion avec les contributeurs montpelliérains
Mais en fait il faut réussir à remonter au niveau des services qui
fournissent les données mais ne s'intéressent pas forcément à l'OpenData
René-Luc
Librement
Christophe
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr