Организация работы с данными архивов ЦКП «ИКИ-Мониторинг» на основе использования интерактивной среды разработки Jupyter Notebook
Интерактивная среда разработки Jupyter Notebook в последние годы находит все более широкое применение для широкого спектра задач, связанных с анализом и обработкой данных, в том числе данных дистанционного зондирования Земли. Она, как и следующее ее поколение Jupyter Lab, реализована в виде удобного веб-интерфейса, позволяющего запускать отдельные участки программного кода и в этом же интерфейсе наглядно представлять результаты операций в виде графиков, изображений или таблиц. Этот инструмент особенно хорошо подходит для решения частных задач, связанных с анализом данных, выработкой алгоритмов, проверкой гипотез и т.п. При этом реализованные в среде документы могут быть наглядным и интерактивным представлением полученных результатов и для других исследователей и разработчиков. Благодаря наличию широкого спектра библиотек, предназначенных для анализа и обработки самых разных типов данных, язык программирования Python в настоящее время широко используется не только для прикладных, но и исследовательских задач, в том числе связанных с обработкой спутниковых изображений. Поэтому ниже рассматривается использование именно этого языка программирования в рамках среды Jupyter.
В 2023 году в отделе «Технологии спутникового мониторинга» ИКИ РАН в рамках использования среды Jupyter был реализован базовый функционал для получения доступа к данным сверхбольших распределенных архивов спутниковых данных ЦКП «ИКИ-Мониторинг», позволяющий производить анализ и обработку данных непосредственно по месту их физического хранения с использованием различных сторонних библиотек (gdal, numpy, matplotlib, scipy и др.). Далее более подробно рассмотрены вопросы организации доступа как к необходимой справочной информации, описывающей имеющиеся в архиве спутниковые данные, так и к самим файлам, содержащим спутниковые наблюдения.
Для эффективной работы с данными ДЗЗ необходим широкий спектр справочной информации, описывающей спутники, размещенные на них приборы наблюдения и характеристики конкретных информационных продуктов. В рамках разработанной в ИКИ РАН технологии построения сверхбольших распределенных архивов спутниковых данных UNISAT за хранение такой информации отвечает справочная база данных UNISAT_CATALOG. Для доступа к этой информации на языке программирования python была разработана библиотека unisat_catalog.py, позволяющая получать различную справочную информацию как в табличном виде, так и в виде структур данных. На рисунке 1 приведены примеры получения справочной информации о продукте, спектральных каналах прибора наблюдения, а также о характеристиках каналов конкретных информационных продуктов, имеющихся в архивах.
В рамках технологии UNISAT хранение метаданных, описывающих имеющиеся в архивах экземпляры спутниковых продуктов, реализовано в наборе баз данных unisat, имеющих одинаковую унифицированную структуру. В настоящее время за ведение метаданных архивов ЦКП «ИКИ-Мониторинг» отвечают пять основных баз данных: unisat_hrsat (данные высокого разрешения), unisat_mrsat (среднего разрешения), unisat_comp (композитные продукты), unisat_radarsat (радарные наблюдения), unisat_user (пользовательские продукты). Для доступа к метаданным таких архивов была разработана библиотека unisat_archive.py.
Рисунок 1 - Пример получения справочной информации о данных в архивах
На рисунке 2 приведены примеры запросов на получение информации из архива данных высокого разрешения unisat_hrsat. Первый вызов products_stat предоставляет статистику по имеющимся в архиве «физическим» продуктам для указанного прибора и диапазона дат. Второй вызов get_metadata является основным запросом на получение информации об экземплярах, имеющихся в архивах продуктов, соответствующих заданному набору критериев поиска. Результат возвращается в формате JSON и содержит как общую информацию о запросе (секция INFO), так и информацию о найденных экземплярах продуктов (секция DATA).
Рисунок 2 - Пример запросов к базе данных unisat_hrsat.
На рисунке 3 показаны примеры операций над файлами данных, соответствующими выбранным на предыдущем слайде экземплярам спутниковых наблюдений. Существенно, что данные примеры являются чисто иллюстративными и предназначены только для демонстрации самых базовых возможностей среды Jupyter. Для получения полных путей к файлам используется получаемый из библиотеки unisat_archive базовый путь к хранилищу файлов ua.store_dir и относительные пути, полученные на предыдущем слайде.
В первом примере сначала при помощи библиотеки gdal из файлов вычитываются массивы значений для красного и инфракрасных каналов фрагмента изображения по данным прибора MSI спутника Sentinel-2A. Затем одной строкой на основе полученных массивов вычисляется вегетационный индекс NDVI. После чего при помощи библиотеки matplotlib в блокнот выдается полученное изображение. Во втором примере для полученного индекса NDVI также при помощи библиотеки matplotlib отображается гистограмма по частоте различных его значений.
Рисунок 3 - Примеры тестовых операций с данными архива
В настоящее время в отделе «Технологии спутникового мониторинга» реализован только базовый функционал, обеспечивающий доступ к данным архивов ЦКП «ИКИ-Мониторинг» и позволяющий работать с ними по месту их физического хранения при помощи широкого спектра сторонних библиотек. При этом доступ к этому инструменту пока что предоставляется только узкому кругу специалистов и разработчиков.
В перспективе планируется расширить имеющийся функционал благодаря поддержке инструментов для анализа и обработки данных, разработанных в ИКИ РАН. Существенным шагом в развитии этого инструмента может быть также поддержка механизма «виртуальных» информационных продуктов, которые получаются с использованием заданных правил построения на основе базовых информационных продуктов и являются одним из ключевых преимуществ систем доступа к архивам ЦКП «ИКИ-Мониторинг». Также планируется внедрить специальные программные решения, которые позволили бы предоставить доступ к этому инструменту для более широкого круга пользователей, в том числе на основе кластерных решений.