Skip to content

An attempt to automatize drawing timetables of stops in GTFS feeds

Notifications You must be signed in to change notification settings

gammapopolam/gtfs-feed-vis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Визуализация фида GTFS

Репозиторий предназначен для того, чтобы показать различные методы обработки данных GTFS в целях визуализации информации.
Обработка фида происходит с помощью библиотеки pandas, визуализация - с помощью pyfpdf

Feed

В feed.py содержится класс Feed с набором функций:

  • Инициализация: необходимо указать полный путь папки, содержащей GTFS:
folder = '/home/gamma/.../uud/gtfs'
feed = Feed(folder)
  • DescribeForFlag: информация по маршрутам остановки stop_id, отдаёт время работы по каждому из маршрутов
stop = feed.DescribeForFlag(stop_id)
  • DescribeForLayout: информация по маршрутам остановки stop_id, отдаёт расписание по ключам service_keys
stop = feed.DescribeForLayout(stop_id, ['wd', 'we', 'ed'])
  • GetGeomOfStop: выборка из GTFS по маршрутам остановки stop_id, отдаёт несколько GeoDataFrame с выборками
stops_selection, stop_times_selection, trips_selection, shape_selection, routes_selection = feed.GetGeomOfStop(stop_id)
  • SaveSelectionOfStop: сохраняет выборку из GTFS по маршрутам остановки stop_id в папке folder
stop_folder = feed.SaveSelectionOfStop(stop_id, folder)

Loom

В feed.py также содержится класс Loom с набором функций:

  • Инициализация: аналогично инициализации Feed, необходимо указать путь папки, содержащей GTFS
loom=Loom('/home/gamma/.../uud/gtfs', stop_id=23)
  • Функции C++ пакета loom, запускаемые с помощью subprocess.run:
loom.gtfs2graph()

loom.topo(max_aggr_dist=250, smooth=0.1)

loom.loom(optim_method='ilp', ilp=True, ilp_num_threads=10, ilp_solver='cbc')

loom.transitmap(render_engine='svg', line_width=40, line_spacing=10, render_dir_markers=True,tight_stations=True, no_render_node_connections=True)

loom.transitmap(render_engine='mvt', z=[14,15,16,17], line_width=40, line_spacing=10, render_dir_markers=True, tight_stations=True, no_render_node_connections=True)

Важно: не все параметры функций пакета определены в feed.py. Запуск возможен, только если в системе установлен loom

Векторные тайлы можно декодировать:

lines, stations, inner_connections = loom.decode_mvt(zl=14)

В результате отдаёт GeoJSON с слоями остановок, сдвинутых маршрутов и соединённых пересечений

Примеры визуализаций

Простой флаг на остановку


Лист 475x675 с автокомпоновкой


Лист А4 горизонтальный с постоянной компоновкой

About

An attempt to automatize drawing timetables of stops in GTFS feeds

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published