Нарисуйте маршруты с листовкой из данных GTFS
Как извлечь stops
И их stop_sequence
зная route_id
из данных GTFS с использованием MySQL
,
Я хочу этого, потому что я пытаюсь нарисовать маршруты, используя Leaflet
который требует дать координаты остановок в правильном порядке.
Я только нашел stop_sequence
информация в stop_times.txt
файл, но он подходит только для одной поездки по этому маршруту.
Этот ответ только говорит о том, какие остановки связаны с определенным маршрутом, но не в хорошем порядке.
1 ответ
I think you've arrived at your own answer here: Stops are ordered in sequence only along a specific trip, of which a route normally has many. This is meant to accommodate routes that have multiple branches or that change their path at certain times, such as a route that makes a diversion through an industrial park during rush hour.
Что вам нужно сделать, это сначала идентифицировать поездку, которая является типичной для маршрута, который вы собираетесь прокладывать, и запишите его идентификатор поездки. Чтобы получить список всех поездок по определенному маршруту, выполните запрос, например:
SELECT id, headsign, short_name, direction_id
FROM trips
WHERE route_id = <route_id>;
После того, как вы выбрали поездку, получить список остановок, которые она посещает, по порядку, просто:
SELECT code, name, lat, lon, arrival_time, departure_time
FROM stops
INNER JOIN stop_times ON stop_times.stop_id = stops.id
WHERE trip_id = <trip_id>
ORDER BY stop_sequence ASC;
(Я добавил несколько дополнительных полей здесь для ясности; похоже, все, что вам действительно нужно, это lat
а также lon
поля включены в результаты.)
Итак, как вы определяете "типичную" поездку для маршрута, который вы хотите построить? Часто информация о головном знаке для поездки указывает на ее филиал или пункт назначения. Если вам нужно быть более конкретным - например, идентифицировать поездки, которые выполняются между определенными часами в определенные дни - информацию в calendars
а также calendar_dates
столы могут помочь вам сузить их.