User:Mga geo/Voie

From OpenStreetMap Wiki
Jump to: navigation, search

Comparatif voies

Avec la libération de ces données par Rennes Métrole, j'ai essayé de faire un rapprochement avec les données d'OSM.

Il y a très peu de pages web sur le sujet


Les sources de données :

Les points critiques

Graphie

  • Minuscule/majuscule
    • rva: la première lettre n'est pas en majuscule
    • rva: Rond-point au lieu de Rond-Point
    • rva: pas de majuscule accentuée

voie sur plusieurs communes

  • Rue des Landelles : Rennes / Cesson

Longueur

  • osm: manque souvent le rond-point à la fin des impasses
  • voie avec plusieurs chaussées
    • Rue de Rennes à Cesson
      • rva: plusieurs troncons
  • voie avec des troncons d'autres types
    • voie de service
    • piétonne
    • Boulevard des Métairies

Forme

  • rond-point en fin d'impasse
    • turning_circle

Outils

Pour visualiser les données, j'ai utilisé OpenLayers et des couches en provenance de GéoBretagne (prises de vues aériennes), avec en plus :

  • une couche des données de la voie en provenance d'OSM
  • une couche des données de la voie en provenance de RVA
  • l'User:Mga_geo/Overpass pour l'extraction des données
  • User:Mga_geo/Postgis pour la partie base de données

Pour l'instant, cet outil ne fonctionne (mal) que sur Cesson-Sévigné : http://mga.alwaysdata.net/geoportail/exemples/gb_osm.html

À tester :

  • Rue des Lauriers
  • Rue de Rennes
  • Rue des Pins

Importation des données voie de Rennes Métropole

Facile : oui et non !

Les données géographiques

  • en format shapefile Lambert cc48
  • importation du fichier shp des troncons
  • requête sql de production d'un kml
SELECT ST_AsKml(ST_Transform(geom, 4326), 6), mode, voie_nom_c FROM rva_troncons where voie_insee = '35051' and voie_nom_c like '$voie'

Les données d'OSM

voie

  • utilisation de l'overpass
  • utilisation d'une bbox liée à la commune
    • Rue de Rennes sur Cesson et Thorigné
  • requête overpass de production d'un fichier osm
<union>
  <query type="way">
    <bbox-query s="$s" n="$n" w="$w" e="$e"/>
    <has-kv k="highway"/>
    <has-kv k="name" v="$voie"/>
  </query>
  <query type="relation">
    <bbox-query s="$s" n="$n" w="$w" e="$e"/>
    <has-kv k="type" v="route"/>
    <has-kv k="route" v="road"/>
    <has-kv k="name" v="$voie"/>
  </query>
</union>
<union>
  <item/>
  <recurse type="down"/>
</union>
<print order="quadtile"/>
EOF;

Comparaisons

J'ai essayé de faire une comparaison des deux sources.

La première étape a été de constituer la géométrie de la voie.

Pour rva, assembler les tronçons en voie est simple grace à l'id_voie !

  SELECT id_voie, mode, voie_insee, voie_nom_c, ST_LineMerge(ST_Union(geom)) as geom
  FROM rva_troncons
  GROUP BY voie_insee, voie_nom_c, id_voie, mode

Pour osm, il faut d'abord ne traiter que les données d'une commune :

  local table1=lines
  local table2=commune
  local table="${table1}_${table2}"
  f_csv="${curDir}/${CFG}/${table}.csv"
  cat <<EOFSQL >> /tmp/sql
SELECT now(), 'pg_lines_commune() ${table}';
-- que sur l'emprise d'une commune
DROP TABLE IF EXISTS ${table};
CREATE TABLE ${table} AS (
  SELECT ${table1}.*
  FROM ${table1}, ${table2}
  WHERE ST_INTERSECTS(${table1}.geom, ${table2}.geom)
  AND ${table1}.name != ''
  AND ${table1}.highway IN ('residential', 'secondary', 'tertiary', 'road' )
  AND ${table2}.insee_com = '35051'
)
;
-- pour avoir un fichier propre
\pset tuples_only
\pset format unaligned
\pset recordsep '\n'
\o ${f_csv}
SELECT name
FROM ${table}
WHERE name != ''
GROUP BY name
ORDER BY name
;
\o
EOFSQL

Puis il est possible d'assembler les "lines" en voie comme pour rva en utilisant le "name".

Comparaison Hausdorff

Sur http://mga.alwaysdata.net/geoportail/exemples/rva_osm.html, on trouve dans la marge gauche la liste des voies (base rva) avec la distance Hausdorff.

Cette comparaison n'est effectuée que pour les voies "automobile" :

  • rva: mode="Automobile"
  • osm: 'residential', 'secondary', 'tertiary', 'road', 'unclassified'

La distance est présente pour les couples voie_nom_c(rva)=name(osm). Plus la valeur est grandre, plus les formes sont différentes !

Les cas d'absence sont :

  • différence de graphie
    • rue de Paris <=> route de Paris
  • absence dans OSM
  • mauvais typage du "highway" dans OSM
  • typage surface dans OSM
    • Rue de la Touche Ablin => Chemin : Rue de la Touche Ablin (24778716)
      • area = yes

Comparaison recouvrement

J'ai adapté la méthode utilisée pour les données de Brest Métropole (http://wiki.openstreetmap.org/wiki/BMO) :

  • coordonnées Lambert CC48 plutôt que WGS84
  • buffer de 10 mètres
  • calcul du recouvrement des tronçons

La valeur indique le plus fort pourcentage de la longueur du tronçon inclue dans une voie bufferisée. Quelques tronçons non présents dans OSM:

  • Mail de Bourgchevreuil