OSRMdistance

294 views

Published on

Automatizzare l'Open Source Routing Machine

Published in: Self Improvement
  • Be the first to comment

  • Be the first to like this

OSRMdistance

  1. 1. OSRMDistance Estrarre distanze tramite routing per QA ed analisi statistiche Stefano Sabatini Rovereto, OSMit 2013 Stefano Sabatini OSRMDistance
  2. 2. Le origini Avrei la necessità di metter su una matrice delle distanze stradali in km e tempi di percorrenza tra i comuni sardi che son 377. Quindi vorrei sapere se c'è un metodo veloce e facilmente replicabile per calcolare due matrice 377x377, una coi km una coi tempi di percorrenza. (Andrea su Spaghetti Open Data, 16 Luglio) How hard can it be? Due giorni dopo abbiamo OSRMDistance. Stefano Sabatini OSRMDistance
  3. 3. Compilato è bello Ci vuole la forza bruta: n 2 richieste per n punti (anche perchè le distanze possono variare a seconda della direzione) Fare le richieste ad un servizio online non è proponibile (377 × 377 = 142129 richieste → ban dell'ip in 3...2...1...) Compiliamo OSRM su una distro Ubuntu-like https://github.com/sabas/OSRMdistance/blob/master/ QUICKSTART.md Stefano Sabatini OSRMDistance
  4. 4. Estrazione dei dati Per ottenere i dati, preso l'estratto regionale della Sardegna 1 ./osrm-extract sardegna.osm.pbf (circa 30 secondi, Intel i5) 2 ./osrm-prepare sardegna.osrm sardegna.osrm.restrictions (circa 50 secondi, all your ram are belong to us) Dopo la congurazione si avvia in un terminale il server: 3 ./osrm-routed Stefano Sabatini OSRMDistance
  5. 5. Automatizzare OSRM Gli script lavorano su le csv e sono lanciabili sia da terminale che da webserver: il formato base è nodo;lat;lon dove nodo può essere una etichetta qualsiasi osrmdistance avvia la computazione della distanza su tutte le combinazioni osrmsinglepoint data una lista ed una stringa nel formato base calcola le distanze da quest'ultima a tutti gli elementi della lista Stefano Sabatini OSRMDistance
  6. 6. Dati di partenza Due script aiutano nella preparazione dell'input: extractData estrae un csv da un le osm, osrmnearest cerca le coordinate più vicine sul grafo stradale I dati quindi possono essere composti da JOSM o da overpass-turbo ad esempio Stefano Sabatini OSRMDistance
  7. 7. Monitoraggio dei percorsi Stefano Sabatini OSRMDistance
  8. 8. Overpass Turbo Vogliamo individuare gli aeroporti della Sardegna Stefano Sabatini OSRMDistance
  9. 9. Geojson.io Filtriamo i risultati (sorry Oristano e Tortolì) e poi convertiamo nel formato richiesto (node;lat;lon) Stefano Sabatini OSRMDistance
  10. 10. Test con OSRMDistance Facciamo una ipotesi, ad esempio parto da Gavoi;40.1631;9.1961 e voglio vedere quanto ci vuole per raggiungere i tre aeroporti (normalizzando le coordinate) Olbia;40.90336;9.51270 Alghero;40.62843;8.29361 Cagliari;39.25399;9.06374 Stefano Sabatini OSRMDistance
  11. 11. Risultati L'esecuzione porta from;to;status;distance;time Gavoi;Olbia;OK;131997;5956 Gavoi;Alghero;OK;147357;7564 Gavoi;Cagliari;OK;151236;7525 Ovvero, in maniera più comprensibile: Da A Distanza Tempo Gavoi Olbia 131,997 km 1:39'16 Gavoi Alghero 147,357 km 2:06'04 Gavoi Cagliari 151,236 km 2:05'25 Stefano Sabatini OSRMDistance
  12. 12. Conclusione Queste sono giusto idee per mostrare le potenzialità del grafo stradale di OSM. Cos'altro si può fare? Convertirlo in un altro linguaggio Monitorare i percorsi a lunga distanza Proporre analisi di raggiungibilità Stefano Sabatini OSRMDistance

×