В FlightAware ПО должно изящно обрабатывать все виды странных и удивительных ситуаций, которые возникают в мире авиации. Пока мы, программисты, надеемся, что все данные, связанные с этим миром, хорошо структурированы и чисты, в нем властвует хаос.
Во время проектирования типов данных и схем для мира авиации можно сделать много предположений, которые на самом деле оказываются неверными. Точно так же, как когда‑то Патрик Маккензи написал «Заблуждения программистов об именах», ниже я перечислил некоторые заблуждения об авиации, в которые каждый может легко впасть. Хотя многие из них возникают вследствие неправильного понимания этой области, некоторые всё же смогли «покусать» наших клиентов, а другие создавали нам проблемы на протяжении многих лет.
Все перечисленные ниже заблуждения отлично иллюстрируют ситуации, которые Hyperfeed (наша система отслеживания перелетов) должна уметь обрабатывать, чтобы наш сайт, приложения и API получали единообразную и структурированную информацию.
Авиаперелеты
Самолеты вылетают из гейта [выхода на посадку. Здесь и далее — прим. переводчика]
Самолеты, которые вылетают из гейта, покидают его ровно один раз. [Cм. на taxi time].
Рейсы отправляются в течение нескольких часов после планируемого времени вылета.
Рейсы отправляются в течение дня после назначенного времени в расписании.
У рейсов есть расписание.
Перелеты начинаются и завершаются в аэропортах.
Воздушные судна (за исключением вертолетов) вылетают и приземляются в аэропортах.
Перелет длится максимум 12 часов или около того.
Окей, длится максимум несколько дней?
Перелеты идентифицируются номером, состоящим из кода авиакомпании и набора цифр, например, UAL1234.
Перелеты могут быть идентифицированы либо номером рейса, либо номером регистрации судна, например, N1234, B6459 или FHUVL.
Идентификатор рейса (например, B6459) — это однозначно лишь одно из: либо номер регистрации воздушного судна (B-6459), либо номер рейса (B6 459), либо что‑то еще.
У одного рейса не может быть несколько номеров.
У рейсов с несколькими номерами должен быть какой‑то «главный» номер.
Номер конкретного рейса никогда не меняется.
Номер на посадочном талоне — это то же самое, что используют пилоты и командно‑диспетчерский пункт для идентификации рейса.
Номера рейсов одной авиакомпании не могут содержать код, принадлежащий какой‑то другой, не относящейся к ней авиакомпании.
В один и тот же день не может быть рейсов с одним и тем же номером.
Так, ну уж точно не должно совершаться одновременно двух рейсов с одним номером?
Ладно, хорошо... Два отдельных рейса от одной и той же крупной авиакомпании, которые отправляются в пределах нескольких минут, не могут иметь один и тот же номер? Верно?..
Аэропорты
Местоположение аэропортов никогда не меняется. [Аэропорт Ататюрк (Стамбул) раньше имел IST в качестве кода IATA. После открытия аэропорта Стамбул (Стамбул), старый аэропорт получил код ISL, а новый IST.]
Названия терминалов и гейтов должны следовать какой‑то единообразной схеме.
Взлетно‑посадочная полоса используется только одним аэропортом.
У аэропортов должно быть два идентификатора: четырехбуквенный от ICAO и трёхбуквенный от IATA. [ICAO — Международная организация гражданской авиации, учреждение ООН, устанавливает нормы авиации в мире; IATA — Международная ассоциация воздушного транспорта, создана для сотрудничества авиакомпаний. Чаще всего вы видите именно коды IATA, например, DME для аэропорта Домодедово.]
Аэропорты всегда имеют ICAO, IATA и какой‑то внутренний код. [В России есть отдельный внутренний код, например, у Домодедово — ДМД.]
В США Министерство Транспорта всегда присваивает один каноничный код к каждому аэропорту, над которым у него есть юрисдикция.
Ни у одного аэропорта не может быть несколько кодов IATA.
В США коды ICAO всех аэропортов начинаются с буквы K.
Для тех аэропортов США, у которых ICAO коды начинаются с буквы K, оставшиеся три символа совпадают с его кодом IATA.
По коду ICAO можно определить географический регион аэропорта.
Все, что имеет код IATA — аэропорт. [IATA индексирует не только аэропорты или аэродромы, но железнодорожные станции и другие не относящиеся к авиации объекты.]
Все, что имеет код ICAO находится на Земле. [У кратера Езеро на Марсе есть собственный код ICAO — JZRO].
У аэропортов есть хоть какой‑то хорошо известный идентификатор.
Авиакомпании
Каждая авиакомпания обладает уникальным кодом IATA.
Каждая авиакомпания обладает только одним кодом IATA или ICAO.
По внешнему виду воздушного судна можно точно определить, какая авиакомпания производит рейс.
Авиакомпании присваивают номера определенным маршрутам.
Авиакомпании присваивают номера только своим рейсам.
Авиакомпании присваивают номера только рейсам. [Очень интересный случай: аэропорты MLH и BSL являются фактически одним аэропортом, но находятся на территории двух разных стран. Так как на этих территориях разное ценообразование и правовые нормы, то в зависимости от того, в какой из этих «аэропортов» прилетит самолет, может меняться цена на рейс. Но при этом юридический перенос из одного аэропорта в другой нужно было объяснять интересным способом — перелетом в одну минуту.]
Навигация
Путевые (навигационные) точки имеют уникальные названия. [Путевые точки определяют точку в пространстве, с их помощью строятся воздушные маршруты.]
Понятие «высота» — единственное и общеизвестное. [Существует 6 видов высоты (если верить статье) в авиации: высота по прибору, абсолютная высота, истинная высота, высота, барометрическая высота и высота по плотности.]
Поставщики аэронавигационного обсуживания (ПАНО; Air Navigation Service Provider) предоставляют корректную информацию о перелете. [ПАНО предоставляют услуги по контролю воздушного трафика, погоды, навигации и т. д.]
Хорошо, их информация достаточно корректная, они хотя бы не сообщат, что самолет вылетел, если он на самом деле не покидал аэропорт.
Если полетный план отменен, то рейс точно не состоится.
Хотя бы информация с их радаров точно определяет каждое судно.
Положение судна, которое попало в зону видимости двух радаров, определяется ими согласованно и одинаково.
Если нам приходит информация, что самолет вылетел в определенный аэропорт назначения, значит изначально существовало намерение туда прилететь.
Если самолет изменил аэродром назначения, значит он больше не изменится.
Транспондеры и ADS-B
ADS‑B сообщения приходят только от воздушного судна. [ADS‑B — система, передающая информацию о самолете в реальном времени — положение, скорость и др. Сообщения от этой системы общедоступны.]
ADS‑B сообщения приходят только от воздушного судна и наземного транспорта аэропорта.
ADS‑B сообщения приходят от транспорта какого‑то определенного типа.
GPS‑координаты в этих сообщениях точные.
GPS‑координаты в этих сообщениях точны с какой‑то заявленной погрешностью.
Идентификатор рейса в этих сообщениях — корректный.
Транспондеры всегда настроены передавать корректную информацию о типе воздушного судна (самолет, вертолет, беспилотник и т. д.)
В сообщениях 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.
Ben Burwell
Ben is a Senior Software Engineer on the Flight Tracking team.
Примечание от переводчика: я постарался найти переводы соответствующих статей и тредов, если же их не было, я оставлял оригинальную ссылку и небольшое пояснение.
Комментарии (17)
DrGluck07
23.06.2025 08:36Ещё можно добавить по поводу скоростей: IAS, TAS, GS.
Вообще это всё интересная и неожиданная тема. Пока не начинаешь этим заниматься, подсознательно думаешь, что самолёт точно знает где он находится, на какой высоте и с какой скоростью летит. Но начинаешь разбираться, и оказывается, что и высота это очень относительная величина, причём важно относительно чего. И внезапно скорость на PFD это вообще условная величина, которая зависит от высоты. И положение самолёта тоже не всегда точное, а иногда определяется относительно VOR и DME (и это если повезёт). Если не повезёт, то крутись вокруг ненаправленного маяка с секундомером и компасом.
aborigen81
23.06.2025 08:36Почти OFFTOP.
Оказывается до сих пор и жизненно и актуально:
"Когда бог наводил порядок на земле - авиация была на вылете, а когда он принялся за небо - все приземлились".jaelynn23
23.06.2025 08:36ну так на первом соборе цезарь объяснил что теперь богом мужик на палке и это есть [современная] цивилизация называяемая её представителями иудейско-христианский мир но называемый богом потом скажет что это не так за что его опять будут пытаться убить те же авиаторы
almaz1c
23.06.2025 08:36Самолеты вылетают из гейта [выхода на посадку. Здесь и далее — прим. переводчика]
Для воздушного судна гейт - это стоянка, на которой ВС находится при погрузке.
Гейт всегда идет первым участком в плане полета.
Вторым участком в плане полета всегда следует аэродром вылета.
Третьим участком в плане полета всегда следует ВПП вылета.
Четвертым участком в плане полета всегда следует стандартный маршрут вылета (SID, Standard Instrument Departure).
Перелеты начинаются и завершаются в аэропортах
Причем начать и завершиться полет может в одном и том же аэропорту. Помимо аэропорта посадки в плане полета еще бывает запасной аэропорт посадки.
Существует 6 видов высоты
Скорее 3:
QNH - абсолютная высота (Altitude)
QFE - относительная высота (Height)
QNE - эшелон полета (Flight Level)
Ключевая идея заключается в том, что точное значение высоты важно при взлете и посадке. Непосредственно в полете точность до метра не нужна, достаточно удерживаться в своем эшелоне. Эшелон - диапазон высот величиной от 300 метров, в котором воздушному судну дозволено находиться на основном участке полета.
Рисунок из учебника "Аэронавигация в международных полетах" (А В Липин).
Mingun
23.06.2025 08:36Большинство предложенного (в отличие от времени) на заблуждения никак не тянут, а скорее на пофигистки написанное приложение с посылом "и так сойдет". Оснований так "заблуждаться" никаких нет
onets
23.06.2025 08:36Ну да, это вам не стартапы на коленке кодить. Пожалуй любая зрелая предметная область обладает некоторым хаосом.
CitizenOfDreams
В авиации можно твердо рассчитывать только на одно правило: каждый взлетевший самолет когда-нибудь возвращается на поверхность Земли.
Mi3y
... всегда возвращается на поверхность Земли.
TerekhinSergey
это утверждение справедливо ровно до тех пор, пока никто космические аппараты не включил в ту же классификацию...
DMGarikk
надо тогда лучше писать "на поверхность массивного объекта"
InTostor
А если аппарат - спутник, или там вояджер?
K0styan
Лучше тогда уж: "..поверхность или горизонт событий массивного объекта"
K0styan
Но не факт, что единым целым
Hemml
Кроме тех, кто садится (или падает) на воду. Или тех, кто сгорает (взрывается) в полете. А как на счет случая, когда один самолет несет другой летательный аппарат, который отделяется от него в полете? Отдельно рассмотрим случаи, когда после этого садятся оба (на землю? на воду?), садится только один, ни один не садится.
marinazmieva
вода это тоже поверхность земли же