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

      Короткая история про закрылки
      Короткая история про закрылки

      ... Разбиваются обычно долб#&бы. Вот сидят десять экипажей, водку пьют. Напились, и вот вдруг один начинает: - Да вот что вы, гражданские, вы летать не умеете. Вот мы военные - круто летаем, закрылки перед взлетом не выпускаем!




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

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




      Циклы обновления навигационных БД Garmin на 2016-2017
      Циклы обновления навигационных БД Garmin на 2016-2017

      Компания Garmin вполне заслуженно и, поэтому, весьма уверенно уже много лет сохраняет статус лидера в области авиационных навигаторов (как портативных, так и стационарных) для авиации, кораблей и автомобилей. А тесное сотрудничество с Jeppesen и GIS-организациями дает преимущество в плане создания баз данных. На этой странице содержится информация о циклах обновления навигационных БД Garmin на 2016...




      Jeppesen FD PRO - версия 2.5
      Jeppesen FD PRO - версия 2.5

      Фирма Jeppesen анонсировала выход в ближайшее время новой версии своего флагманского приложения для EFB на базе iPad - FD PRO v.2.5. PRO - подразумевает "Professional", таким образом Jeppesen старается угодить именно авиационным профессионалам, каждый раз подтверждая статус лидера в аэронавигационных услугах и продуктах. В этот раз разработчики Jeppesen учли максимальное количество замечаний и предложений...




      Dropbox и сто iPad'ов
      Dropbox и сто iPad'ов

      Исходные данные: Сто планшетов Apple iPad; Множество документов (~ 60 шт) разного размера (от 1 до 200 Мб), периодически обновляемых, каждый документ по своему регламенту. Необходимо обеспечить: Наличие всех этих документов в актуализированном состоянии в любой момент времени непосредственно на всех этих iPad'ах; Элементарную (хотя бы) защиту этих документов.




      Фразы про ЛИЦО (FACE)
      Фразы про ЛИЦО (FACE)

      Выражения, в которых используется слово ЛИЦО (face), использование их в повседневной речи и сравнение с русскими аналогами.   1. FACE THE MUSIC (досл.: «встретить музыку») По-русски это означает: держать ответ за что-либо, расплачиваться, "расхлёбывать кашу".Пример: You’ve made a mistake; now you’ll have to face the music.Ты совершил ошибку, теперь тебе придется за нее расплачиваться.




      Сбой установки профиля. iPad не активирован
      Сбой установки профиля. iPad не активирован

      При использовании Программы Развертывания (Deployment Program) BYOD при установке профиля регистрации (Enrollment Profile) мобильного устройства на MDM-сервере, установка профиля может не выполнится, а мобильное устройство отобразит сообщение с ошибкой: Сбой установки профиля. iPad не активирован При установке профиля регистрации на контролируемые устройства (supervised devices) такая ошибка не может быть в принципе. Но если планшет является личным устройством, и...



Яндекс.Метрика
Сайт работает на быстром VPS/VDS хостинге от FASTVPS