Данные и время
Источники#
| Данные | Источник | Как часто iBus обновляет |
|---|---|---|
| Расписание: остановки, маршруты, рейсы, календарь | Министерство транспорта, GTFS | Каждую ночь, около 04:00 по Израилю; getStopsVersion меняется, когда опубликовано новое расписание |
| Реальное время: транспорт на подходе к остановкам | Министерство транспорта, SIRI | Источник опрашивается каждые несколько секунд; машина сообщает о себе примерно раз в 20-60 секунд |
| Сообщения о нарушениях движения | Министерство транспорта | Примерно каждые 5 минут |
iBus обрабатывает данные (сопоставление, свежесть, названия на трёх языках). Это не официальный сервис министерства.
Расписание и реальное время - разные ответы#
- Операции расписания (
getStopDaySchedule,getLineDaySchedule) отвечают, что запланировано на служебную дату. Об опозданиях они не знают. - Реальное время (
getStopArrivals) - то, что машины сообщают сейчас, строка за строкой, сfreshness. - Строка реального времени со старым наблюдением показывает время по расписанию, только если расписание подтверждает, что этот рейс заходит на эту остановку в эту служебную дату (
scheduled_confirmed). Иначе она остаётсяstale_observation.
Правила свежести#
Пороги приходят из getFreshnessContract (версия 1):
| Правило | Значение |
|---|---|
| Наблюдение машины живое | не старше 120 секунд |
| Время по старому наблюдению не показывается как время | старше 1 800 секунд (eta_hidden) |
| Сообщения считаются задержанными | старше 900 секунд |
| Наблюдению из будущего не доверяем | больше чем на 300 секунд вперёд |
Возраст считается по часам сервера (server_now_utc в ответе), а не по времени вашего запроса.
Служебная дата и время после полуночи#
Служебная дата (date=YYYYMMDD) - рабочий день, к которому относится рейс. Время в расписании - строка GTFS HH:MM:SS по израильским часам этой служебной даты, и оно бывает 24:00:00 и позже: 25:04:48 в служебную дату 2026-10-21 - это 01:04:48 22 октября, а рейс всё равно относится к 21 октября.
- Сортируйте строки расписания по строке как есть:
24:10:00идёт после23:50:00. - Чтобы получить календарное время, перенесите часы сверх 24 на следующий день.
- Без
dateберётся сегодняшняя служебная дата в Израиле. Дата в другом формате даёт пустой список, а не ошибку. - Опубликованное расписание покрывает примерно месяц вперёд.
getServiceDayскажет, входит ли дата в него (feed.from,feed.to) и отличается ли она от обычного такого же дня недели (праздники).
Перевод часов. Министерство записывает время в расписании по часам и в ночи перевода (проверено 19.10.2026 на 1 534 из 1 559 ночных рейсов 25.10.2026). UTC-время, которое iBus вычисляет из расписания (gtfs_scheduled_*_utc, freshness.scheduled_arrival_utc, first_departure_utc), пока считается по правилу GTFS «полдень минус 12 часов»: для рейсов до 02:00 в день перевода (25.10.2026, 26.03.2027) оно может отличаться на час. В такие ночи опирайтесь на живые строки.
Поля времени#
- Поля с окончанием
_utc- UTC в формате ISO 8601 сZ, например2026-10-21T14:17:00Z. updatedAtв конверте прибытий - местное время Израиля со смещением, например2026-10-21T17:16:22+03:00.dateRangesсообщений содержат и секунды Unix (start,end), и строки UTC.
Идентификаторы#
| Поле | Что это |
|---|---|
stop_code | Публичный код остановки - число на табличке. Используйте его в путях. |
stop_id | Внутренний идентификатор GTFS. Не публичный код. |
route_id (line_ref в реальном времени) | Одно направление или вариант линии. Найти - через searchLines. |
route_short_name | Публичный номер линии. Не уникален: линия 1 есть во многих городах. |
agency_id | Перевозчик. Названия - в listAgencies. |
makat | Идентификатор линии министерства, общий для её направлений. |
dated_vehicle_journey_ref | Идентификатор рейса у источника. Это не trip_id GTFS. |
gtfs_trip_id | Рейс GTFS - только если совпал ровно один. |
vehicle_ref | Суточный псевдоним машины. Меняется каждые сутки UTC и никогда не равен госномеру. |
direction_ref | Направление у источника (1 или 2). Это не direction_id GTFS (0 или 1). |
Координаты и единицы#
- Координаты - WGS 84 в десятичных градусах.
coordsформы маршрута - пары[lon, lat](порядок GeoJSON);shapeповторяет точки как{lat, lon}. - Расстояния в метрах (
dist_m,distance_from_stop_m), скорость в км/ч (velocity), направление в градусах от севера (bearing). - Возраст в секундах (
age_sec), ожидание в целых минутах (expected_in_min), тарифы в шекелях (tariff).
Языки названий#
Параметр lang выбирает язык названий остановок и направлений: en (и ru) дают английские названия из расписания министерства, ar - арабские, остальное - исходный иврит. Русских названий в источнике нет. Поля names и dest_names сразу содержат иврит, английский и арабский. Тексты сообщений публикует министерство, обычно на иврите.
Кэширование#
Каждый ответ сообщает в Cache-Control, сколько его можно хранить: реальное время и расписание - no-store, справочные данные - public от 60 секунд до часа. С заголовком Accept-Encoding: gzip ответы сжимаются: дневное расписание оживлённой остановки - около 580 КБ JSON и около 27 КБ в сжатом виде.