Формат навигационных баз данных ARINC 424 существует аж с 1975 года, за это время он довольно сильно эволюционировал в сторону наполнения новыми типами данных, но основной "скелет" этой базы данных, описанный в 424-ой спецификации, остался практически без изменений.
База данных в формате ARINC 424 представляет собой текстовый файл, в котором построчно закодированы аэронавигационные данные: воздушные трассы, путевые точки, навигационные средства, аэродромы (КТА), взлетно-посадочные полосы (ВПП), процедуры выхода, подхода, захода на посадку и др.
В результате получается очень большой по количеству строк файл, в котором найти нужную запись для проверки, анализа или использования для каких-либо целей весьма затруднительно, особенно, если база данных содержит информацию по всему миру, а не только по ограниченному району (региону).
Для информации: навигационная БД на весь мир состоит из 1 500 000 – 2 500 000 строк, в зависимости от поставщика данных и заказываемого объектового состава.
Немного из истории спецификации ARINC 424:
Уже несколько лет подряд навигационный комитет планирует работу над кардинально новой версии спецификации - ARINC 424A, использующей стандарт AIXM 5.1, но пока данная работа не завершена.
БД в формате ARINC 424 включает в себя различные типы данных (применительно к 19 версии спецификации):
Код раздела |
Название раздела |
Код подраздела |
Название подраздела |
A |
S |
GRID MORA |
|
D |
Navaid |
Blank B T |
VHF Navaid NDB Navaid TACAN Duplicates |
E |
Enroute |
A M P R S T U V |
Waypoints Airway Markers Holding Patterns Airways and Routes Special Activity Areas Prefered Routes Airway Restrictions Communications |
H |
Heliport |
A С D E F K S P V |
Pads Terminal Waypoints SIDs STARs Approach procedures TAA MSA SBAS Path Point Communications |
P |
Airport |
A B C D E F G I K L M N P Q R S T V |
Reference Points Gates Terminal Waypoints SIDs STARs Approach procedures Runways Localizer/Glide Slope(ILS) TAA MLS Localizer Markers Terminal NDBs SBAS Path Point GBAS Path Point Flight Planning ARR/DEP MSA GLS Station Communications |
R |
Company Routes |
Blank A H |
Company Routes Alternate Records Helicopter Operation Routes |
T |
Tables |
C G N V |
Cruising Tables Geographical Reference RNAV Name Table Communication Type |
U |
Airspace |
C F R |
Controlled Airspace FIR/UIR Restricted Airspace |
При выполнении задач проверки навигационных баз данных возможны такие ситуации, когда нужно найти среди этого массива строк необходимые записи (как иголку в стоге сена).
Существует несколько способов поиска нужной информации в базе данных ARINC 424:
Рассмотрим вариант с PowerShell более подробно.
Примечание: для составления команд необходимо знать основы и использовать документ Спецификация ARINC 424 «Базы данных для навигационных систем» соответствующей версии - в зависимости от версии используемого файла базы данных, а также знать регулярные выражения POSIX.
Windows PowerShell — расширяемое средство автоматизации от Microsoft с открытым исходным кодом[1], состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Впервые публично язык был продемонстрирован на Профессиональной конференции разработчиков (англ. Professional Developers Conference, PDC) в сентябре 2003 года под кодовым названием Monad.
Windows PowerShell 2.0 был выпущен в составе Windows 7, Windows 8 и Windows Server 2008 R2, а также Windows Server 2012 R2, как неотъемлемый компонент системы. Кроме того, вторая версия доступна и для других систем, таких, как Windows XP SP3, Windows Server 2003 SP2, Windows Vista SP1, Windows Vista SP2, Windows Server 2008[2] и Windows Server 2012.
Windows PowerShell построен на базе Microsoft .NET Framework и интегрирован с ним. Дополнительно PowerShell предоставляет удобный доступ к COM, WMI и ADSI, равно как и позволяет выполнять обычные команды командной строки, чтобы создать единое окружение, в котором администраторы смогли бы выполнять различные задачи на локальных и удалённых системах.
from wikipedia
Запустить Windows PowerShell можно, конечно, через кнопку Пуск -> Выполнить
Но для простоты и удобства (чтобы не выполнять переход к папке с базой данных через консольные команды) лучше запустить PowerShell сразу в той директории, в которой находится исходная база данных, - выборку из которой и требуется сделать.
Для этого в проводнике Windows открыть нужную директорию и в адресной строке проводника просто написать PowerShell и нажать Enter.
PowerShell запустится и отобразит сразу нужную директорию, а не папку текущего пользователя на диске С:
Вставить текст команды из буфера обмена (просто кликнуть правой кнопкой мыши в окне PowerShell, и текст вставится) или написать полностью вручную:
Нажать Enter и дождаться окончания работы программы.
Если перед командой для создания выборки из базы данных добавить команду get-date; и такую же команду добавить в конце, то можно будет узнать точное время, затраченное программой PowerShell на обработку базы данных (дата и время начала и окончания работы скрипта отобразятся на экране):
Как вам результат? Из текстового файла, содержащего более 1,6 миллиона строк, PowerShell выбрал и сохранил в файл только необходимые данные и потратил на это всего лишь 47 секунд!
Текст команды для PowerShell:
get-content ARINC424-db_1607.txt -readcount 500 | foreach -process {$_ -match "^.((?!EUR|AFR).)*$"} | set-content ARINC424_WITHOUT_EUR_AFR.txt;
get-content – команда получения содержимого файла. Можно использовать сокращение – gc.
ARINC424_sample.txt – название исходного обрабатываемого файла (название должно содержать только буквы, цифры, тире, знак подчеркивания, точку, запятую).
-readcount 500 – параметр команды get-content, читать данные блоками по 500 строк (его использовать не обязательно, он только оптимизирует запрос).
foreach –process {} – цикл перебора строк
$_ – переменная, содержащая текущую строку в цикле перебора FOREACH.
-match – оператор сравнения с регулярным выражением.
"^.((?!EUR|AFR).)*$" – регулярное выражение POSIX, можно сказать - «маска» поиска.
Подробнее по частям:
^. – первым символом в строке может быть любой символ (^ – обозначение начала строки). В принципе, можно было записать и так: ^S потому что обычно первым символом в каждой строке базы данных ARINC 424 стоит буква S, что означает, что это стандартная запись (теоретически может первым символом быть буква Т - в случае, если в БД имеются пользовательские (tailored) данные авиакомпании, например, маршруты авиакомпании - см. таблицу выше);
EUR | AFR - регионы мира, записи которых будут исключены из базы данных (код региона, состоящий из трех букв всегда располагается во 2-4 столбцах). Все остальные регионы должны остаться;
set-content - команда сохранить данные в файл (можно заменить на сокращенный вариант - sc);
ARINC424_WITHOUT_EUR_AFR.txt - название файла для сохранения результата.
Текст команды для PowerShell с отображением даты и времени на экране:
get-date; get-content ARINC424-db_1607.txt -readcount 500 | foreach -process {$_ -match "^.((?!EUR|AFR).)*$"} | set-content ARINC424_WITHOUT_EUR_AFR.txt; get-date;
Текст команды для PowerShell с записью даты и времени в результирующий файл (будут записаны в начале и в конце):
get-content ARINC424-db_1607.txt -readcount 500 | foreach -begin {get-date} -process {$_ -match "^.((?!EUR|AFR).)*$"} | -end {get-date} set-content ARINC424_WITHOUT_EUR_AFR.txt;
Текст команды для PowerShell:
get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach -process {$_ -match "^.((?!EUR|MES|EEU|AFR|PAC|SPA).)*$"} | sc ARINC424_AMERICAS_ONLY_1607.txt; get-date;
Расшифровка команды аналогична предыдущему примеру, только в регулярном выражении POSIX добавлены дополнительные регионы мира (MES - Middle East (Ближний Восток), EEU - East Europe (Восточная Европа), PAC - Pacific (Тихоокеанская зона) и SPA - South Pacific (Южная часть Тихоокеанской зоны)).
В итоговом файле должны остаться только аэронавигационные данные по регионам USA (США), CAN (Канада), LAM (Латинская Америка), SAM (Южная Америка) и записи GRID MORA на весь мир.
Обработка данных заняла 37 секунд.
Текст команды для PowerShell:
get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach {$_ -match "^S.{3}P UWWW"} | sc P_UWWW_1607.txt; get-date;
^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);
.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);
P UWWW – следующий (пятый) символ – буква P, затем - пробел, затем подряд буквы - UWWW.
Обработка данных (1,6 млн записей в БД) заняла всего 2 секунды - результатом был файл с аэронавигационными данными по аэродрому Самара Курумоч, содержащий 379 строк.
Таким образом, меняя в запросе ИКАО-код (в этом примере - UWWW) аэродрома, можно выбрать все записи по требуемому аэродрому.
Текст команды для PowerShell:
get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach {$_ -match "^S.{3}P UWWW.{2}D"} | sc PD_UWWW_1607.txt; get-date;
^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);
.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);
P UWWW – следующий (пятый) символ – буква P, затем - пробел (шестой), затем подряд буквы - UWWW (7-10 столбцы);
.{2} - далее могут быть два любых символа подряд (11-12 столбцы);
D - далее должна быть буква «D» (13-ый столбец) - код подраздела.
Обработка данных (1,6 млн записей в БД) заняла также всего 2 секунды - результатом был файл с закодированными процедурами SID аэродрома Самара Курумоч (68 строк).
Текст команды для PowerShell:
get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach {$_ -match "^S.{3}P ZBAA.{2}D" -replace "(^.{6})(.{4})(.{3})(.{6})(.{113})", ('$2'+"`t"+'$4') -replace " ", ""} | sort | gu > ZBAA_SIDs_LIST.txt; get-date;
Результат был получен также за 2 секунды, оказалось, что у аэродрома Пекин 107 процедур SID (на момент действия БД цикла AIRAC 1607).
Когда возникает вопрос, какие типы записей закодированы в базе данных и нужно получить их полный список.
Текст команды для PowerShell:
get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach {$_ -replace "(^.{4})(.{2})(.{6})(.{1})(.{119})", ('$2'+'$4')} | sort | gu > All_Records.txt; get-date;
Выбирает уникальные записи по 5, 6 и 13 столбцам.
Код раздела, к которому относится запись, содержится всегда в 5-ом столбце, код подраздела указывается либо в 6-ом (для маршрутных записей), либо в 13-ом (для записей аэродромных объектов). Таким образом каждая строка разбивается на 5 частей:
1-4 столбцы (не нужны для обработки);
5-6 столбцы (используем);
7-12 столбцы (не нужны для обработки);
13 столбец (используем);
12-132 столбцы (не нужны для обработки).
Затем значения 5, 6 и 13 столбцов складываются в одну строку.
gu - сокращенный вариант командлета get-unique - выбирает только уникальные записи. По умолчанию сортирует результат по алфавиту.
Из-за специфики стандарта БД Arinc 424 результат получается не идеальным, и полученную выборку нужно "слегка обработать напильником" - удалить несколько лишних строк:
- 2 строки заголовка базы данных;
- повторы по коду раздела "U": UC, UF, UR (т.к. у таких записей в 13-ом столбце стоит не пробел, а возможна цифра или буква);
- повторы записей типа "EV".
Если необходимо узнать количество аэродромов в базе данных и получить из перечень.
Текст команды для PowerShell:
get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach {$_ -match "^S.{3}P .{6}A"} | sc PA_1607.txt; get-date;
^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);
.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);
P – следующий (пятый) символ – буква P;
.{6} - далее могут быть шесть любых символов подряд (6-12 столбцы);
A - далее должна быть буква «A» (13-ый столбец) - код подраздела.
Обработка данных (1,6 млн записей в БД) заняла 6 секунд - результатом был файл со списком аэродромов (3 695 строк = 3 695 записей КТА аэродромов).
Если необходимо получить выборку всех ВПП (взлетно-посадочных полос) аэродромов из базы данных ARINC 424.
Текст команды для PowerShell:
get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach {$_ -match "^S.{3}P .{6}G"} | sc PG_1607.txt; get-date;
^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);
.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);
P – следующий (пятый) символ – буква P;
.{6} - далее могут быть шесть любых символов подряд (6-12 столбцы);
G - далее должна быть буква «G» (13-ый столбец) - код подраздела.
Обработка данных (1,6 млн записей в БД) заняла 7 секунд - результатом был файл со списком ВПП аэродромов (8 874 строк = 8 874 торца ВПП).
Если необходимо узнать количество аэродромов в базе данных и получить из перечень.
Текст команды для PowerShell:
get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach {$_ -match "^S.{3}EA.{7}A...A"} | sc EA_A-A_1607.txt; get-date;
^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);
.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);
EA – следующие символы (пятый и шестой) – буквы подряд - EA;
.{7} - далее могут быть семь любых символов подряд (7-13 столбцы);
A - далее должна быть буква «A» (14-ый столбец) - первая буква обозначения ППМ;
... - три точки = три любых символа;
A - далее должна быть буква «A» (18-ый столбец) - последняя (пятая) буква обозначения ППМ.
Обработка данных (1,6 млн записей в БД) заняла 6 секунд - результатом был файл со списком ППМ, которые начинаются и заканчиваются на букву A (546 строк = 546 ППМ).
Продолжение следует, новые варианты запросов к БД ARINC 424 с помощью Windows PowerShell будут добавлены позже.
Литературный проект Этногенез заявил о себе в 2009 году первым произведением "Маруся", а дальше понеслось... Создатели проекта очень грамотно объединили под эгидой литературы реальные исторические события, фантастику, фэнтези и кучу чего-то еще. Проект очень быстро стал популярным, в 2011 году стал частично коммерческим, но, тем не менее, авторы не запрещают размещать копии текстов и аудиотреков на сторонних сайтах.
Фирма Jeppesen анонсировала выход в ближайшее время новой версии своего флагманского приложения для EFB на базе iPad - FD PRO v.2.5. PRO - подразумевает "Professional", таким образом Jeppesen старается угодить именно авиационным профессионалам, каждый раз подтверждая статус лидера в аэронавигационных услугах и продуктах. В этот раз разработчики Jeppesen учли максимальное количество замечаний и предложений...
НОТАМы (NOTAM = NOTice for Air Men) - это существенные изменения в аэронавигационной обстановке. Международные НОТАМы распространяются из мест их издания по всему миру. Некоторые страны издают также региональные (внутренние) НОТАМы, которые доступны обычно только для эксплуатантов своей страны. НОТАМы дополняют сборники аэронавигационной информации и обеспечивают актуализацию аэронавигационной информации через...
Программа Jeppesen Text Viewer - это электронная замена текстовой и графической информации, содержащейся в передней (без графики) части сборников Jeppesen. Jeppesen Text Viewer предлагается как бесплатная опция для клиентов, пользующихся сборниками Jeppesen - это выгодно для клиентов, пользующихся бумажными носителями аэронавигационной информации.
The Grid MORA - (Grid Minimum Off Rate Altitude) - минимальная абсолютная высота вне маршрута (сетчатая). Имеет код раздела и подраздела - A и S соответственно при кодировании в БД ARINC-424. По сути, AS-записи содержат таблицу высот. Каждая запись (строка) содержит 30 блоков, а поля "Начальная широта" и "Начальная долгота" совместно определяют нижний левый угол для первого блока каждой записи.
Для того, чтобы пользователи приложения не тыкали своими шаловливыми ручками куда попало не могли вводить заведомо не корректный текст, можно реализовать ряд ограничений для них. На сайтах обычно это реализуется с помощью JS-скриптов, которые, теоретически, могут быть оключены пользователем на глобальном уровне, и все ограничения, реализованные с помощью JS перестанут действовать. В...
Изучение фразеологии радиообмена на английском языке (если по-простому - авиационный английский) начинается с азбуки, точнее с авиационного алфавита. Без знания его как "Отче наш" нет смысла заниматься дальше и становиться профессиональным пилотом с допуском к выполнению международных полетов или диспетчером, допущенным к обслуживанию воздушного движения в международном аэропорту.