Процесс внесения изменений в спецификацию¶
Спецификация GTFS не является незыблемой. Это открытая спецификация, разработанная и поддерживаемая сообществом транзитных агентств, разработчиков и других заинтересованных сторон, которые используют GTFS. Ожидается, что это сообщество производителей и потребителей данных GTFS будет вносить предложения по расширению спецификации для обеспечения новых возможностей. Чтобы помочь управлять этим процессом, были разработаны следующие процедуры и рекомендации.
Официальная спецификация, справочник и документация написаны на английском языке. Если Translation на другой язык отличается от английского оригинала, последний имеет приоритет. Все коммуникации осуществляются на английском языке.
- Создать ветку git с обновлением всех соответствующих частей определения протокола, спецификации и файлов документации (за исключением переводов).
- Создайте запрос на поставку на сайте https://github.com/google/transit. Запрос на исправление должен содержать расширенное описание исправления. Создатель запроса становится его защитником.
- После того, как заявка зарегистрирована, она должна быть объявлена её защитником в списке рассылкиGTFS Changes, включая ссылку на заявку. После объявления запрос на исправление считается предложением. Запрос на исправление также должен быть отредактирован и содержать ссылку на объявление в Google Groups, чтобы их можно было легко сопоставить.
- Поскольку сторонник является соавтором, он должен подписать Лицензионное соглашение соавтора до того, как запрос будет принят.
- Далее следует обсуждение этого предложения. В качестве единственного форума для обсуждения должны использоваться комментарии к Pull-запросам.
- Обсуждение длится столько, сколько адвокат считает нужным, но должно быть не менее 7 календарных дней.
- Адвокат отвечает за своевременное обновление предложения (т.е. pull request) на основе комментариев, с которыми он согласен.
- В любой момент time защитник может заявить об отказе от предложения.
- Сторонник может призвать к голосованию по версии предложения в любой момент time после первоначального 7-дневного интервала, необходимого для обсуждения.
- Прежде чем призывать к голосованию, по крайней мере, один производитель GTFS и один потребитель GTFS должны реализовать предложенное изменение. Ожидается, что производитель (производители) GTFS включит изменение в публичный канал GTFS и предоставит ссылку на эти данные в комментариях к заявке, а потребитель (потребители) GTFS предоставит ссылку в комментариях к заявке на приложение, которое использует изменение нетривиальным образом (т.е. поддерживает новую или улучшенную функциональность).
- Голосование длится минимальный период, достаточный для того, чтобы покрыть 7 FULL календарных дней и 5 FULL швейцарских рабочих дней. Голосование заканчивается в 23:59:59 UTC.
- Сторонник должен объявить конкретное time end голосования в start голосования.
- В период голосования разрешены только редакционные изменения предложения (опечатки, формулировки могут быть изменены, если это не меняет смысла).
- Любой желающий может проголосовать "да/нет" в форме комментария к pull request, и голоса могут быть изменены до end периода голосования. Если голосующий меняет свой голос, рекомендуется сделать это, обновив первоначальный комментарий к голосованию, зачеркнув его и написав новый голос.
- Голоса, отданные до start периода голосования, не учитываются.
- Об открытии и закрытии голосования должно быть объявлено в списке рассылки.
- Предложение принимается, если за него единогласно проголосовало не менее 3 человек.
- Голос автора предложения не учитывается при подсчете 3 голосов. Например, если автор предложения X создал запрос на исправление и проголосовал "за", а пользователи Y и Z проголосовали "за", это будет считаться как 2 голоса "за".
- Голоса против должны быть мотивированными и в идеале предоставлять действенную обратную связь.
- Если голосование провалилось, то сторонник может продолжить работу над предложением или отказаться от него. Любое решение сторонника должно быть объявлено в списке рассылкиGTFS Changes.
- Если сторонник продолжает работу над предложением, то новое голосование может быть назначено в любой момент time.
- Любой запрос на поставку, остающийся неактивным в течение 30 календарных дней, будет закрыт. Когда запрос на исправление закрыт, соответствующее предложение считается отмененным. Сторонник может в любое time вновь открыть запрос на поддержку, если он хочет продолжить или поддержать разговор.
- Если предложение принято:
- Google обязуется объединить проголосованную версию запроса (при условии, что участники подписали CLA) и выполнить запрос в течение 5 рабочих дней.
- Переводы не должны быть включены в исходный запрос на исправление. Google несет ответственность за обновление соответствующих переводов на поддерживаемые языки, однако запросы на исправление Translation от сообщества приветствуются и будут приняты, как только будут устранены все замечания редакции.
- Окончательный результат запроса (принят или отклонен) должен быть объявлен в той же ветке Google Groups, где был первоначально объявлен запрос.
Руководящие принципы¶
Для того чтобы сохранить первоначальное видение GTFS, был установлен ряд руководящих принципов, которые следует учитывать при расширении спецификации:
Каналы должны быть просты в создании и редактированииМы
выбрали CSV в качестве основы для спецификации, потому что его легко просматривать и редактировать с помощью программ электронных таблиц и text редакторов, что полезно для небольших агентств. Его также легко генерировать из большинства языков программирования и баз данных, что полезно для издателей больших фидов.
Фиды должны легко разбиратьсяЧитатели фидов
должны иметь возможность извлекать нужную им информацию с минимальными затратами. Изменения и дополнения к фиду должны быть как можно более широко полезными, чтобы свести к минимуму количество путей кода, которые читатели фида должны реализовать. (Однако приоритет должен быть отдан упрощению процесса создания, поскольку в конечном итоге издателей фида будет больше, чем читателей).
Спецификация касается информации о пассажирах
GTFS в первую очередь касается информации о пассажирах. То есть, спецификация должна включать информацию, которая может помочь в работе с инструментами для пассажиров, в первую очередь. Потенциально существует большое количество информации, ориентированной на эксплуатацию, которую транзитные агентства могут захотеть передавать между системами. GTFS не предназначен для этой цели, и потенциально существуют другие стандарты данных, ориентированные на операции, которые могут быть более подходящими.
Изменения в спецификации должны быть обратно совместимымиПри
добавлении функций в спецификацию мы хотим избежать изменений, которые сделают существующие фиды недействительными. Мы не хотим создавать дополнительную работу для существующих издателей фидов, пока они не захотят добавить возможности в свои фиды. Также, по возможности, мы хотим, чтобы существующие анализаторы могли продолжать читать старые части новых фидов.
Спекулятивные функции не приветствуютсяКаждая
новая функция добавляет сложности в создание и чтение фидов. Поэтому мы стараемся добавлять только те функции, в полезности которых мы уверены. В идеале, любое предложение должно быть проверено путем генерации данных для реальной транзитной системы, использующей новую функцию, и написания программного обеспечения для их чтения и отображения. Обратите внимание, что GTFS легко позволяет расширять формат путем добавления дополнительных колонок и файлов, которые игнорируются официальными парсерами и валидаторами, поэтому предложения могут быть легко прототипированы и протестированы на существующих фидах.
История пересмотра¶
14 марта 2023 г.
- Добавлены средства оплаты проезда. См. обсуждение.
26 июля 2022 года
- Добавлены трансферы из поездки в поездку с возможностью посадки в кресло. См. обсуждение
17 мая 2022 года
- Базовая реализация GTFS-Fares V2. См. обсуждение
22 октября 2021 г.
- Добавлены первичные и внешние поля id. См. обсуждение
05 октября 2021 года
- Добавлены переходы от поездки к поездке и от маршрута к маршруту. См. обсуждение
15 сентября 2021 г.
- Разрешает двунаправленность проездных ворот (pathway_mode=6). См. обсуждение.
13 сентября 2021 г.
- Обновлены лучшие практики использования
stop_name
. См. обсуждение.
27 августа 2021 г.
- Обновлено GTFS Schedule до RFC 2119. См. обсуждение.
4 января 2021 г.
- Уточнено описание
stop_times.stop_id
. См. обсуждение. - Определены положительные и ненулевые знаки полей. См. обсуждение.
2 октября 2020 г.
- Изменен тип поля
frequencies.headway_secs
с неотрицательного на положительное целое число. См. обсуждение.
25 мая 2020 г.
- Определены
pathways.txt
,levels.txt
иattributions.txt
как переводимые таблицы. Добавлены рекомендации по переводу многоязычных значенийsignposted_as
. См. обсуждение.
13 мая 2020 г.
- Добавлены значения
continuous_pickup
иcontinuous_drop_off
вroutes.txt
иstop_times.txt
. Изменено значениеshape_id
с "Необязательно" на "Условно обязательно". См. обсуждение.
24 марта 2020 г.
- Определено поле text и добавлено
tts_stop_name
в файлstops.txt
. См. обсуждение.
5 февраля 2020 года
- Добавлены
route_types
троллейбуса и монорельса. См. обсуждение.
9 января 2020 г.
- Добавлен файл
translations.txt
. См. обсуждение.
26 декабря 2019 г.
- Обновлены определения для канатного трамвая и канатной дороги в
route_type
. См. обсуждение.
20 декабря 2019 г.
- Добавлен
attributions.txt
. См. обсуждение.
Август 26, 2019
- Указано, что остановки
stop_lat
иstop_lon
должны располагаться там, где пассажиры ожидают посадки в vehicle. См. обсуждение.
9 июля 2019 г.
- Добавлены лучшие практики по time arrival и departure. См. обсуждение.
- Добавлена лучшая практика использования головных знаков. См. обсуждение.
- Добавлена лучшая практика использования
stop_id
. См. обсуждение.
25 июня 2019 г.
- Уточнена связь между точками Shape и остановками. См. обсуждение.
4 апреля 2019
- Добавлено поле
platform_code
в файлеstops.txt
. См. обсуждение.
Март 27, 2019
- Добавлены
pathways.txt
иlevels.txt
. См. обсуждение.
Февраль 6, 2019
- Редакционные и форматирующие изменения для ясности. См. обсуждение.
2 октября 2018
- Факторизованные типы полей. См. обсуждение.
14 сентября 2018 г.
- Добавлено понятие "Conditionally required". См. обсуждение.
Сентябрь 4, 2018
- Унифицированы определения
agency_lang
иfeed_lang
. См. обсуждение.
27 августа 2018 г.
- Обновлен
CHANGES.md
и дата последней правки. См. обсуждение.
22 августа 2018 г.
- Добавлены поля
feed_contact_email
иfeed_contact_url
в файлfeed_info.txt
. См. обсуждение.
11 декабря 2017 года
- Добавлен
route_sort_order
в файлroutes.txt
. См. обсуждение.
15 марта 2017 г.
- Уточнено, что голос автора предложения не учитывается в общем количестве голосов. См. обсуждение.
- Уточнено, что перед объявлением голосования, по крайней мере, один производитель GTFS и один потребитель GTFS должны реализовать предлагаемое изменение. См. обсуждение.
7 февраля 2017 г.
- Уточнена связь между
block_id
иservice_id
. См. обсуждение. - Уточнено, что обслуживание на основе частоты начинается с момента departure vehicle. См. обсуждение.
- Уточнены описания
stop_id
иstop_code
. См. обсуждение.
11 декабря 2017 г.
- Добавлено поле
route_sort_order
в файлеroutes.txt
. См. обсуждение.
27 ноября 2016 г.
- Добавлен вход на станцию как
stops.location_type
. См. обсуждение.
2 сентября 2016 г.
- Обновлена документация для добавления
agency_id
в файлfare_attributes.txt
. См. обсуждение.
16 марта 2016 г.
- Переход документации GTFS на Github по адресу https://github.com/google/transit.
3 февраля 2016 г.
- Добавлено предложение
agency_email
вagency.txt
в спецификацию: parent_station
2 февраля 2015 г.
- Добавлено предложение stop_times.txt 'timepoint' в спецификацию: обсуждение
17 февраля 2014 г.
- Добавлено предложение trips.txt 'bikes_allowed' в spec: обсуждение
15 октября 2012 г.
Добавлено предложение trips.txtwheelchair_accessible' к спецификации: обсуждение
20 июня 2012 г.
- Добавлено предложение 'wheelchair_boarding' в спецификацию: обсуждение
2 февраля 2012 г.
- Добавлено предложение 'stop_timezone' в спецификацию: обсуждение
18 января 2012 г.
- Перенесена документация со старого сайта code.google.com на новый сайт developers.google.com.
26 сентября 2011 г.
- Добавлено предложение 'feed_info' в спецификацию: обсуждение
6 сентября 2011 г.
- Добавлено предложение 'agency_fare_url' в спецификацию: обсуждение
- Добавлено предложение 'exact_times' в спецификацию: nZF9lbQ7TQs">обсуждение
30 марта 2009 г.
- Новый раздел о том, как сделать транзитный канал общедоступным. Ранее это не обсуждалось в группе, потому что это не совсем изменение интерпретации или записи данных. Однако некоторые из сотрудников Google решили, что было бы информативно включить обсуждение использования GTFS не в Google, поскольку появляется все больше приложений, которые могут использовать данные GTFS.
- Уточнения формата CSV: обсуждение.
- Дополнительное руководство по выбору контрастных цветов в описаниях полей route_color и route_text_color.
- trip_short_name, как предложено и проверено в этих темах: a и b.
- Исправлена незначительная ошибка в примерах данных, включенных в end документа (придание остановке S7 родительской_станции S8).
- Добавлена информация "agency_lang" к образцу данных в end документа, как предложила Марси во время периода комментариев: обсуждение.
- Обновлена ссылка на канал GTFS компании OCTA в боковой панели.
- См. оригинальное резюме.
26 февраля 2009 г.
- Удалена большая часть инструкций по отправке фида, специфичных для Google, поскольку на данный момент существует множество других приложений, потребляющих данные GTFS.
- Исправлена неработающая ссылка в боковой панели на публичный канал OCTA округа Ориндж.
7 августа 2008 г.
- Восстановлено поле stop_url, которое было случайно опущено в версии от 6 августа.
- Добавлен agency_phone к образцу данных
- Добавлено упоминание о соглашении об использовании данных при отправке фида в Google.
6 августа 2008 г.
- Добавлен файл transfers.txt, позволяющий издателям фидов предоставлять подсказки о предпочтительном поведении при передаче(первоначальное предложение).
- Добавлены поля location_type и parent_station в файл stops.txt, позволяющие группировать остановочные пункты в станции(первоначальное предложение).
- Добавлено поле agency_phone для предоставления голосового телефонного номера агентства(первоначальное предложение)
- Добавлен раздел "Тестирование ваших фидов" с упоминанием инструментов тестирования с открытым исходным кодом
- Добавлены пояснения относительно формата CSV, agency_timezone, agency_lang, route_color, route_text_color, arrival_time, departure_time, calendar.txt против calendar_dates.txt, таблиц тарифов и frequencies.txt
- Добавлена ссылка на документ с историей фидов, а также исправлены некоторые ссылки на публичные фиды.
- Обновлены изображения примеров для отображения текущего пользовательского интерфейса Google Maps
- Обновлены/исправлены примеры данных в документе
29 февраля 2008 г.
- Добавлено поле stop_code в файле stops.txt, позволяющее указывать коды остановок для пассажиров(первоначальное предложение).
- Уточнены описания route_short_name и route_long_name в routes.txt
- Уточнены описания arrival_time и departure_time в файле stop_times.txt
- Исправлены опечатки в разделе "Образцы данных
20 ноября 2007 г.
- Уточнено описание block_id
- Изменен язык, чтобы уменьшить акцент на Google Transit (поскольку приложения, не связанные с Google, используют GTFS, а маршрутизация транспорта теперь является интегрированной функцией Google Maps), а также исправлены различные опечатки.
- Обновлены скриншоты примеров, чтобы отразить представление полей GTFS в текущем пользовательском интерфейсе Google Maps
- Обновлен контактный адрес электронной почты Google для поставщиков транзитных данных
- Обновлено форматирование
5 октября 2007 г.
- Изменены параметры stop_sequence и shape_pt_sequence, позволяющие использовать любые возрастающие неотрицательные целые числа
- Уточнены описания и исправлены опечатки
31 мая 2007 г.
- Обновлен стиль страницы, HTML стал чище и доступнее
- Добавлены ссылки на примеры публичных фидов и другие полезные сайты
- Удалены примеры из описаний отдельных полей
9 апреля 2007 г.
- Добавлен раздел об отправке фида.
- Добавлен пример фида демонстрационного транзитного агентства.
- Добавлено примечание, что calendar.txt может быть опущен, если все даты обслуживания определены в calendar_dates.txt.
- Сделано необязательным поле agency_id в фидах, содержащих только одно агентство. Это позволяет существующим фидам без agency_id оставаться действительными.
- Добавлена более полная спецификация полей agency_url, stop_url и route_url, а также дополнительные примеры значений для этих полей.
- Добавлены 6 (гондола) и 7 (фуникулер) в качестве допустимых значений route_type.
8 марта 2007 г.
- Небольшая правка для перемещения поля stop_url из файла stop_times.txt, где оно было неверно указано в обновлении от 28 февраля, в файл stops.txt, где ему самое место.
5 марта 2007 г.
- Незначительная правка для уточнения описания поля route_long_name.
28 февраля 2007 г.
- Добавление файла frequencies.txt для поддержки расписания на основе пути.
- Теперь разрешено использовать несколько агентств в одном канале. Также добавлено новое поле agency_id в agencies.txt и routes.txt, позволяющее указать, какой маршрут обслуживается каким агентством.
- Добавление URL-адресов для каждого маршрута и каждой остановки.
- Добавление поля direction_id в файле trips.txt.
- Поддержка смены указателей в середине маршрута с добавлением поля stop_headsign в файле stop_times.txt.
- Поддержка цветов маршрутов с добавлением необязательных параметров route_color и route_text_color в файле routes.txt.
- Удалена возможность указания остановок с помощью адресов улиц. Предыдущая версия спецификации позволяла указывать местоположение транзитной остановки с помощью уличного адреса в полях stop_street, stop_city, stop_region, stop_postcode и stop_country. Теперь местоположение остановки должно быть указано с помощью полей stop_lat для latitude и stop_lon для longitude, что более удобно для большинства приложений.
- Добавление типа канатной vehicle для поля route_type в routes.txt.
- См. краткое описание изменений в оригинальной записи блога Headway.
29 ноября 2006 г.
- Добавлена поддержка информации о Shape trip через файл shapes.txt
- Уточнено определение stop_sequence
- Пометки pickup_type и drop_off_type стали необязательными.
31 октября 2006 г.
- Добавлена поддержка информации о стоимости проезда
- Удалены даты из имен отдельных файлов
- Изменены определения значений route_type
- Позволяет публиковать несколько файлов фидов в одно и то же time, если их периоды обслуживания не пересекаются
- Исправлен block_id в файле trips.txt, чтобы он был правильно помечен как Optional.
- Замечено, что заголовки столбцов должны быть включены
29 сентября 2006 г.
- Небольшая правка для исправления пары ошибок в примерах.
25 сентября 2006
- Первоначальная версия.