User:Mga geo/Voie

From OpenStreetMap Wiki
Jump to navigation Jump to 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