• Перевод:
  • Обзор
  • Описание
  • Рекомендации
  • Примеры
  • Изменения
  • Описание формата GTFS

    Перевод версии от 20 июня 2012

    В процессе перевода

    Этот документ описывает виды файлов, которые включает в себя GTFS-канал, и описывает поля, используемые в этих файлах.

    Оглавление

    1. Термины и определения
    2. Файлы канала
    3. Требования к файлам
    4. Описание полей

    Термины и определения

    В этом разделе даны определения терминов, используемых в документе.

    • Обязательное поле — поле, которое должно быть включено в файл и значение которого должно быть определено для каждой записи этого файла. Некоторые обязательные поля допускают пустую строку в качестве значения. Для ввода пустой строки просто не добавляйте никакого текста в кавычках в этом поле. Обратите внимание, что 0 интерпретируется как «строка со значением 0» и не является пустой строкой. Более подробно смотрите в определениях полей.
    • Необязательное поле — поле, которое может не включаться в файл. Если необязательное поле включено в файл, то значение этого поля должно быть определено для каждой записи файла. Можно назначать пустую строку в качестве значения поля для записей, не имеющих значений в этом столбце. Некоторые необязательные поля допускают пустую строку в качестве значения. Для ввода пустой строки просто не добавляйте никакого текста в кавычках в этом поле. Обратите внимание, что 0 интерпретируется как «строка со значением 0» и не является пустой строкой.
    • Уникальное поле — поле, содержащее значение, соответствующее одному отдельному объекту в пределах столбца. Например, если маршруту присвоен идентификатор , то ни один другой маршрут не должен иметь такой же. Однако, можно присвоить идентификатор остановке, т. к. остановка является объектом другого типа.

    Файлы канала

    Этот раздел описывает файлы канала в соответствии с их содержимым:

    Имя файла Обязат. Что описывает
    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). Языковой код регистронезависим (и ru, и RU допустимы). Этот параметр определяет правила использования заглавных букв и другие языковые особенности для всей текстовой информации, содержащейся в канале предприятия. Перечень корректных значений кодов можно посмотреть по ссылке: http://ru.wikipedia.org/wiki/Коды_языков.

    agency_phone Нет

    Поле agency_phone содержит один телефонный номер для описываемого предприятия. Это поле — строковое значение, представляющее телефонный номер в формате, принятом в регионе, которое обслуживает предприятие. Оно может содержать знаки пунктуации для группировки цифр номера. Замена цифр буквами (например, "503-238-RIDE") допустима, но поле не должно содержать никакого другого разъяснительного текста.

    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 может принимать следующие значения:

    • 0 (или пустое значение) — остановка. Место, где осуществляется посадка или высадка пассажиров из транспортного средства.
    • 1 — станция. Физическая структура или зона, включающая одну или несколько остановок.
    parent_station Нет

    Для остановки, которая физически располагается внутри станции, поле parent_station определяет включающую её станцию. Для использования этого поля файл stops.txt должен также содержать строку, где данному идентификатору соответствует location_type=1.

    Данная запись представляет… Записи задан location_type Поле parent_station этой записи содержит...
    остановку, расположенную внутри станции. 0 или пустое значение идентификатор станции, в которой эта остановка расположена. Остановка, на которую ссылается parent_station должна иметь location_type=1.
    остановку, расположенную вне станции. 0 или пустое значение пустое значение. parent_station не определено для этой остановки.
    станцию. 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 определяет, возможна ли посадка на инвалидном кресле на данной остановке или станции. Поле может принимать следующие значения:

    • 0 (или пустое значение) — показывает, что для этой остановки нет информации о такой возможности.
    • 1 — показывает, что, по крайней мере, некоторые транспортные средства на этой остановке могут принять пассажира в инвалидном кресле.
    • 2 — посадка на инвалидном кресле невозможна на этой остановке.

    Когда остановка является частью станции, о чём говорит непустое значение поля parent_station, значение её поля wheelchair_boarding имеет дополнительную семантику:

    • 0 (или пустое значение) — остановка наследует своё значение wheelchair_boarding от включающей её станции, если таковое у станции имеется.
    • 1 — существует некоторый доступный для передвижения на коляске путь из-за пределов станции до данной остановки/платформы.
    • 2 — не существует доступного для передвижения на коляске пути из-за пределов станции до данной остановки/платформы.

    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 указывает на вид транспорта, используемого на маршруте. Для этого поля допустимы следующие значения:

    • 0 — трамвай или другие легкорельсовые наземные виды транспорта, действующие в черте города.
    • 1 — метро. Любые подземные рельсовые виды транспорта, действующие в черте города.
    • 2 — железнодорожный транспорт, используемый на дальние дистанции (пригородные электрички, поезда дальнего следования).
    • 3 — автобус, троллейбус. Используется для маршрутов, обслуживаемых безрельсовыми пневмоколёсными видами транспорта, независимо от их дальности: внутригородские, пригородные, междугородние.
    • 4 — паром. Любой водный вид транспорта.
    • 5 — канатный трамвай. Используется для наземного рельсового транспорта, приводимого в движение канатом, расположенным под днищем.
    • 6 — канатная дорога, подъёмник. Используется для канатных дорог, у которых кабина подвешена к тросу.
    • 7 — фуникулёр. Любая рельсовая система, предназначенная для крутых склонов.

    Скриншот 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.

    • 0 — рейс в одном направлении (например, отправляющийся со станции).
    • 1 — рейс в противоположном направлении (например, пребывающий на станцию).

    Можно использовать поля trip_headsign и direction_id вместе, что бы назначить названия поездок в каждом направления для рейсов. Для этого файл trips.txt должен содержать следующие строки:

    …,trip_id,…,trip_headsign,direction_id
    …,5212021,…,Варнавино,0
    …,5212022,…,Ветлужский,1

    block_id Нет

    Поле block_id определяет связку, к которой относится данный рейс. Связка включает последовательность из двух и более рейсов, осуществляемых одним и тем же транспортным средством, где пассажиры могут продолжать движение каждым последующим рейсом, не покидая транспортного средства. На одно и то же значение block_id должно ссылать не менее двух рейсов из файла trips.txt.

    shape_id Нет

    Поле shape_id содержит идентификатор, определяющий путь следования рейса. Его значение берётся из файла shapes.txt. Файл shapes.txt позволяет задать то, как будет отображаться линия данного маршрута на карте.

    wheelchair_accessible Нет
    • 0 (или пустое значение) — нет информации о доступности для колясочников.
    • 1 — транспортное средство, используемое на данном рейсе, может разместить, по крайней мере, одного пассажира в инвалидном кресле.
    • 2 — люди в инвалидных креслах не смогут воспользоваться этим рейсом.

    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:

    Время Значение arrival_time
    08:10:00 08:10:00 или 8:10:00
    13:05:00 13:05:00
    19:40:00 19:40:00
    01:55:00 25:55:00

    Примечание: Рейсы, которые охватывают несколько дней, будут иметь значения времени остановок большие, чем 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:

    Время Значение departure_time
    08:10:00 08:10:00 или 8:10:00
    13:05:00 13:05:00
    19:40:00 19:40:00
    01:55:00 25:55:00

    Примечание: Рейсы, которые охватывают несколько дней, будут иметь значения времени остановок большие, чем 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 — посадка осуществляется по штатному расписанию.
    • 1 — посадка не осуществляется.
    • 2 — необходимо позвонить на предприятие, что бы договорится о посадке.
    • 3 — необходимо договорится с водителем для осуществления посадки.

    По умолчанию это поле принимает значение 0.

    drop_off_type Нет

    Поле drop_off_type показывает, осуществляется ли высадка пассажиров на этой остановке (при обычном расписании) или нет. Это поле также позволяет транспортному предприятию указать, необходимо ли пассажирам звонить на предприятие или предупреждать водителя, что бы осуществить высадку на этой остановке. Для этого поля допустимы следующие значения:

    • 0 — высадка осуществляется по штатному расписанию.
    • 1 — высадка не осуществляется.
    • 2 — необходимо позвонить на предприятие, что бы договорится о высадке.
    • 3 — необходимо договорится с водителем для осуществления высадки.

    По умолчанию это поле принимает значение 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 содержит одно из двух возможных значений, показывающих доступен рейс по понедельникам или нет.

    • Значение 1 показывает, что рейс доступен в каждый понедельник из диапазона дат. (Диапазон дат задаётся при помощи полей start_date и end_date.)
    • Значение 0 показывает, что рейс недоступен по понедельникам из заданного диапазона дат.

    Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt.

    tuesday Да

    Поле tuesday содержит одно из двух возможных значений, показывающих доступен рейс по вторникам или нет.

    • Значение 1 показывает, что рейс доступен в каждый вторник из диапазона дат. (Диапазон дат задаётся при помощи полей start_date и end_date.)
    • Значение 0 показывает, что рейс недоступен по вторникам из заданного диапазона дат.

    Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt.

    wednesday Да

    Поле wednesday содержит одно из двух возможных значений, показывающих доступен рейс по средам или нет.

    • Значение 1 показывает, что рейс доступен в каждую среду из диапазона дат. (Диапазон дат задаётся при помощи полей start_date и end_date.)
    • Значение 0 показывает, что рейс недоступен по средам из заданного диапазона дат.

    Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt.

    thursday Да

    Поле thursday содержит одно из двух возможных значений, показывающих доступен рейс по четвергам или нет.

    • Значение 1 показывает, что рейс доступен в каждый четверг из диапазона дат. (Диапазон дат задаётся при помощи полей start_date и end_date.)
    • Значение 0 показывает, что рейс недоступен по четвергам из заданного диапазона дат.

    Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt.

    friday Да

    Поле friday содержит одно из двух возможных значений, показывающих доступен рейс по пятницам или нет.

    • Значение 1 показывает, что рейс доступен в каждую пятницу из диапазона дат. (Диапазон дат задаётся при помощи полей start_date и end_date.)
    • Значение 0 показывает, что рейс недоступен по пятницам из заданного диапазона дат.

    Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt.

    saturday Да

    Поле saturday содержит одно из двух возможных значений, показывающих доступен рейс по субботам или нет.

    • Значение 1 показывает, что рейс доступен в каждую субботу из диапазона дат. (Диапазон дат задаётся при помощи полей start_date и end_date.)
    • Значение 0 показывает, что рейс недоступен по субботам из заданного диапазона дат.

    Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле calendar_dates.txt.

    sunday Да

    Поле sunday содержит одно из двух возможных значений, показывающих доступен рейс по воскресеньям или нет.

    • Значение 1 показывает, что рейс доступен в каждое воскресенье из диапазона дат. (Диапазон дат задаётся при помощи полей start_date и end_date.)
    • Значение 0 показывает, что рейс недоступен по воскресеньям из заданного диапазона дат.

    Примечание: Можно задать список исключений для конкретных дат, например, праздничных дней, в файле 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.

    • Значение 1 говорит, что рейс вводится на данную дату.
    • Значение 2 говорит, что рейс на данную дату отменяется.

    Например, для рейса есть одно расписание на праздничные дни и другое на все остальные дни. Тогда должен быть один 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 показывает когда необходимо оплатить проезд. Данное поле может принимать следующие значения:

    • 0 — оплата после посадки.
    • 1 — оплата перед посадкой.
    transfers Да

    Поле transfers показывает сколько пересадок можно совершить по одному билету. Данное поле может принимать следующие значения:

    • 0 — ни одной пересадки.
    • 1 — одна пересадка.
    • 2 — две пересадки.
    • пустое значение — неограниченное количество пересадок.
    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 должен содержать такие строки для данного тарифа:

    а,90
    а,95

    origin_id Нет

    Поле origin_id соотносит тариф с начальной тарифной зоной. Это значение берётся из файла stops.txt. Если несколько начальных тарифных зон представлены одинаковыми тарифами, в файл fare_rules.txt необходимо добавить запись для каждой из них.

    Например, если тарифный план «б» действителен для поездки, начинающейся как с зоны «2», так и с зоны «8», то файл fare_rules.txt должен содержать такие строки для данного тарифа:

    б,…,2,…
    б,…,8,…

    destination_id Нет

    Поле destination_id соотносит тариф с конечной тарифной зоной. Это значение берётся из файла stops.txt. Если несколько конечных тарифных зон представлены одинаковыми тарифами, в файл fare_rules.txt необходимо добавить запись для каждой из них.

    Например, необходимо одновременно использовать поля origin_id и destination_id, что бы указать, что тариф «б» действителен как для поездки из зоны «3» в зону «4», так и из зоны «3» в зону «4», тогда файл fare_rules.txt должен содержать такие строки для данного тарифа:

    б,…,3,4
    б,…,3,5

    contains_id Нет

    Поле contains_id соотносит тариф с тарифной зоной, берётся из файла stops.txt. Стоимость проезда, в свою очередь, соотносится с поездками, проходящими через каждую зону contains_id.

    Например, если тариф «д» соотносится со всеми поездками на электричке «элек» через зоны 5, 6 и 7, файл fare_rules.txt должен содержать такие строки:

    д,элек,,,5
    д,элек,,,6
    дет,элек34,,,7

    Потому что все зоны из 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 для задания такого пути должен содержать следующие строки:

    A_shp,37.61956,-122.48161,0
    A_shp,37.64430,-122.41070,6
    A_shp,37.65863,-122.30839,11

    shape_pt_lon Да

    Поле shape_pt_lon задаёт точке пути значение долготы. Значение должно быть в системе координат WGS 84. Каждая строка в файле shapes.txt представляет точку заданного пути.

    Например, если путь «A_shp» состоит из трёх точек, то файл shapes.txt для задания такого пути должен содержать следующие строки:

    A_shp,37.61956,-122.48161,0
    A_shp,37.64430,-122.41070,6
    A_shp,37.65863,-122.30839,11

    shape_pt_sequence Да

    Поле shape_pt_sequence задаёт точке с заданными координатами место на пути следования. Значение поля shape_pt_sequence должно быть неотрицательным целым числом и увеличиваться по ходу рейса.

    Например, если путь «A_shp» состоит из трёх точек, то файл shapes.txt для задания такого пути должен содержать следующие строки:

    A_shp,37.61956,-122.48161,0
    A_shp,37.64430,-122.41070,6
    A_shp,37.65863,-122.30839,11

    shape_dist_traveled Нет

    Когда это поле используется в файле shapes.txt, shape_dist_traveled определяет положение точки пути, как расстояние, пройденное по пути следования от его первой точки. shape_dist_traveled обозначает реальное расстояние по пути следования в таких единицах, как километры или футы. Эта информация позволяет планировщику поездки определять какую часть пути следования необходимо отобразить на карте. Значения поля shape_dist_traveled должны увеличиваться с увеличением значения shape_pt_sequence: они не могут использоваться для указания обратного хода относительно всего пути следования.

    Единицы измерения, используемые в shape_dist_traveled в файле shapes.txt должны совпадать с используемыми в этом поле в файле stop_times.txt.

    Например, если автобус проходит через три точки, задаваемые путём «A_shp», то значения shape_dist_traveled (здесь в километрах) должны выглядеть следующим образом:

    A_shp,37.61956,-122.48161,0,0
    A_shp,37.64430,-122.41070,6,6.8310
    A_shp,37.65863,-122.30839,11,15.8765

    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) не должны перекрывать друг друга на каждом маршруте, так как в этом случае может быть сложно определить, какой из них действует. Однако, период действия интервала может начинаться в то же время, когда предыдущий заканчивается, например:

    A,05:00:00,07:00:00,600
    B,07:00:00,12:00:00,1200

    exact_times Нет

    Поле exact_times определяет, имеют ли рейсы, описанные интервалами, точное расписание, которое можно сгенерировать из информации об интервалах. Для этого поля допустимы следующие значения:

    • 0 (или пустое значение) — для рейсов, заданных интервалами, нет точного расписания. Это значение принимается по умолчанию.
    • 1 — для рейсов, заданных интервалами, есть точное расписание. Для каждого периода времени из frequencies.txt время начала движения рейса можно вычислить по формуле: trip_start_time = start_time + x * headway_secs для всех x = (0, 1, 2, …) при которых trip_start_time < end_time.

    Значения 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). Для этого поля допустимы следующие значения:

    • 0 (или пустое значение) — это место рекомендуется для пересадки.
    • 1 — это точка пересадки, где отправляющееся транспортное средство дожидается прибытия другого рейса и после этого ждёт некоторое время, достаточное для пересадки с прибывшего рейса.
    • 2 — пересадка в этой точке требует некоторого минимального запаса времени. Требуемое время задаётся в поле min_transfer_time.
    • 3 — пересадка в данной точке невозможна.
    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