User:Mga geo/Transports publics/ligne route
Présentation
Problème : comment convertir une ligne en une succession de ways pour mettre à jour la relation route
Liens
- http://wiki.openstreetmap.org/wiki/Relation:route
- http://wiki.openstreetmap.org/wiki/OSM_Route_Manager
- https://github.com/unmonastery/matera-gtfs/wiki/How-to-build-routes-with-JOSM
- http://www.overpass-api.de/misc/public_transport.readme.txt
- https://josm.openstreetmap.de/wiki/Help/Plugin/Scripting/Python/RCN_Route_Validator
- http://www.predim.org/IMG/pdf/notices-donnees-v1.1.pdf
- http://stackoverflow.com/questions/26040756/gis-osm-routing-how-to-get-from-point-a-to-point-b-through-a-road-node
- http://www.yournavigation.org/ : une api de routage
- http://wiki.openstreetmap.org/wiki/FR:Project_of_the_month/highway_non_connect%C3%A9s_%28OSM_Inspector_Routing%29
- http://code.google.com/p/rescape/source/browse/lib/osmlib-base-0.1.4/examples/kml2osm?spec=svn69feee5299596ad9c227a35e01106bfc54bf7e2e&r=69feee5299596ad9c227a35e01106bfc54bf7e2e
- http://josm.openstreetmap.de/wiki/Fr:Shortcuts
Essai n°1
L'idée est de rechercher l'ensemble des ways qui ont une intersection avec l'itinéraire ligne.
Afin de faciliter les traitements, la ligne est décomposée en segments.
La ligne de bus est représentée sous format kml, shp comme une MULTILINESTRING, composée de 10 LINESTRINGs et de 2072 segments.
La ligne de test est : la ligne 10 Pipriac - Guichen - Rennes (illenoo)
La base spatiale est spatialite.
highways de la zone
- récupération avec l'overpass
- chargement de l'osm
- constitution du LineString de la way
- ajout de la valeur du tag highway
itinéraires des lignes
- récupération avec ogr2ogr sur le service wfs en format shapefile
- chargement du shapefile
décomposition en segments
- extraction dans une nouvelle table ligne_illenoo_segments avec ST_DissolveSegments
- recovery de la géometrie
- création d'une nouvelle table ligne_illenoo avec une ligne par segment
- création d'une nouvelle table ligne_illenoo_xx avec ajout d'un buffer de xx mètres sur la géométrie
recherche des ways voisines des segments
- création d'une nouvelle table ligne_illenoo_way avec intersection les ways (highway d'osm)
- cette opération est très longue ~ 30 minutes, mais après optimisation (merci Sandro) quelques secondes
- 2072 segments * 96281 ways
- création d'une nouvelle table ligne_illenoo_way_ko pour les segments sans way
- création du kml associé à la précédente table
La valeur du buffer est importante :
- 5 : trop petite, de nombreux segments sans way
- 50 : trop grande, 6 segments d'une bretelle d'accès
- 10 : trop petite, 35 segments, rond-point
- 20 : pas mal, 2 segments place de la Gare
Pour chaque segment, on recherche les ways voisins.
calculs sur les couples segment way
On calcule :
- la longueur du segment
- la longueur de la way
- le pourcentage du segment compris dans la way (buffer de 20 mètres)
- la distance de Hausdorff (non significative)
création d'une relation
Un script perl produit le fichier osm de création de la relation.
À partir des couples segment way, il recherche pour un segment la way comportant le plus de segments consécutifs (avec une petite marge d'erreur).
https://www.openstreetmap.org/relation/4267909
limites de la méthode
La grande hypothèse est que généralement un segment est plus petit qu'une way !
Si la way se prolonge hors de l'itinéraire, c'est pas top :
- il faudrait découper cette way
Si le segment recouvre plusieurs ways :
- cas ligne 1, rue de Châteaugiron, au niveau nord de la rocade, segment 244
- si cette way est globalement recouverte, alors elle est ajoutée