Формат навигационных баз данных 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)
Поделитесь своим местоположением

      Переменные средЫ Windows - TEMP и TMP
      Переменные средЫ Windows - TEMP и TMP

      Переменные среды Windows - ударение на "Ы" во втором слове (смысл фразы заложен в родительном падеже и верном ударении: переменные чего? - среды!), в англоязычных версиях виндовс - environment variable) Переменные среды Windows используются для настройки операционных систем. Не каждому пользователю нужно разбираться с этими настройками и влезать в эти переменные, но есть пара переменных, о которых нужно...




      EFB - Electronic Flight Bag
      EFB - Electronic Flight Bag

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




      Каналы и частоты TACAN, VOR, LOCALIZER
      Каналы и частоты TACAN, VOR, LOCALIZER

      На всех российских самолетах и на иностранных гражданских воздушных судах по умолчанию нет оборудования TACAN. При заходе на посадку по схеме, например, VOR/TAC или еще хуже - просто TACAN от этого такана бортовое оборудование может получать только информацию по дальности (и то не повсем используемым каналам и частотам), курсового наведения не будет. TACAN (tactical air navigation system) -...




      Кодирование Grid MORA в БД Arinc-424
      Кодирование Grid MORA в БД Arinc-424

      The Grid MORA - (Grid Minimum Off Rate Altitude) - минимальная абсолютная высота вне маршрута (сетчатая). Имеет код раздела и подраздела - A и S соответственно при кодировании в БД ARINC-424. По сути, AS-записи содержат таблицу высот. Каждая запись (строка) содержит 30 блоков, а поля "Начальная широта" и "Начальная долгота" совместно определяют нижний левый угол для первого блока каждой записи.




      Как обновить навигационные БД программ JeppView 3 и Flight Deck 3
      Как обновить навигационные БД программ JeppView 3 и Flight Deck 3

      Есть две замечательные программы для пилотов/штурманов от фирмы Jeppesen - JeppView 3 и FlightDeck 3. Вот только Jeppesen несколько лет назад перестал их поддерживать. Вместо программы JeppView 3 сейчас можно приобрести и установить программу JeppView for Windows (в принципе, она почти как старая версия, ничуть не хуже, даже, наоборот, функционал стал более расширенным). А вместо старой доброй FlightDeck 3...




      Маразмы-Афоризмы УВАУ ГА
      Маразмы-Афоризмы УВАУ ГА

      Данное эксклюзивное "литературное" произведение было собрано, сверстано, напечатано в нескольких экземплярах в виде брошюры размером А5 и, конечно же, размещено на просторах Интернета выпускниками факультета УВД (Управление Воздушным Движением) 2003 года Ульяновского высшего авиационного училища гражданской авиации (УВАУ ГА). Курсанты группы Д11/51-98 в течение 5 лет не только смеялись над друг...




      JeppView против Аэропорт Оптима
      JeppView против Аэропорт Оптима

      Всем давно известно, что американская фирма Jeppesen является лидером в области аэронавигационных данных, будь то чисто навигационные данные (ARINC-424 и пр.), данные по препятствиям или различные авиационные компьютерные приложения. Другие поставщики аэронавигационных продуктов тоже стараются и создают свои варианты. Давайте сравним как-бы аналогичные продукты от Jeppesen и от ФГУП ЦАИ (бывшее ЦАИ ГА).



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