Формат навигационных баз данных ARINC 424 существует аж с 1975 года, за это время он довольно сильно эволюционировал в сторону наполнения новыми типами данных, но основной "скелет" этой базы данных, описанный в 424-ой спецификации, остался практически без изменений.

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424

База данных в формате ARINC 424 представляет собой текстовый файл, в котором построчно закодированы аэронавигационные данные: воздушные трассы, путевые точки, навигационные средства, аэродромы (КТА), взлетно-посадочные полосы (ВПП), процедуры выхода, подхода, захода на посадку и др.




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

Для информации: навигационная БД на весь мир состоит из 1 500 000 – 2 500 000 строк, в зависимости от поставщика данных и заказываемого объектового состава.

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424

 

Немного из истории спецификации ARINC 424:

  • 1973 год - на собрании очередного навигационного комитета было принято решение и заложен фундамент для создания спецификации для баз данных для навигационных систем.
  • 1975 год - документ "Спецификация ARINC 424" был впервые опубликован.
  • 1980 год - редакция спецификации 424-1.
  • 1982 год - редакция спецификации 424-3.
  • 1993 год - редакция спецификации 424-11.
  • 1995 год - редакция спецификации 424-13.
  • 1999 год - редакция спецификации 424-14.
  • 2000 год - редакция спецификации 424-15.
  • 2002 год - редакция спецификации 424-16 (август 2002).
  • 2004 год - редакция спецификации 424-17 (август 2004).
  • 2005 год - редакция спецификации 424-18 (ноябрь 2005).
  • 2008 год - редакция спецификации 424-19 (декабрь 2008).
  • 2011 год - редакция спецификации 424-20 (декабрь 2011).
  • 2016 год - редакция спецификации 424-21 (июль 2016).
  • 2018 год - редакция спецификации 424-22 (июль 2018).

Уже несколько лет подряд навигационный комитет планирует работу над кардинально новой версии спецификации - 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

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:

  • экспорт записей в реляционную базу данных SQL, Access (сложно, трудоемкий и длительный процесс подготовки, требующий специального ПО, настроек и др.);
  • использование специализированных программ, например эту или эту;
  • ручной поиск в текстовом редакторе Notepad, Notepad++ и др. (очень трудоемко, неудобно и не продуктивно);
  • использование Windows PowerShell.

Рассмотрим вариант с 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

 

Запуск PowerShell

Запустить Windows PowerShell можно, конечно, через кнопку Пуск -> Выполнить

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424

Но для простоты и удобства (чтобы не выполнять переход к папке с базой данных через консольные команды) лучше запустить PowerShell сразу в той директории, в которой находится исходная база данных, - выборку из которой и требуется сделать.

Для этого в проводнике Windows открыть нужную директорию и в адресной строке проводника просто написать PowerShell и нажать Enter.

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424

 

PowerShell запустится и отобразит сразу нужную директорию, а не папку текущего пользователя на диске С:

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424

 

 

Задача 1: Удалить из базы данных записи по всем объектам определенных географических зон:

Например, Европу (EUR) и Африку (AFR).

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

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424

Нажать Enter и дождаться окончания работы программы.

Если перед командой для создания выборки из базы данных добавить команду get-date; и такую же команду добавить в конце, то можно будет узнать точное время, затраченное программой PowerShell на обработку базы данных (дата и время начала и окончания работы скрипта отобразятся на экране):

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424

Как вам результат? Из текстового файла, содержащего более 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 строк (его использовать не обязательно, он только оптимизирует запрос).

foreachprocess {} – цикл перебора строк

$_ – переменная, содержащая текущую строку в цикле перебора 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;




 

Задача 2: Удалить из навигационной базы данных все записи кроме Северной и Южной Америк:

Текст команды для 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 (Южная часть Тихоокеанской зоны)).

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424

В итоговом файле должны остаться только аэронавигационные данные по регионам USA (США), CAN (Канада), LAM (Латинская Америка), SAM (Южная Америка) и записи GRID MORA на весь мир.

Обработка данных заняла 37 секунд.

 

 

Задача 3: Выбрать из навигационной базы данных все записи по аэродрому Самара Курумоч

Текст команды для PowerShell:

get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach {$_ -match "^S.{3}P UWWW"} | sc P_UWWW_1607.txt; get-date;
Расшифровка регулярного выражения POSIX:

^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);

.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);

P UWWW – следующий (пятый) символ – буква P, затем - пробел, затем подряд буквы - UWWW.

Обработка данных (1,6 млн записей в БД) заняла всего 2 секунды - результатом был файл с аэронавигационными данными по аэродрому Самара Курумоч, содержащий 379 строк.

Таким образом, меняя в запросе ИКАО-код (в этом примере - UWWW) аэродрома, можно выбрать все записи по требуемому аэродрому.

 

 

Задача 4: Выбрать из навигационной базы данных все записи процедур SID аэродрома Самара Курумоч

Текст команды для 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;
Расшифровка регулярного выражения POSIX:

^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);

.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);

P UWWW – следующий (пятый) символ – буква P, затем - пробел (шестой), затем подряд буквы - UWWW (7-10 столбцы);

.{2} - далее могут быть два любых символа подряд (11-12 столбцы);

D - далее должна быть буква «D» (13-ый столбец) - код подраздела.

Обработка данных (1,6 млн записей в БД) заняла также всего 2 секунды - результатом был файл с закодированными процедурами SID аэродрома Самара Курумоч (68 строк).

 

 

Задача 5: Выбрать из навигационной базы данных все записи процедур SID аэродрома Пекин (Beijing Capital) и сформировать список названий процедур SID (только уникальные, без повторов) вида «[ИКАО-код а/д]     [название процедуры]»

Текст команды для 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).

 

 

Задача 5: Получить список типов записей БД

Когда возникает вопрос, какие типы записей закодированы в базе данных и нужно получить их полный список.

Текст команды для 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".

 

 

Задача 6: Выбрать из навигационной базы данных все записи по аэродромам (PA-records)

Если необходимо узнать количество аэродромов в базе данных и получить из перечень.

Текст команды для PowerShell:

get-date; gc ARINC424-db_1607.txt -readcount 500 | foreach {$_ -match "^S.{3}P .{6}A"} | sc PA_1607.txt; get-date;

Расшифровка регулярного выражения POSIX:

^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);

.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);

P – следующий (пятый) символ – буква P;

.{6} - далее могут быть шесть любых символов подряд (6-12 столбцы);

A - далее должна быть буква «A» (13-ый столбец) - код подраздела.

Обработка данных (1,6 млн записей в БД) заняла 6 секунд - результатом был файл со списком аэродромов (3 695 строк = 3 695 записей КТА аэродромов).

 

 

Задача 7: Выбрать из навигационной базы данных все записи по ВПП аэродромов (PG-records)

Если необходимо получить выборку всех ВПП (взлетно-посадочных полос) аэродромов из базы данных 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;

Расшифровка регулярного выражения POSIX:

^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);

.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);

P – следующий (пятый) символ – буква P;

.{6} - далее могут быть шесть любых символов подряд (6-12 столбцы);

G - далее должна быть буква «G» (13-ый столбец) - код подраздела.

Обработка данных (1,6 млн записей в БД) заняла 7 секунд - результатом был файл со списком ВПП аэродромов (8 874 строк = 8 874 торца ВПП).

 

 

Задача 8: Выбрать из навигационной базы данных все записи маршрутных ППМ (EA-records), начинающиеся и заканчивающиеся на букву "A"

Если необходимо узнать количество аэродромов в базе данных и получить из перечень.

Текст команды для 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;

Расшифровка регулярного выражения POSIX:

^S – первым символом в строке должна быть буква «S» (^ – обозначение начала строки);

.{3} – далее могут быть три любых символа подряд (второй, третий и четвертый столбцы);

EA – следующие символы (пятый и шестой) – буквы подряд - EA;

.{7} - далее могут быть семь любых символов подряд (7-13 столбцы);

A - далее должна быть буква «A» (14-ый столбец) - первая буква обозначения ППМ;

... - три точки = три любых символа;

A - далее должна быть буква «A» (18-ый столбец) - последняя (пятая) буква обозначения ППМ.

Обработка данных (1,6 млн записей в БД) заняла 6 секунд - результатом был файл со списком ППМ, которые начинаются и заканчиваются на букву A (546 строк = 546 ППМ).

Использование Power Shell для работы с навигационными базами данных в формате ARINC 424 Продолжение следует, новые варианты запросов к БД ARINC 424 с помощью Windows PowerShell будут добавлены позже.

Комментарии (2)

This comment was minimized by the moderator on the site

Спасибо за статью! Долго мучились с конвертацией и импортом в Access.

This comment was minimized by the moderator on the site

Хорошие примеры регулярных выражений, но маловато.
Еще будут новые?

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

  1. Опубликовать комментарий как Гость.
0 Значки
Вложения (0 / 3)
Поделитесь своим местоположением

      Эволюция Jeppesen - улучшенные схемы процедур SID/STAR
      Эволюция Jeppesen - улучшенные схемы процедур SID/STAR

      Основываясь на обратной связи от пилотов, компания Jeppesen приняла решение усовершенствовать свои IFR-схемы процедур SID и STAR. Эти усовершенствования нацелены на повышение ситуационной осведомленности, сократить продолжительность полета по приборам без наблюдения за внекабинной обстановкой (reduce heads-down time = уменьшение времени отвлечения внимания пилотов от пилотажных приборов) и,...




      Сравнение компьютерной и человеческой памяти
      Сравнение компьютерной и человеческой памяти

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




      Jeppesen Mobile FliteDeck версия  2.0
      Jeppesen Mobile FliteDeck версия 2.0

      Сегодня ночью (по Московскому времени, когда в американском Денвере в это время был солнечный день) фирма Jeppesen представила на всеобщее обозрение видеоролик с анонсом новой версии программы Jeppesen Mobile FliteDeck - v2. К сожалению пока не раскрывается дата, когда можно будет вживую протестировать эту программу. Действующая версия программы Jeppesen Mobile FliteDeck, существующая с прошлого года на данный...




      Многофункциональный авиационный калькулятор
      Многофункциональный авиационный калькулятор

      Некоторым авиационным специалистам (пилотам, штурманам), а также курсантам авиационных училищ в определенный момент времени может понадобиться инструмент для выполнения некоторых инженерных расчетов. В качестве такого инструмента может выступать навигационная линейка НЛ-10, или компьютерная программа.




      Henry Emery & Andy Roberts - Aviation English
      Henry Emery & Andy Roberts - Aviation English

      Aviation English by Henry Emery & Andy Roberts - новый курс английского языка, предназначенный для подготовки летных специалистов (пилотов, борт-радистов, штурманов и авиадиспетчеров) к 4-му уровню владения английским языком по шкале ИКАО. Материал Aviation English by Henry Emery & Andy Roberts отвечает всем требованиям, предъявляемым к языковой подготовке авиаперсонала (DOC 9825 ИКАО – «ICAO...




      Как убрать рекламу в uTorrent
      Как убрать рекламу в uTorrent

      Начиная с версии какой-то 3.xxxx в программе uTorrent появилась реклама. Причем, реклама довольно агрессивная - даже в те минуты, а иногда - секунды, когда программа uTorrent не свернута в трей, ее реклама успевает надоесть. Хорошо, что разработчики приложения uTorrent дали возможность пользователям программы через настройки отключить рекламу.




      URL-encoding & ASCII Characters
      URL-encoding & ASCII Characters

      Современные web-технологии поддерживают не только якобы сложные русские тексты (по сравнению с попсовой латиницей), но и всякие китайские и японские иероглифы и другие непонятные загогулины. Но раньше такого счастья не было, и web-разработчикам приходилось использовать специальные комбинации знаков для кодирования специальных символов, таких как вопросительный знак, восклицательный знак,...



Яндекс.Метрика