Публикация растровых карт

Публикация растровых карт

Печников Алексей Олегович, руководитель геоинформационного проекта "GeoMapX"

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

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

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

Традиционно картографические приложения создают 8-битную псевдо-цветную карту, основанную на 8-битной картинке в оттенках серого или псевдоцветной. Таким образом, если растровый файл является 24-битным изображением (красный, зеленый и синий диапазоны), обычно используемый метод отрисовки не пригоден.

Если строится 8-битное псевдо-цветное изображение, тогда полная 24-битная RGB картинка для отображения будет преобразована в карту цветов выходного изображения. Для преобразования может быть использован цветовой куб. Он включает фиксированный набор из 175 цветов и поддерживает использование 5 уровней красного, 7 уровней зеленого и 5 уровней синего, и плюс к этому 32 оттенка серого. Растры отрисовываются “на лету” одним из цветов куба. Такой механизм ухудшает качество цветопередачи, особенно для изображений с плавными переходами цвета. Также можно использовать фиксированный набор из 256 цветов, что работает значительно быстрее.

Вариацией изложенного подхода является скользящее сглаживание в процессе отрисовки. Этот алгоритм вычисляет цвет пиксела исходя из цвета соседних. В случае однотонных участков изображения результат аппроксимации получается точнее, чем в предыдущем методе. Технология сглаживания может быть полезна не только для цветового куба, но и для заданной цветовой палитры. Отметим, что сглаживание требует больше ресурсов процессора чем простое использование цветового куба, в силу чего следует избегать использование этой технологии в тех случаях, когда важна производительность.

Также существующее программное обеспечение позволяетсоздавать 24-битное выходное изображение при использовании 24-битного исходного.

Простым механизмом для добавления географической информации (мировых координат) к растровым файлам являются файлы привязки. ESRI была первой компанией, предложившей идею использования файлов привязки, и сейчас часто используют такие файлы с форматом TIFF заместо внедрения географической информации непосредственно в файл (формат geoTIFF). Использование преобразования проекции растров “на лету” удобно, однако следует учитывать, что этот процесс требует произведение большого объема вычислений при каждом обращении к карте.

Структура файла привязки следующая. Первый коэффициент представляет собой размер по координате X в пикселах.Второй и третий являются коэффициентами поворота/сдвига (для неискаженного изображения равны 0.0). Четвертый коэффициент представляет собой размер по координате Y в пикселах, обычно этот коэффициент отрицателен, что соответствует направлению оси ординат вниз от левого верхнего угла. Последние два значения представляют собой X и Y координаты центра левого верхнего пиксела изображения. Следующий пример соответствует изображению с размером пиксела 2m x 2m, и левым верхним углом в точке (356800E, 5767999N). 

2

0.0000000000

0.0000000000

-2

356800.00

5767999.00

Имя файла привязки основывается на имени файла изображения. Например, для файла aerial.tif файл привязки будет называться aerial.tfw. Также используются файлы привязки с расширением .wld.

Учитывая вышеизложенное, можно предложить следующую методологию публикации растровых изображений:

Построение перекрывающихся уровней для растров высокого разрешения гарантирует, что только разумно необходимый объем данных будет обработан при построении карты. Могут быть организованы группы перекрывающихся слоев, отображаемых в зависимости от выбранного разрешения. Другой, возможно, более простой путь, заключается в построении пирамид для поддерживаемых форматов. 

Для больших изображений используется их разбиение на набор малых, что позволяет загружать лишь небольшой набор данных для текущей области отображения. Такой путь может пользоваться механизмом разделения растров, или построением файла пирамиды (например, для формата TIFF). Заметим, что речь идет о растрах, покрывающих большую плошадь, в отличие от рассмотренного выше случая растра высокого разрешения. Вообще говоря, ранее предложенный способ обычно легче реализуем, а текущий – более трудоемок, что окупается его универсальностью. 

Предварительная обработка RGB 8-битных изображений с использованием таблицы цветов с целью уменьшения объемов обрабатываемых данных и числа вычислений “на лету”. 

Подготовьте заранее изображение во всех необходимых проекциях, чтобы исключить перепроецирование “на лету”, требовательное к ресурсам компьютера. 

Убедитесь, что проекция карты совпадает с проекциями всех слоев , в этом случае лишние преобразования выполняться не будут.