Bonjour à tous,

J'ai commencé à faire un premier programme, ocaml-osm-check[1],
d'analyse et de vérification des tags. Rien de bien exceptionnel mais
peut-être que ça peut aider pour rendre les cartes OSM plus « propres ».

J'ai appliqué mon programme sur hexagone-latest.osm.bz2 du 1er juin.

== Vérification ==

Exemple de sortie :
  
http://www.linux-france.org/~dmentre/open-street-map/hexagone-latest.osm.bz2.warn.html

Les quelques vérifications qui sont faites :

 - vérifie que le tag « highway » est bien appliqué sur les /nodes/ et
   /ways/. Par exemple :

   1. Node id=3178004 user='chasu' lat=46.8304494 lon=6.8548871: Tag 'highway' 
with value 'motorway_link' is not be allowed for this element
    -> d'après « Map Features[2] » un « motorway_link » ne peut pas être
       appliqué à un /node/.

   Bien souvent, les warnings sont dûs à des erreurs de frappe (par
   exemple, warning 780, GwennG qui met « pedstrian » au lieu de «
   pedestrian » ;-) ou des valeurs « bizarres ».

 - vérifie le type de la valeur de certains tags, entiers ou
   flottants. Par exemple :

   57. Node id=26692595 user='' lat=48.4312043 lon=0.0911449: Value '28 935' 
for tag 'population' is not an integer
    -> l'espace dans « 28 935 » fait que je considère que ce n'est pas
       légal. Il n'y a que quelques valeurs qui sont écrites comme ça.

Bon, je ne dis pas que mes vérifications sont bonnes. :-) Il y a
certainement des mauvaises interprétations dans mon programme. Un
premier retour serait que certains utilisateurs expérimentés d'OSM
jettent un coup d'oeil sur mes messages et me disent ce qui n'est pas
une erreur (et pourquoi).

On peut imaginer des vérifications plus précises, par exemple que «
course » est un flottant entre 0 et 360.

En tout état de cause, faire une analyse ultra-précise me semble
difficile vu la variabilité des valeurs pour certains tags et le nombre
de tags. Mais on peut imaginer de suivre les choix de la communauté « au
plus près », au moins pour les tags importants.

== Analyse ==

Exemple de sortie :
  
http://www.linux-france.org/~dmentre/open-street-map/hexagone-latest.osm.bz2.stats.html

L'idée est de sortir tous les couples de tags (clé, valeur). Évidemment,
certains tags ont des valeurs hautement variables (« ref » ou « name »
par exemple) donc dans ce cas là je ne compte que les occurences de la
clé (lignes avec « -- » pour la valeur).

Quand il y a moins de cinq éléments qui ont un même couple de tag, je
sors les identifiants OSM des éléments plutôt que le nombre
d'occurences.

La lecture rapide de cette page est éclairante, il y a de tout ! :-)

Ça peut notamment donner des idées sur des vérifications à faire, par
exemple :

osmids:4757302;         maxspeed        30km/h
 -> normalement la vitesse de « maxspeed » est un entier, donné sans
    unités.

osmids:13502467;        key     junction=roundabout
 -> apparement, quelqu'un n'a pas compris la façon d'écrire les tags.



Je suis preneur de toute critique, positive ou négative.

Amicalement,
david

Footnotes: 
[1]  C'est du logiciel libre (GNU GPLv2), programmé en OCaml et dont les
     sources sont disponibles ici :
       http://www.linux-france.org/cgi-bin/hgwebdir.cgi/ocaml-osm-route/latest

[2]  http://wiki.openstreetmap.org/index.php/Map_Features

-- 
GPG/PGP key: A3AD7A2A David MENTRE <[EMAIL PROTECTED]>
 5996 CC46 4612 9CA4 3562  D7AC 6C67 9E96 A3AD 7A2A

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

Répondre à