- PVSM.RU - https://www.pvsm.ru -

Заблуждения программистов об авиации

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

Во время проектирования типов данных и схем для мира авиации можно сделать много предположений, которые на самом деле оказываются неверными. Точно так же, как когда‑то Патрик Маккензи написал «Заблуждения программистов об именах» [1], ниже я перечислил некоторые заблуждения об авиации, в которые каждый может легко впасть. Хотя многие из них возникают вследствие неправильного понимания этой области, некоторые всё же смогли «покусать» наших клиентов, а другие создавали нам проблемы на протяжении многих лет.

Все перечисленные ниже заблуждения отлично иллюстрируют ситуации, которые Hyperfeed (наша система отслеживания перелетов) должна уметь обрабатывать, чтобы наш сайт, приложения и API получали единообразную и структурированную информацию.

Авиаперелеты

  • Самолеты вылетают из гейта [выхода на посадку. Здесь и далее — прим. переводчика]

  • Самолеты, которые вылетают из гейта, покидают его ровно один раз [2]. [Cм. на taxi time].

  • Рейсы отправляются в течение нескольких часов после планируемого времени вылета.

  • Рейсы отправляются в течение дня [3] после назначенного времени в расписании.

  • У рейсов есть расписание.

  • Перелеты начинаются и завершаются в аэропортах [4].

  • Воздушные судна (за исключением вертолетов) вылетают и приземляются в аэропортах.

  • Перелет длится максимум 12 часов или около того [5].

  • Окей, длится максимум несколько дней [6]?

  • Перелеты идентифицируются номером, состоящим из кода авиакомпании и набора цифр, например, UAL1234.

  • Перелеты могут быть идентифицированы [7] либо номером рейса, либо номером регистрации судна, например, N1234, B6459 или FHUVL.

  • Идентификатор рейса (например, B6459) — это однозначно лишь одно из: либо номер регистрации воздушного судна (B-6459 [8]), либо номер рейса (B6 459 [9]), либо что‑то еще.

  • У одного рейса не может быть несколько номеров [10].

  • У рейсов с несколькими номерами должен быть какой‑то «главный» номер.

  • Номер конкретного рейса никогда не меняется [11].

  • Номер на посадочном талоне — это то же самое, что используют пилоты и командно‑диспетчерский пункт для идентификации рейса [12].

  • Номера рейсов одной авиакомпании не могут содержать код, принадлежащий какой‑то другой, не относящейся к ней авиакомпании.

  • В один и тот же день не может быть рейсов с одним и тем же номером.

  • Так, ну уж точно не должно совершаться одновременно двух рейсов с одним номером?

  • Ладно, хорошо... Два отдельных рейса от одной и той же крупной авиакомпании, которые отправляются в пределах нескольких минут, не могут иметь один [13] и тот же [14] номер? Верно?..

Аэропорты

  • Местоположение аэропортов никогда не меняется [15]. [Аэропорт Ататюрк (Стамбул) раньше имел IST в качестве кода IATA. После открытия аэропорта Стамбул (Стамбул), старый аэропорт получил код ISL, а новый IST.]

  • Названия терминалов и гейтов должны следовать какой‑то единообразной схеме.

  • Взлетно‑посадочная полоса используется только одним аэропортом [16].

  • У аэропортов должно быть два идентификатора: четырехбуквенный от ICAO и трёхбуквенный от IATA. [ICAO — Международная организация гражданской авиации [17], учреждение ООН, устанавливает нормы авиации в мире; IATA — Международная ассоциация воздушного транспорта [18], создана для сотрудничества авиакомпаний. Чаще всего вы видите именно коды IATA, например, DME для аэропорта Домодедово.]

  • Аэропорты всегда имеют ICAO, IATA и какой‑то внутренний код. [В России есть отдельный внутренний код, например, у Домодедово — ДМД.]

  • В США Министерство Транспорта всегда присваивает один [19] каноничный код к каждому аэропорту [20], над которым у него есть юрисдикция.

  • Ни у одного аэропорта не может быть несколько кодов IATA [21].

  • В США коды ICAO всех аэропортов начинаются с буквы K [22].

  • Для тех аэропортов США, у которых ICAO коды начинаются с буквы K, оставшиеся три символа [23] совпадают с его кодом IATA.

  • По коду ICAO можно определить географический регион [24] аэропорта.

  • Все, что имеет код IATA — аэропорт [25]. [IATA индексирует не только аэропорты или аэродромы, но железнодорожные станции и другие не относящиеся к авиации объекты.]

  • Все, что имеет код ICAO находится на Земле [26]. [У кратера Езеро на Марсе есть собственный код ICAO — JZRO].

  • У аэропортов есть хоть какой‑то хорошо известный идентификатор.

Авиакомпании

  • Каждая [27] авиакомпания обладает уникальным [28] кодом IATA [29].

  • Каждая [30] авиакомпания обладает [31] только одним [32] кодом IATA или ICAO.

  • По внешнему виду воздушного судна можно точно определить [33], какая авиакомпания производит рейс.

  • Авиакомпании присваивают номера определенным маршрутам.

  • Авиакомпании присваивают номера только своим рейсам [34].

  • Авиакомпании присваивают номера только рейсам [35]. [Очень интересный случай: аэропорты MLH и BSL являются фактически одним аэропортом, но находятся на территории двух разных стран. Так как на этих территориях разное ценообразование и правовые нормы, то в зависимости от того, в какой из этих «аэропортов» прилетит самолет, может меняться цена на рейс. Но при этом юридический перенос из одного аэропорта в другой нужно было объяснять интересным способом — перелетом в одну минуту.]

Навигация

  • Путевые (навигационные) точки имеют уникальные названия. [Путевые точки определяют точку в пространстве, с их помощью строятся воздушные маршруты.]

  • Понятие «высота» — единственное и общеизвестное [36]. [Существует 6 видов высоты (если верить статье) в авиации: высота по прибору, абсолютная высота, истинная высота, высота, барометрическая высота и высота по плотности.]

  • Поставщики аэронавигационного обсуживания (ПАНО; Air Navigation Service Provider) предоставляют корректную информацию о перелете. [ПАНО предоставляют услуги по контролю воздушного трафика, погоды, навигации и т. д.]

  • Хорошо, их информация достаточно корректная, они хотя бы не сообщат, что самолет вылетел, если он на самом деле не покидал аэропорт.

  • Если полетный план отменен, то рейс точно не состоится.

  • Хотя бы информация с их радаров точно определяет каждое судно.

  • Положение судна, которое попало в зону видимости двух радаров, определяется ими согласованно и одинаково.

  • Если нам приходит информация, что самолет вылетел в определенный аэропорт назначения, значит изначально существовало намерение туда прилететь.

  • Если самолет изменил аэродром назначения, значит он больше не изменится [37].

Транспондеры и ADS-B

  • ADS‑B сообщения приходят только от воздушного судна. [ADS‑B — система, передающая информацию о самолете в реальном времени — положение, скорость и др. Сообщения от этой системы общедоступны.]

  • ADS‑B сообщения приходят только от воздушного судна и наземного транспорта аэропорта.

  • ADS‑B сообщения приходят от транспорта какого‑то определенного типа.

  • GPS‑координаты в этих сообщениях точные [38].

  • GPS‑координаты в этих сообщениях точны с какой‑то заявленной погрешностью [39].

  • Идентификатор рейса в этих сообщениях — корректный.

  • Транспондеры всегда настроены передавать корректную информацию о типе воздушного судна (самолет, вертолет, беспилотник и т. д.)

  • В сообщениях ADS‑B всегда можно определить регистрационный номер судна.

  • Транспондеры запрограммированы передавать корректный Mode S адрес [ ‑уникальный код, присвоенный судну].

  • Все транспондеры на одном судне передают один и тот же Mode S адрес.

  • Никто не установит идентификатор полета на что‑то странное, например, NULL.

  • Транспондер не будут забывать перепрограммировать, когда регистрация судна меняется.

  • ADS‑B сообщения всегда приходят в том же виде, в котором они были отправлены.

  • Никто никогда не отправит неверное ADS‑B сообщение.

  • Транспондеры никогда не ломаются, и крысы никогда не грызут кабели.


Спасибо всем моим коллегам, кто помог составить этот список заблуждений: Mark Duell, Paul Durandt, Karina Elizondo, Matt Higgins, Thomas Kyanko, Nathan Reed и Amy Szczepanski.

Заблуждения программистов об авиации - 1

Ben Burwell

Ben is a Senior Software Engineer on the Flight Tracking team.

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

Автор: artembakhanov

Источник [40]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/423344

Ссылки в тексте:

[1] «Заблуждения программистов об именах»: https://habr.com/ru/articles/146901/

[2] покидают его ровно один раз: https://www.flightaware.com/live/flight/AFR1/history/20250514/2040Z/KJFK/LFPG?ref=flightaware.engineering

[3] в течение дня: https://www.flightaware.com/live/flight/PDT5965/history/20250508/2224Z/KCHO/KCLT?ref=flightaware.engineering

[4] в аэропортах: https://www.flightaware.com/live/flight/N144NE/history/20250518/1747Z/KPSM/L%2042.98589%20-71.12891?ref=flightaware.engineering

[5] 12 часов или около того: https://www.flightaware.com/live/flight/SIA21/history/20250516/1345Z/KEWR/WSSS?ref=flightaware.engineering

[6] несколько дней: https://www.flightaware.com/live/flight/HBAL812/history/20190717/1738Z?ref=flightaware.engineering

[7] идентифицированы: https://www.flightaware.com/live/flight/C6031/history/20250521/1752Z/KBID/KFMH?ref=flightaware.engineering

[8] B-6459: https://www.flightaware.com/live/flight/B6459?ref=flightaware.engineering

[9] B6 459: https://www.flightaware.com/live/flight/JBU459

[10] не может быть несколько номеров: https://en.wikipedia.org/wiki/Change_of_gauge_(aviation

[11] никогда не меняется: https://web.archive.org/web/20230328124705/https://community.southwest.com/t5/Blog/The-Science-behind-Flight-Numbers/ba-p/42760

[12] пилоты и командно‑диспетчерский пункт для идентификации рейса: https://www.eurocontrol.int/service/call-sign-similarity-service?ref=flightaware.engineering

[13] один: https://www.flightaware.com/live/flight/AAL2586/history/20250509/1935Z/TBPB/KCLT?ref=flightaware.engineering

[14] тот же: https://www.flightaware.com/live/flight/AAL2586/history/20250508/1935Z/TBPB/KCLT?ref=flightaware.engineering

[15] никогда не меняется: https://en.wikipedia.org/wiki/Atat%C3%BCrk_Airport?ref=flightaware.engineering#Closure

[16] только одним аэропортом: https://en.wikipedia.org/wiki/Hickam_Air_Force_Base?ref=flightaware.engineering

[17] Международная организация гражданской авиации: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%B0%D1%8D%D1%80%D0%BE%D0%BF%D0%BE%D1%80%D1%82%D0%B0_%D0%98%D0%9A%D0%90%D0%9E

[18] Международная ассоциация воздушного транспорта: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D0%B4%D1%83%D0%BD%D0%B0%D1%80%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F_%D0%B0%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D0%BE%D0%B7%D0%B4%D1%83%D1%88%D0%BD%D0%BE%D0%B3%D0%BE_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B0

[19] присваивает один: https://www.bts.gov/topics/airlines-and-airports/world-airport-codes?ref=flightaware.engineering

[20] каждому аэропорту: https://www.faa.gov/air_traffic/flight_info/aeronav/aero_data/loc_id_search/Encodes_Decodes/?ref=flightaware.engineering

[21] несколько кодов IATA: https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B7%D0%B5%D0%BB%D1%8C_%E2%80%94%D0%9C%D1%8E%D0%BB%D1%83%D0%B7%E2%80%94_%D0%A4%D1%80%D0%B0%D0%B9%D0%B1%D1%83%D1%80%D0%B3

[22] начинаются с буквы K: https://www.flightaware.com/live/airport/PANC?ref=flightaware.engineering

[23] оставшиеся три символа: https://en.wikipedia.org/wiki/McClellan%E2%80%93Palomar_Airport?ref=flightaware.engineering

[24] географический регион: https://www.flightaware.com/live/airport/NZIR?ref=flightaware.engineering

[25] аэропорт: https://en.wikipedia.org/wiki/List_of_IATA-indexed_railway_stations,_bus_stations_and_ferry_terminals?ref=flightaware.engineering

[26] на Земле: https://en.wikipedia.org/wiki/Jezero_(crater

[27] Каждая: https://en.wikipedia.org/wiki/SkyJet_Airlines?ref=flightaware.engineering

[28] обладает уникальным: https://en.wikipedia.org/wiki/Euroavia_Airlines?ref=flightaware.engineering

[29] IATA: https://en.wikipedia.org/wiki/Airline_codes?ref=flightaware.engineering#IATA_airline_designator

[30] Каждая: https://en.wikipedia.org/wiki/EasyJet_UK?ref=flightaware.engineering

[31] обладает: https://en.wikipedia.org/wiki/EasyJet_Europe?ref=flightaware.engineering

[32] одним: https://en.wikipedia.org/wiki/EasyJet_Switzerland?ref=flightaware.engineering

[33] можно точно определить: https://ru.wikipedia.org/wiki/%D0%90%D0%B2%D0%B8%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BB%D0%B8%D0%B7%D0%B8%D0%BD%D0%B3#%D0%92%D0%BB%D0%B0%D0%B6%D0%BD%D1%8B%D0%B9_%D0%BB%D0%B8%D0%B7%D0%B8%D0%BD%D0%B3

[34] только своим рейсам: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4-%D1%88%D0%B5%D1%80%D0%B8%D0%BD%D0%B3

[35] только рейсам: https://www.flyertalk.com/forum/air-france-frequence-plus/1325488-how-fly-mlh-bsl.html?ref=flightaware.engineering

[36] единственное и общеизвестное: https://en.wikipedia.org/wiki/Altitude?ref=flightaware.engineering#In_aviation

[37] значит он больше не изменится: https://www.flightaware.com/live/flight/AAL1372/history/20250516/1410Z/KMIA/KRIC?ref=flightaware.engineering

[38] точные: https://ru.wikipedia.org/wiki/DOP

[39] точны с какой‑то заявленной погрешностью: https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D1%83%D1%84%D0%B8%D0%BD%D0%B3#GPS/GNSS-%D1%81%D0%BF%D1%83%D1%84%D0%B8%D0%BD%D0%B3

[40] Источник: https://habr.com/ru/articles/920894/?utm_source=habrahabr&utm_medium=rss&utm_campaign=920894