Описание формата GTFS
Перевод версии от 20 июня 2012
В процессе перевода
Этот документ описывает виды файлов, которые включает в себя GTFS-канал, и описывает поля, используемые в этих файлах.
Оглавление
Термины и определения
В этом разделе даны определения терминов, используемых в документе.
- Обязательное поле — поле, которое должно быть включено в файл и значение которого должно быть определено для каждой записи этого файла. Некоторые обязательные поля допускают пустую строку в качестве значения. Для ввода пустой строки просто не добавляйте никакого текста в кавычках в этом поле. Обратите внимание, что 0 интерпретируется как «строка со значением 0» и не является пустой строкой. Более подробно смотрите в определениях полей.
- Необязательное поле — поле, которое может не включаться в файл. Если необязательное поле включено в файл, то значение этого поля должно быть определено для каждой записи файла. Можно назначать пустую строку в качестве значения поля для записей, не имеющих значений в этом столбце. Некоторые необязательные поля допускают пустую строку в качестве значения. Для ввода пустой строки просто не добавляйте никакого текста в кавычках в этом поле. Обратите внимание, что 0 интерпретируется как «строка со значением 0» и не является пустой строкой.
- Уникальное поле — поле, содержащее значение, соответствующее одному отдельному объекту в пределах столбца. Например, если маршруту присвоен идентификатор 1А, то ни один другой маршрут не должен иметь такой же. Однако, можно присвоить идентификатор 1А остановке, т. к. остановка является объектом другого типа.
Файлы канала
Этот раздел описывает файлы канала в соответствии с их содержимым:
Имя файла | Обязат. | Что описывает |
---|---|---|
agency.txt | Да | Одно или несколько транспортных предприятий, которые предоставляют данные для данного канала. |
stops.txt | Да | Отдельные места, где транспортные средства осуществляют посадку и/или высадку пассажиров. |
routes.txt | Да | Маршруты. Маршрут — множество рейсов, которые представляются пассажиру как отдельная услуга. |
trips.txt | Да | Рейсы для каждого маршрута. Рейс — последовательность из двух и более остановок, которые происходят в определённое время. |
stop_times.txt | Да | Время прибытия и отправления транспортного средства для каждой конкретной остановки в каждом рейсе. |
calendar.txt | Да | Даты для маршрутов, использующих недельные графики. Описывает, когда маршрут начинает и заканчивает действовать, а также дни недели, когда маршрут доступен. |
calendar_dates.txt | Нет | Исключения для маршрутов, описанных в файле calendar.txt. Если calendar_dates.txt включает все даты для маршрута, то этот файл может быть использован вместо файла calendar.txt. |
fare_attributes.txt | Нет | Информация о тарифах транспортных предприятий. |
fare_rules.txt | Нет | Правила действия тарифов транспортных предприятий. |
shapes.txt | Нет | Правила отображения линий на карте, показывающих маршруты. |
frequencies.txt | Нет | Интервалы между рейсами для маршрутов с переменными интервалами. |
transfers.txt | Нет | Правила осуществления пересадок между маршрутами. |
feed_info.txt | Нет | Дополнительная информация о канале, включая организатора канала, версию и сроки актуальности информации. |
Требования к файлам
Нижеприведённые требования касаются формата и содержания файлов:
- Все файлы в GTFS-канале должны быть сохранены в формате CSV.
- Первая строка каждого файла должна содержать имена полей. Каждый подраздел раздела Описание полей соответствует одному из файлов GTFS-канала и перечисляет имена полей, которые можно использовать в файле.
- Все имена полей регистрозависимы.
- Значения полей не могут содержать символы табуляции, перевода или начала новой строки.
- Значения полей, которые содержат кавычки или запятые должны быть заключены в кавычки.
Дополнительно каждому символу кавычек в значении поля должен предшествовать символ кавычек.
Это согласует с тем, как Microsoft Excel выводит CSV-файлы.
Более подробную информация о формате CSV можно увидеть на http://tools.ietf.org/html/rfc4180 (на английском).
Ниже приведены примеры, демонстрирующие как значения полей должны представляться в CSV-файле:- Исходное значение поля:
Содержит "кавычки", запятые и текст
- Значение поля в CSV-файле:
"Содержит ""кавычки"", запятые и текст"
- Исходное значение поля:
- Значения полей не должны содержать HTML-тэги, комментарии или экранирующие символы.
- Все дополнительные пробелы между значениями или именами полей должны быть убраны. Многие парсеры рассматривают такие пробелы, как части значений, что может стать причиной ошибок.
- Каждая строка должна заканчиваться символом перевода строки.
- Файлы должны быть в кодировке UTF-8 для поддержки всех Юникод-символов. Файлы, содержащие метку порядка байтов (byte-order mark, BOM) допустимы. Более подробная информация о BOM и UTF-8 доступна в Unicode FAQ (на английском).
- Все файлы канала сохраняются в ZIP-файле.
Описание полей
agency.txt
Обязательный файл
Имя поля | Обязат. | Описание |
---|---|---|
agency_id | Нет |
Поле agency_id содержит идентификатор, однозначно определяющий транспортное предприятие. GTFS-канал может предоставлять данные более чем от одного предприятия. Поле agency_id должно быть уникальным. Это поле необязательно для канала, который содержит информацию только от одного предприятия. |
agency_name | Да |
Поле agency_name содержит полное название транспортного предприятия. Google Maps отображает это название. |
agency_url | Да |
Поле agency_url содержит URL транспортного предприятия. Это значение — полный URL, включающий http:// или https://, и в котором все специальные символы корректно преобразованы. С подробным описание того, как правильно создать полный URL, можно ознакомиться по ссылке: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html (на английском). |
agency_timezone | Да |
Поле agency_timezone содержит часовой пояс места расположения транспортного предприятия. Название часового пояса не должно содержать пробелов, но может содержать символы подчёркивания. Перечень корректных названий можно посмотреть по ссылке: http://en.wikipedia.org/wiki/List_of_tz_zones (на английском). Если канал представляет несколько предприятий, то у всех их должны быть одинаковые значения поля agency_timezone. |
agency_lang | Нет |
Поле agency_lang содержит двухбуквенный код языка, основного для транспортного предприятия (по ISO 639-1).
Языковой код регистронезависим (и |
agency_phone | Нет |
Поле agency_phone содержит один телефонный номер для описываемого предприятия.
Это поле — строковое значение, представляющее телефонный номер в формате, принятом в регионе, которое обслуживает предприятие.
Оно может содержать знаки пунктуации для группировки цифр номера.
Замена цифр буквами (например, |
agency_fare_url | Нет |
Поле agency_fare_url задаёт URL страницы, позволяющей купить билеты или предоставляющей какой-либо другой сервис, связанный с оплатой проезда. Это значение — полный URL, включающий http:// или https://, и в котором все специальные символы корректно преобразованы. С подробным описание того, как правильно создать полный URL, можно ознакомиться по ссылке: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html (на английском). |
stops.txt
Обязательный файл
Имя поля | Обязат. | Описание | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
stop_id | Да |
Поле stop_id содержит идентификатор, однозначно определяющий остановку или станцию. Разные маршруты могут использовать одни и те же остановки. Поле stop_id должно быть уникальным. |
||||||||||||
stop_code | Нет |
Поле stop_code содержит короткий текст или число, однозначно определяющее остановку для пассажира. Этот код может быть использован в информационных системах, ориентированных на мобильные платформы или указан на знаке или вывеске на остановке для упрощения получения расписания или информации о прибытии транспорта в реальном времени для конкретной остановки. Поле stop_code должно быть использовано только для кодов, которые видны обычным пассажирам. Это поле должно быть оставлено пустым, если остановка не имеет такого кода. Для внутренних кодов следует использовать stop_id. |
||||||||||||
stop_name | Да |
Поле stop_name содержит название остановки или станции. Сюда следует вносить название, хорошо понятное на местном языке. |
||||||||||||
stop_desc | Нет |
Поле stop_desc содержит описание остановки. Сюда следует вносить дополнительную полезную информацию об остановке. Не следует здесь просто дублировать её название. |
||||||||||||
stop_lat | Да |
Поле stop_lat содержит значение широты остановки или станции. Значение должно быть в системе координат WGS 84. |
||||||||||||
stop_lon | Да |
Поле stop_lon содержит значение долготы остановки или станции. Значение должно быть в системе координат WGS 84 в диапазоне от −180 до 180. |
||||||||||||
zone_id | Нет |
Поле zone_id определяет тарифную зону остановки. zone_id необходимо, если информация о тарифах предоставляется каналом при помощи файла fare_rules.txt. Если данная остановка представлена станцией, данное значение zone_id будет проигнорировано. |
||||||||||||
stop_url | Нет |
Поле stop_url содержит URL страницы о данной остановке. Адрес должен быть отличным, от указанных в полях agency_url и route_url. Это значение — полный URL, включающий http:// или https://, и в котором все специальные символы корректно преобразованы. С подробным описание того, как правильно создать полный URL, можно ознакомиться по ссылке: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html (на английском). |
||||||||||||
location_type | Нет |
Поле location_type определяет, что представляет эта запись: остановку или станцию. Если данное поле не определено или оставлено пустым, то данная запись рассматривается, как представляющая остановку. Станции могут иметь отличные от остановок свойства при отображении на карте или планировании поездки. Поле location_type может принимать следующие значения:
|
||||||||||||
parent_station | Нет |
Для остановки, которая физически располагается внутри станции, поле parent_station определяет включающую её станцию. Для использования этого поля файл stops.txt должен также содержать строку, где данному идентификатору соответствует location_type=1.
|
||||||||||||
stop_timezone | Нет |
Поле stop_timezone содержит часовой пояс, в котором располагается данная остановка. Перечень корректных значений можно посмотреть по ссылке: http://en.wikipedia.org/wiki/List_of_tz_zones (на английском). Если поле пропущено, предполагается, что остановки расположены в часовом поясе, определённом в agency_timezone в файле agency.txt. Когда у остановки есть включающая её станция, остановка считается расположенной в часовом поясе, определённом для этой станции значением поля stop_timezone. Если включающая станция не имеет значения в поле stop_timezone, остановки, включённые в неё, считаются расположенными в часовом поясе, определённом в agency_timezone, даже если остановки имеют собственные значения поля stop_timezone. Другими словами, если для остановки определено значение поля parent_station, то любое значение поля stop_timezone для данной записи должно игнорироваться. Даже если значения stop_timezone представлены в файле stops.txt, время в файле stop_times.txt должно определяться как время от полуночи в часовом поясе, определённом в поле agency_timezone в файле agency.txt. Это гарантирует, что значения времени в течение поездки всегда будут увеличиваться, независимо от того, какие часовые пояса пересекаются за поездку. |
||||||||||||
wheelchair_boarding | Нет |
Поле wheelchair_boarding определяет, возможна ли посадка на инвалидном кресле на данной остановке или станции. Поле может принимать следующие значения:
Когда остановка является частью станции, о чём говорит непустое значение поля parent_station, значение её поля wheelchair_boarding имеет дополнительную семантику:
|
routes.txt
Обязательный файл
Имя поля | Обязат. | Описание |
---|---|---|
route_id | Да |
Поле route_id содержит идентификатор, однозначно определяющий маршрут. Поле route_id должно быть уникальным. |
agency_id | Нет |
Поле agency_id определяет транспортное предприятие для данного маршрута. Его значение берётся из файла agency.txt. Это поле используется, когда канал предоставляет данные о маршрутах более чем от одного предприятия. |
route_short_name | Да |
Поле route_short_name содержит короткое название маршрута. Это может быть короткое абстрактное обозначение, типа «45», «53А» или «Зелёная», которое люди используют для идентификации маршрута, но которое ничего не говорит о том, какие места он соединяет. Если у маршрут нет такого короткого названия, следует использовать поле route_long_name, а для этого задать в качестве значения пустую строку. Скриншот Google Maps с выделенным route_short_name. |
route_long_name | Да |
Поле route_long_name содержит полное название маршрута. Это название, как правило, более описательное, чем route_short_name и часто включает остановки или пункт назначения маршрута. Если у маршрута нет такого длинного названия, следует использовать поле route_short_name, а для этого задать в качестве значения пустую строку. Скриншот Google Maps с выделенным route_long_name. |
route_desc | Нет |
Поле route_desc содержит описание маршрута. Сюда следует вносить дополнительную полезную информацию о маршруте. Не следует здесь просто дублировать его название. Например: «Рейсы маршрута 208, отправляющиеся в 20:40 и 21:45 осуществляются по маршруту автобуса 205 — через посёлок Комсомольский и деревню Пруды». |
route_type | Да |
Поле route_type указывает на вид транспорта, используемого на маршруте. Для этого поля допустимы следующие значения:
Скриншот Google Maps с выделенным route_type. |
route_url | Нет |
Поле route_url содержит URL страницы о данном маршруте. Адрес должен быть отличным, от указанного в поле agency_url. Это значение — полный URL, включающий http:// или https://, и в котором все специальные символы корректно преобразованы. С подробным описание того, как правильно создать полный URL, можно ознакомиться по ссылке: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html (на английском). |
route_color | Нет |
В транспортных системах, где маршрутам назначаются цвета, поле route_color задаёт цвет, соответствующий данному маршруту. Цвет должен быть представлен шестизначным шестнадцатеричным кодом, например: FF0000. Если цвет не задан, то по умолчанию маршруту назначается белый цвет (FFFFFF). Различие цветов между route_color и route_text_color должно обеспечить достаточный контраст при просмотре на черно-белом экране. W3C Techniques for Accessibility Evaluation And Repair Tools document (на английском) предлагает удобный алгоритм для оценки контраста цветов. Есть удобные онлайн-сервисы для подбора контрастных цветов, например, snook.ca Color Contrast Check application (на английском). |
route_text_color | Нет |
Поле route_text_color может использоваться для задания цвета текста, для обеспечения его удобочитаемости при использовании поверх фона, цвет которого задан в route_color. Цвет должен быть представлен шестизначным шестнадцатеричным кодом, например: FFFF00. Если цвет не задан, то по умолчанию тексту назначается чёрный цвет (000000). Различие цветов между route_color и route_text_color должно обеспечить достаточный контраст при просмотре на черно-белом экране. |
trips.txt
Обязательный файл
Имя поля | Обязат. | Описание |
---|---|---|
route_id | Да |
Поле route_id содержит идентификатор, однозначно определяющий маршрут. Его значение берётся из файла routes.txt. |
service_id | Да |
Поле service_id содержит идентификатор, однозначно определяющий перечень дат, в которые доступны один или несколько маршрутов. Его значение берётся из файла calendar.txt или calendar_dates.txt. |
trip_id | Да |
Поле trip_id содержит идентификатор, однозначно определяющий рейс. Поле trip_id должно быть уникальным. |
trip_headsign | Нет |
Поле trip_headsign содержит текст, который отображается на табличке или табло транспортного средства, сообщающий пассажирам пункт назначения рейса. Это поле используется, чтобы различать отличающиеся друг от друга рейсы одного маршрута. Если надпись на табло изменяется в течение поездки, то можно переопределять значение поля trip_headsign, задавая значения поля stop_headsign в файле stop_times.txt. Скриншот Google Maps с выделенным headsign. |
trip_short_name | Нет |
Поле trip_short_name содержит текст, который отображается в расписаниях и на вывесках, позволяющий пассажирам идентифицировать конкретно этот рейс. Если люди обычно не полагаются на такого рода надписи, следует оставить поле пустым. Если значение поля trip_short_name задано, то оно должно однозначно определять рейс среди других в любой отдельновзятый день. Оно не должно использоваться для названий пунктов назначения или дополнительных обозначений. |
direction_id | Нет |
Поле direction_id содержит одно из двух возможных значений, показывающих направление движения рейса. Это поле используется, чтобы различать рейсы одного маршрута противоположных направлений (имеют одинаковые значения поля route_id). Данные значения не используется при расчёте поездки, а только предоставляют возможность различать рейсы по направлению при публикации расписаний. Можно задать название каждого направления при помощи поля trip_headsign.
Можно использовать поля trip_headsign и direction_id вместе, что бы назначить названия поездок в каждом направления для рейсов. Для этого файл trips.txt должен содержать следующие строки:
|
block_id | Нет |
Поле block_id определяет связку, к которой относится данный рейс. Связка включает последовательность из двух и более рейсов, осуществляемых одним и тем же транспортным средством, где пассажиры могут продолжать движение каждым последующим рейсом, не покидая транспортного средства. На одно и то же значение block_id должно ссылать не менее двух рейсов из файла trips.txt. |
shape_id | Нет |
Поле shape_id содержит идентификатор, определяющий путь следования рейса. Его значение берётся из файла shapes.txt. Файл shapes.txt позволяет задать то, как будет отображаться линия данного маршрута на карте. |
wheelchair_accessible | Нет |
|
stop_times.txt
Обязательный файл
Имя поля | Обязат. | Описание | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
trip_id | Да |
Поле trip_id содержит идентификатор, однозначно определяющий рейс. Его значение берётся из файла trips.txt. |
||||||||||
arrival_time | Да |
Поле arrival_time определяет время прибытия на конкретную остановку для конкретного рейса маршрута. Время отсчитывается от момента «полдень минус 12 часов» (фактически полночь, кроме дней перехода на летнее или зимнее время) дня начала рейса. Для времени после полуночи, относительно для начала рейса, следует вводить значение времени большее, чем 24:00:00, в формате ЧЧ:ММ:СС по местному времени, начиная отсчёт со дня начала рейса. Если время прибытия и отправления с остановки не разделены, следует вводить одинаковые значения в поля arrival_time и departure_time. Обязательно нужно ввести время прибытия на первую и последнюю остановки рейса. Если для этих остановок не определено время прибытия, используйте пустую строку в качестве значений полей arrival_time и departure_time. Расписание для остановки без времени прибытия будет составлено на основе ближайшей предыдущей остановки с заданным временем прибытия. Для обеспечения точности расчёта поездки, рекомендуется указать время прибытия и отправления для всех остановок, у которых оно известно. Время должно быть представлено в 8-знаковом формате ЧЧ:ММ:СС (формат Ч:ММ:СС также допустим, если часы начинаются с 0). Пробелы в значениях поля недопустимы. Ниже представлен список времени прибытия на остановки для одного рейса и правильный способ выразить это в поле arrival_time:
Примечание: Рейсы, которые охватывают несколько дней, будут иметь значения времени остановок большие, чем 24:00:00. Например, если рейс начинается в 22:30:00 и заканчивается в 2:15:00 следующего дня, то значения времени остановок будут 22:30:00 и 26:15:00. Введение для этих остановок значений 22:30:00 и 02:15:00 не даст желаемого результата. |
||||||||||
departure_time | Да |
Поле departure_time определяет время отправления с конкретной остановки для конкретного рейса маршрута. Время отсчитывается от момента «полдень минус 12 часов» (фактически полночь, кроме дней перехода на летнее или зимнее время) дня начала рейса. Для времени после полуночи, относительно для начала рейса, следует вводить значение времени большее, чем 24:00:00, в формате ЧЧ:ММ:СС по местному времени, начиная отсчёт со дня начала рейса. Если время прибытия и отправления с остановки не разделены, следует вводить одинаковые значения в поля arrival_time и departure_time. Обязательно нужно ввести время отправления с первой и последней остановки рейса. Если для этих остановок не определено время отправления, используйте пустую строку в качестве значений полей arrival_time и departure_time. Расписание для остановки без времени отправления будет составлено на основе ближайшей предыдущей остановки с заданным временем отправления. Для обеспечения точности расчёта поездки, рекомендуется указать время прибытия и отправления для всех остановок, у которых оно известно. Время должно быть представлено в 8-знаковом формате ЧЧ:ММ:СС (формат Ч:ММ:СС также допустим, если часы начинаются с 0). Пробелы в значениях поля недопустимы. Ниже представлен список времени отправления с остановок для одного рейса и правильный способ выразить это в поле departure_time:
Примечание: Рейсы, которые охватывают несколько дней, будут иметь значения времени остановок большие, чем 24:00:00. Например, если рейс начинается в 22:30:00 и заканчивается в 2:15:00 следующего дня, то значения времени остановок будут 22:30:00 и 26:15:00. Введение для этих остановок значений 22:30:00 и 02:15:00 не даст желаемого результата. |
||||||||||
stop_id | Да |
Поле stop_id содержит идентификатор, однозначно определяющий остановку. Разные маршруты могут использовать одни и те же остановки. stop_id берётся из файла stops.txt. Если в файле stops.txt используется поле location_type, то все остановки, на которые ссылается файл stop_times.txt должна иметь значение location_type равное 0. Если это возможно, значение stop_id должно оставаться прежним при обновлении канала. Другими словами, остановка А со stop_id=1 должна иметьstop_id=1 при всех последующих обновлениях данных. Если время остановки не определено, используйте пустое значение для полей arrival_time и departure_time. |
||||||||||
stop_sequence | Да |
Поле stop_sequence определяет последовательность остановок конкретного маршрута. Значения stop_sequence должны быть неотрицательными целым числом и увеличиваться по ходу рейса. Например, первая остановка рейса может иметь stop_sequence=1, вторая — stop_sequence=23, третья — stop_sequence=40 и так далее. |
||||||||||
stop_headsign | Нет |
Поле stop_headsign содержит текст, который отображается на табличке или табло транспортного средства, сообщающий пассажирам пункт назначения рейса. Это поле используется для переопределения предустановленного в trip_headsign значения, когда надпись на табло изменяется в течение поездки. Если надпись на табло не изменяется и относится ко всему рейсу, вместо этого поля следует использовать trip_headsign. Скриншот Google Maps с выделенным headsign. |
||||||||||
pickup_type | Нет |
Поле pickup_type показывает, осуществляется ли посадка пассажиров на этой остановке (при обычном расписании) или нет. Это поле также позволяет транспортному предприятию указать, необходимо ли пассажирам звонить на предприятие или предупреждать водителя, что бы осуществить посадку на этой остановке. Для этого поля допустимы следующие значения:
По умолчанию это поле принимает значение 0. |
||||||||||
drop_off_type | Нет |
Поле drop_off_type показывает, осуществляется ли высадка пассажиров на этой остановке (при обычном расписании) или нет. Это поле также позволяет транспортному предприятию указать, необходимо ли пассажирам звонить на предприятие или предупреждать водителя, что бы осуществить высадку на этой остановке. Для этого поля допустимы следующие значения:
По умолчанию это поле принимает значение 0. |
||||||||||
shape_dist_traveled | Нет |
Когда это поле используется в файле stop_times.txt, shape_dist_traveled определяет расстояние до остановки от первой точки пути следования. shape_dist_traveled обозначает реальное расстояние по пути следования в таких единицах, как километры или футы. Например, если автобус проходит расстояние в 5,25 километров от начала своего пути до данной остановки, в поле shape_dist_traveled надо ввести «5.25». Эта информация позволяет планировщику поездки определять какую часть пути следования необходимо отобразить на карте. Значения поля shape_dist_traveled должны увеличиваться с увеличением значения stop_sequence: они не могут использоваться для указания обратного хода относительно всего пути следования. Единицы измерения, используемые в shape_dist_traveled в файле stop_times.txt должны совпадать с используемыми в этом поле в файле shapes.txt. |
calendar.txt
Обязательный файл
Имя поля | Обязат. | Описание |
---|---|---|
service_id | Да |
Поле service_id содержит идентификатор, однозначно определяющий перечень дат, в которые доступны один или несколько маршрутов. Его значение берётся из файла trips.txt. Каждое значение service_id может встречаться не более одного раза в файле calendar.txt; эти значения уникальны. |
monday | Да |
Поле monday содержит одно из двух возможных значений, показывающих доступен рейс по понедельникам или нет.
Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt. |
tuesday | Да |
Поле tuesday содержит одно из двух возможных значений, показывающих доступен рейс по вторникам или нет.
Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt. |
wednesday | Да |
Поле wednesday содержит одно из двух возможных значений, показывающих доступен рейс по средам или нет.
Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt. |
thursday | Да |
Поле thursday содержит одно из двух возможных значений, показывающих доступен рейс по четвергам или нет.
Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt. |
friday | Да |
Поле friday содержит одно из двух возможных значений, показывающих доступен рейс по пятницам или нет.
Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt. |
saturday | Да |
Поле saturday содержит одно из двух возможных значений, показывающих доступен рейс по субботам или нет.
Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt. |
sunday | Да |
Поле sunday содержит одно из двух возможных значений, показывающих доступен рейс по воскресеньям или нет.
Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt. |
start_date | Да |
Поле start_date содержит дату начала действия рейса. Значение поля start_date должно быть в формате ГГГГММДД. |
end_date | Да |
Поле end_date содержит дату окончания действия рейса. Значение поля end_date должно быть в формате ГГГГММДД. |
calendar_dates.txt
Необязательный файл
Таблица calendar_dates позволяет явно указать на доступность или недоступность рейса на конкретную дату. Есть два подхода к её использованию.
- Рекомендуемый: Использовать calendar_dates.txt в сочетании с calendar.txt, когда calendar_dates.txt определяет все исключения из стандартного расписания, определяемого в файле calendar.txt. Если рейсы предприятия, в основном, регулярные с небольшими изменениями по конкретным датам (например, расписание школьного автобуса), то такой подход будет оптимальным.
- Альтернативный: Файл calendar.txt не используется, все даты включаются в файл calendar_dates.txt. Если расписание различно для большинства дней или есть необходимость выводить даты программно без приведения к обычному недельному расписанию, то более удобным может быть этот подход.
Имя поля | Обязат. | Описание |
---|---|---|
service_id | Да |
Поле service_id содержит идентификатор, однозначно определяющий перечень дат, для которого вводятся исключения доступности рейсов. Каждая пара (service_id, date) может быть представлена в файле calendar_dates.txt только один раз. Если значение service_id представлен и в файле calendar.txt, и в файле calendar_dates.txt информация в calendar_dates.txt заменяется информацией из calendar.txt. Это значение берётся из файла trips.txt. |
date | Да |
Поле date указывает на конкретную дату, когда доступность рейса отличается от обычной. Можно использовать поле exception_type, что бы показать доступен ли рейс на данную дату. Поле date должно быть в формате ГГГГММДД. |
exception_type | Да |
Поле exception_type показывает доступен ли рейс на дату, указанную в поле date.
Например, для рейса есть одно расписание на праздничные дни и другое на все остальные дни. Тогда должен быть один service_id, который будет соответствовать обычному расписанию и ещё один service_id, который будет соответствовать расписанию на праздничные дни. Файл calendar_dates.txt будет добавлять праздники в праздничный service_id и исключать праздники из будничного service_id. |
fare_attributes.txt
Необязательный файл
Имя поля | Обязат. | Описание |
---|---|---|
fare_id | Да |
Поле fare_id содержит идентификатор, однозначно определяющий тариф. Поле fare_id должно быть уникальным. |
price | Да |
Поле price содержит цену в валюте, задающейся через currency_type. |
currency_type | Да |
Поле currency_type определяет валюту, используемую для оплаты проезда. Значение должно представлять собой буквенный код валюты по стандарту ISO 4217, доступный по ссылке: http://en.wikipedia.org/wiki/ISO_4217#Active_codes (на английском). |
payment_method | Да |
Поле payment_method показывает когда необходимо оплатить проезд. Данное поле может принимать следующие значения:
|
transfers | Да |
Поле transfers показывает сколько пересадок можно совершить по одному билету. Данное поле может принимать следующие значения:
|
transfer_duration | Нет |
Поле transfer_duration задаёт временя в секундах, в течение которого возможна пересадка. Если значение поля transfers равно 0, transfer_duration показывает как долго действует билет, когда пересадки недоступны. Если это поле не будет использоваться для указания времени действия билета, поле transfer_duration должно быть пропущено или оставлено пустым, когда transfers равно 0. |
fare_rules.txt
Необязательный файл
Таблица fare_rules позволяет описать как тарифы в fare_attributes.txt применяются на маршрутах. Большинство тарифных планов используют комбинации из следующих правил:
- Тариф зависит от начальной и конечной остановки поездки.
- Тариф зависит от того, сколько зон преодолевается за поездку.
- Тариф зависит от того, каким именно маршрутом осуществляется поездка.
Примеры описания тарифных планов при помощи fare_rules.txt и fare_attributes.txt, смотрите на странице FareExamples в вики проекта GoogleTransitDataFeed (на английском).
Имя поля | Обязат. | Описание |
---|---|---|
fare_id | Да |
Поле fare_id содержит идентификатор, однозначно определяющий тариф. Это значение берётся из файла fare_attributes.txt. |
route_id | Нет |
Поле route_id соотносит тариф с маршрутом. route_id берётся из файла routes.txt. Если есть несколько маршрутов с одинаковыми тарифами, в файл fare_rules.txt необходимо добавить запись для каждого из них. Например, если тариф «а» действует и на маршруте 90, и на маршруте 95, то файл fare_rules.txt должен содержать такие строки для данного тарифа:
|
origin_id | Нет |
Поле origin_id соотносит тариф с начальной тарифной зоной. Это значение берётся из файла stops.txt. Если несколько начальных тарифных зон представлены одинаковыми тарифами, в файл fare_rules.txt необходимо добавить запись для каждой из них. Например, если тарифный план «б» действителен для поездки, начинающейся как с зоны «2», так и с зоны «8», то файл fare_rules.txt должен содержать такие строки для данного тарифа:
|
destination_id | Нет |
Поле destination_id соотносит тариф с конечной тарифной зоной. Это значение берётся из файла stops.txt. Если несколько конечных тарифных зон представлены одинаковыми тарифами, в файл fare_rules.txt необходимо добавить запись для каждой из них. Например, необходимо одновременно использовать поля origin_id и destination_id, что бы указать, что тариф «б» действителен как для поездки из зоны «3» в зону «4», так и из зоны «3» в зону «4», тогда файл fare_rules.txt должен содержать такие строки для данного тарифа:
|
contains_id | Нет |
Поле contains_id соотносит тариф с тарифной зоной, берётся из файла stops.txt. Стоимость проезда, в свою очередь, соотносится с поездками, проходящими через каждую зону contains_id. Например, если тариф «д» соотносится со всеми поездками на электричке «элек» через зоны 5, 6 и 7, файл fare_rules.txt должен содержать такие строки:
Потому что все зоны из contains_id должны соответствовать применяемому тарифу, а к поездке, которая проходит через зоны 5 и 6, но не через зону 7, не должен применяться тариф «д». Подробнее — на странице FareExamples в вики проекта GoogleTransitDataFeed (на английском). |
shapes.txt
Необязательный файл
Имя поля | Обязат. | Описание |
---|---|---|
shape_id | Да |
Поле shape_id содержит идентификатор, однозначно определяющий путь следования. |
shape_pt_lat | Да |
Поле shape_pt_lat задаёт точке пути значение широты. Значение должно быть в системе координат WGS 84. Каждая строка в файле shapes.txt представляет точку заданного пути. Например, если путь «A_shp» состоит из трёх точек, то файл shapes.txt для задания такого пути должен содержать следующие строки:
|
shape_pt_lon | Да |
Поле shape_pt_lon задаёт точке пути значение долготы. Значение должно быть в системе координат WGS 84. Каждая строка в файле shapes.txt представляет точку заданного пути. Например, если путь «A_shp» состоит из трёх точек, то файл shapes.txt для задания такого пути должен содержать следующие строки:
|
shape_pt_sequence | Да |
Поле shape_pt_sequence задаёт точке с заданными координатами место на пути следования. Значение поля shape_pt_sequence должно быть неотрицательным целым числом и увеличиваться по ходу рейса. Например, если путь «A_shp» состоит из трёх точек, то файл shapes.txt для задания такого пути должен содержать следующие строки:
|
shape_dist_traveled | Нет |
Когда это поле используется в файле shapes.txt, shape_dist_traveled определяет положение точки пути, как расстояние, пройденное по пути следования от его первой точки.
shape_dist_traveled обозначает реальное расстояние по пути следования в таких единицах, как километры или футы.
Эта информация позволяет планировщику поездки определять какую часть пути следования необходимо отобразить на карте.
Значения поля shape_dist_traveled должны увеличиваться с увеличением значения shape_pt_sequence: они не могут использоваться для указания обратного хода относительно всего пути следования. Например, если автобус проходит через три точки, задаваемые путём «A_shp», то значения shape_dist_traveled (здесь в километрах) должны выглядеть следующим образом:
|
frequencies.txt
Необязательный файл
Эта таблица предназначена для представления расписаний, которые не имеют определённого перечня времени остановок. Если рейс описан в файле frequencies.txt, планировщик поездки игнорирует для этого рейса абсолютно все значения полей arrival_time и departure_time в файле stop_times.txt. Вместо этого, таблица stop_times будет определять последовательность остановок и разницу во времени между каждыми из них.
Имя поля | Обязат. | Описание |
---|---|---|
trip_id | Да |
Поле trip_id содержит идентификатор, определяющий рейсы, для которых задаются интервалы движения. trip_id берётся из файла trips.txt. |
start_time | Да |
Поле start_time задаёт время, начиная с которого действуют данные интервалы. Время отсчитывается от момента «полдень минус 12 часов» (фактически полночь, кроме дней перехода на летнее или зимнее время) дня начала рейса. Для времени после полуночи следует вводить значение времени большее, чем 24:00:00, в формате ЧЧ:ММ:СС по местному времени, начиная отсчёт со дня начала рейса. Например, 25:35:00. |
end_time | Да |
Поле end_time задаёт время, с которого на первой остановке рейса прекращают действовать данные интервалы (начинают действовать другие). Время отсчитывается от момента «полдень минус 12 часов» (фактически полночь, кроме дней перехода на летнее или зимнее время) дня начала рейса. Для времени после полуночи следует вводить значение времени большее, чем 24:00:00, в формате ЧЧ:ММ:СС по местному времени, начиная отсчёт со дня начала рейса. Например, 25:35:00. |
headway_secs | Да |
Поле headway_secs задаёт интервалы отправления рейсов, действующие в период времени, заданный значениями start_time и end_time. Интервалы должны задаваться в секундах. Периоды, для которых определены интервалы движения (строки в файле frequencies.txt) не должны перекрывать друг друга на каждом маршруте, так как в этом случае может быть сложно определить, какой из них действует. Однако, период действия интервала может начинаться в то же время, когда предыдущий заканчивается, например:
|
exact_times | Нет |
Поле exact_times определяет, имеют ли рейсы, описанные интервалами, точное расписание, которое можно сгенерировать из информации об интервалах. Для этого поля допустимы следующие значения:
Значения exact_times должны быть одинаковыми для всех записей frequencies.txt с одинаковыми значениями trip_id. Если exact_times равно 1 и записи в frequencies.txt задано start_time равное end_time, то значит ни одного рейса нет. Когда exact_times равно 1, надо помнить, что значение end_time должно быть больше чем время старта последнего рейса данного периода, но меньше, чем (время старта последнего рейса + headway_secs). |
transfers.txt
Необязательный файл
Планировщики поездок обычно просчитывают точки пересадки, исходя из относительной близости остановок маршрутов. Для потенциально неоднозначных пар остановок используйте файл transfers.txt для определения дополнительных правил пересадок между маршрутами.
Имя поля | Обязат. | Описание |
---|---|---|
from_stop_id | Да |
Поле from_stop_id содержит идентификатор, определяющий остановку или станцию, с которой начинается пересадка. from_stop_id берётся из файла stops.txt. Если идентификатор остановки ссылается на станцию, включающую несколько остановок, то данное правило пересадки применяется ко всем остановкам станции. |
to_stop_id | Да |
Поле to_stop_id содержит идентификатор, определяющий остановку или станцию, на которой заканчивается пересадка. to_stop_id берётся из файла stops.txt. Если идентификатор остановки ссылается на станцию, включающую несколько остановок, то данное правило пересадки применяется ко всем остановкам станции. |
transfer_type | Да |
Поле transfer_type задаёт тип связи для пары (from_stop_id, to_stop_id). Для этого поля допустимы следующие значения:
|
min_transfer_time | Нет |
Когда пересадка требует некоторого минимального запаса времени между прибытием одного рейса и отправлением другого (transfer_type=2), поле min_transfer_time задаёт время, которое должно быть заложено в поездку, что бы совершить пересадку между рейсами в этом месте. min_transfer_time должно быть достаточным для перемещения обычного пассажира между двумя остановками и включать запас времени, учитывающий возможное опоздание каждого рейса. Значение min_transfer_time должно вводится в секундах и быть неотрицательным целым числом. |
feed_info.txt
Необязательный файл
Этот файл содержит информацию скорее о самом канале, чем об услугах, описываемых каналом. В GTFS есть файл agency.txt для подачи информации о предприятиях, предоставляющих описываемые каналом транспортные услуги. Однако, организатором канала может быть отличная от этих предприятий организация. Также здесь есть поля, которые задают параметры всего канала, а не только транспортного предприятия.
Имя поля | Обязат. | Описание |
---|---|---|
feed_publisher_name | Да |
Поле feed_publisher_name содержит полное название организации, которая занимается данным каналом. (Оно может совпадать со значением поля agency_name в файле agency.txt.) Приложения, использующие GTFS-канал могут отображать это название, при указании источника данных. |
feed_publisher_url | Да |
Поле feed_publisher_url содержит URL сайта организации, которая занимается каналом. (Оно может совпадать со значением поля agency_url в файле agency.txt.) Это значение — полный URL, включающий http:// или https://, и в котором все специальные символы корректно преобразованы. С подробным описание того, как правильно создать полный URL, можно ознакомиться по ссылке: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html (на английсокм). |
feed_lang | Да |
Поле feed_lang содержит код языка по стандарту IETF BCP 47, который используется по умолчанию в текстах этого канала. Этот параметр помогает пользователям GTFS-канала выбирать правила использования заглавных букв и другие языковые особенности для данного канала. Информацию об IETF BCP 47 можно найти по ссылкам: http://www.rfc-editor.org/rfc/bcp/bcp47.txt и http://www.w3.org/International/articles/language-tags/ (на английском). |
feed_start_date feed_end_date |
Нет |
Канал предоставляет полную и достоверную информацию о расписании на период, со дня feed_start_date по день feed_end_date. Оба дня задаются датой в формате ГГГГММДД как для calendar.txt, или оставляются пустыми, если не могут быть определены. Дата feed_end_date не должна предшествовать дате feed_start_date, если они обе заданы. Одобряется, если канал продолжает отдавать информацию и после этого периода, что бы можно было предположить будущее расписание, но потребителям информации следует помнить об о ненадёжности такой информации. Если feed_start_date или feed_end_date выходят за пределы дат действующего календаря, определённого в файлах calendar.txt и calendar_dates.txt, то потребитель информации предполагает, что на даты с feed_start_date по feed_end_date, не включённые в действующий календарь, не никаких рейсов. |
feed_version | Нет |
В этом поле организатор может указать текущую версию своего GTFS-канала. Приложения, использующие данные канала, могут отображать этот параметр, что бы помочь организаторам определить используется ли в приложении последняя версия канала. |
Оригинал: https://developers.google.com/transit/gtfs/reference