Vorrei creare una mappa interattiva che mostri le linee di trasporto pubblico di una città. Sto cercando di farlo usando Leaflet in R (ma sono aperto a alternative, suggerimenti?)Come creare un grafico interattivo dei dati GTFS in R utilizzando Leaflet?
Dati: I dati del sistema di trasporto sono in formato GTFS, organizzati in file di testo (.txt), che io letto in R come frame di dati. *
Il problema: non riesco a trovare come indicare l'id di ogni linea Poly (variabile shape_id) in modo che la trama segua effettivamente il percorso di ogni linea di transito. Invece, collega i punti in una sequenza casuale.
Ecco quello che ho provato, finora senza successo:
# Download GTFS data of the Victoria Regional Transit System
tf <- tempfile()
td <- tempdir()
ftp.path <- "http://www.gtfs-data-exchange.com/agency/bc-transit-victoria-regional-transit-system/latest.zip"
download.file(ftp.path, tf)
# Read text file to a data frame
zipfile <- unzip(tf , exdir = td)
shape <- read.csv(zipfile[9])
# Create base map
basemap <- leaflet() %>% addTiles()
# Add transit layer
basemap %>% addPolylines(lng=shape$shape_pt_lon, lat=shape$shape_pt_lat,
fill = FALSE,
layerId =shape$shape_id)
Sarei felice di avere i vostri commenti su questo.
* So che è possibile importare questi dati in un software GIS (ad esempio QGIS) per creare uno shapefile e quindi leggere lo shapefile in R con readOGR. Robin Lovelace has shown how to do this. MA, sto cercando una soluzione R pura. ;)
ps. Kyle Walker has written a great intro to interactive maps in R using Leaflet. Sfortunatamente, non copre le poly lines nel suo tutorial.
Funziona perfettamente Robin. Grazie. Stavo pensando al "problema dei dati" che hai menzionato, però. Perché, alla fine, quando applico la tua soluzione per mappare tutte le rotte di transito, il tuo codice carica anche in Leaflet un oggetto di 5 MB (shape_lines). –
È vero, ma ai fini del test e della riproducibilità, i problemi dovrebbero essere ridotti alla loro forma più piccola/più semplice – RobinLovelace