Я хотел бы создать интерактивную карту, показывающую общественные транспортные маршруты города. Я пытаюсь сделать это с помощью Leaflet в R (но я открыт для альтернатив, предложений?)Как создать интерактивный график данных GTFS в R, используя Листовку?
Данные: данные транспортной системы в формате GTFS, организованные в текстовые файлы (.txt), которые я читать в R в качестве кадра данных. *
Проблема: я не могу найти, как указать идентификатор каждой строки Poly (переменная shape_id), чтобы график фактически следовал маршруту каждой транзитной линии. Вместо этого он соединяет точки в случайной последовательности.
Вот что я пытался, пока безуспешно:
# 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)
Я был бы рад, чтобы ваши комментарии по этому поводу.
* Я знаю, что можно импортировать эти данные в программное обеспечение ГИС (например, QGIS) для создания шейп-файла, а затем прочитать шейп-файл в R с помощью readOGR. Robin Lovelace has shown how to do this. НО, я ищу чистое решение R. ;)
пс. Kyle Walker has written a great intro to interactive maps in R using Leaflet. К сожалению, он не покрывает полилинии в своем учебнике.
Он отлично работает Робин. Спасибо. Я думал о «проблеме данных», о которой вы говорили. Потому что, в конце концов, когда я применяю ваше решение для сопоставления всех транзитных маршрутов, ваш код также загружает в Листовку объект размером 5 МБ (shape_lines). –
Правда, что, но для целей тестирования и воспроизводимости проблемы следует уменьшить до наименьшей/простейшей формы – RobinLovelace