Pull to refresh

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

Level of difficultyEasy
Reading time6 min
Views8.1K
Original author: Ben Burwell

В 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.

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

Tags:
Hubs:
+27
Comments37

Articles