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

Комментарии   

#1 MayDay 01.02.2018 12:06
Спасибо за статью! Долго мучились с конвертацией и импортом в Access.
#2 Loans Bad 01.02.2018 20:54
Хорошие примеры регулярных выражений, но маловато.
Еще будут новые?

Добавить комментарий

Вы можете авторизоваться с помощью социальных сетей:
     

Или заполнить форму:

Защитный код
Обновить


      Изменение БД для GPS Garmin с цикла AIRAC 1708
      Изменение БД для GPS Garmin с цикла AIRAC 1708

      Количество аэронавигационной информации со временем неизбежно увеличивается, и носители навигационных данных для старых спутниковых навигационных систем уже не могут вместить в себя всю информацию. Потому что разработчики этих систем несколько десятилетий назад даже не могли себе представить, что использование карты памяти размером в 2 или 3 мегабайта может оказаться не достаточно. В результате пользователи...




      Открытие файлов Excel в отдельных окнах
      Открытие файлов Excel в отдельных окнах

      Многие пользователи офисного пакета MS Office наверняка замечали неудобную "фишку" программы Excel - невозможность открыть разные файлы в различных окнах программы. Например, хотите вы открыть один xls-файл (или xlsx-файл) на одном мониторе, а второй xls-файл на другом, но у вас ничего не получится! Программа MS Excel не даст вам такой возможности, т.к. по умолчанию файлы Excel открываются в MS...




      Ликбез по сетевым технологиям
      Ликбез по сетевым технологиям

      Автор неизвестен,текст распространяется по сети, к сожалению, без указания авторства... DHCP Вы проснулись после дикой пьянки. Первые ваши слова «кто я?» и «где я?». Сосед, который не запивал водку пивом, вам сообщает все ваши параметры: кто вы и где. Этот сосед выступает в роли DHCP-сервера. Учтите, что в сети могут быть так называемые «ложные DHCP-сервера», например жена – на ваш вопрос «кто я?» она выдаст неверную информацию:...




      Внедрение системы ADS-B в Австралии
      Внедрение системы ADS-B в Австралии

      Австралийские авиакомпании считаются самыми безопасными в мире благодаря авиакомпании Qantas Airways, у которой с 1973 года не зафиксировано ни одного случая, повлекшего человеческие жертвы! Привыкнув быть лидерами во всем, австралийцы анонсировали новые изменения в правилах полетов в воздушном пространстве Австралии. С 12 декабря 2013 года Австралия вводит новое требования: все воздушные суда, в...




      Сертификат безопасности аккумулятора Apple iPad
      Сертификат безопасности аккумулятора Apple iPad

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




      Технический обзор спутниковой системы Aireon ADS-B
      Технический обзор спутниковой системы Aireon ADS-B

      Система вещательного автоматического зависимого наблюдения (ADS-B; русский термин - АЗН-В) космического базирования компании Aireon (система Aireon) будет предоставлять 100% глобальную зону наблюдения для всех участников авиационной деятельности. Система будет принимать и обрабатывать сигналы ADS-B, излучаемые на частоте 1090 МГц воздушными судами, оборудованными транспондерами ADS-B, без...




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

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



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