Loading
Пропустить Навигационные Ссылки.

Авторизоваться
Для зарегистрированных пользователей

Новый универсальный модуль растеризации изображений

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

Новый модуль растеризации был полностью реализован на языке программирования Python и использует для работы с изображениями свободно распространяемый программный пакет GDAL. Необходимые вычисления в процессе формирования изображений производятся с использованием высокоэффективной библиотеки NumPy, являющейся свободно распространяемой альтернативой пакета MATLAB. В результате, несмотря на использование интерпретируемого языка программирования, основные операции по обработке данных производятся с высокой эффективностью, характерной для компилируемых языков программирования. В то же время программный код, реализованный на языке Python существенно проще поддерживать и не нужно компилировать при установке на сервера с различными операционными системами.

Ниже приводится базовая последовательность операций, выполняемых при вызове модуля растеризации:

  1. Определение параметров вызова
    • Определение параметров карты: диапазон координат, проекция, размер и др.
    • Определение правил построения продуктов: идентификаторы набора исходных данных, правила формирования на их основе требуемого информационного продукта, получаемые из справочных баз данных или от пользователя
  2. Формирование изображения в памяти
    • Чтение данных из файлов
    • Обработка данных при помощи программного пакета GDAL
    • Получение мозаики фрагментов
    • Получение вычисляемых продуктов
  3. Предоставление изображения
    • Формирование и отдача в выходной поток (или в файл, если нужно) изображения в формате PNG
    • Формирование и отдача изображения в формате GeoTIFF

В случае формирования изображения в формате PNG реализуются следующие основные варианты данных:

  • трехканальный RGB продукт;
  • одноканальный продукт с палитрой;
  • одноканальный продукт без палитры;
  • пустое прозрачное изображение в случае отсутствия данных в области интереса.


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

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