Помимо векторных данных (точки, линии, полигоны, подписи), MapServer также обеспечивает поддержку растровых данных. Посредством использования библиотеки GDAL MapServer может работать с разнообразными растровыми форматами. Отметим, что в версиях, предшествующих 4.x существовало ограничение, MapServer мог работать только с однослойными изображениями в шкале серого или в индексированных цветах. Сейчас MapServer обеспечивает поддержку RGB и мультиспектральных (многоканальных) растровых данных. Рассмотренный в данном разделе пример показывает, как выбрать необходимый слой для отображения при использовании мультиспектрального изображения. Имейте в виду, что при обработке мультиспектральных и RGB изображений может наблюдаться падение производительности.
Для создания изображений MapServer 5.x использует библиотеку GD версии 2.0.x, поддерживающую RGB (24-битный или true color). Наряду с 8-битными (индексированные цвета или градации серого) PNG, вы также можете использовать PNG24 (true color). В рассмотренном примере в качестве значения параметра IMAGETYPE используется PNG24.
Фактически MapServer может использовать GDAL для создания изображений, а не только для работы с уже готовыми, но это уже отдельная тема. Если вы хотите узнать об этом больше, то обратитесь к описанию объекта OUTPUTFORMAT.
Содержание файла example1-5.map
Структура файла example1-5.map в виде иерархии объектов будет выглядеть следующим образом:
MAP LAYER #1-------------LAYER #2----|----LAYER #3--------LAYER #4 (altay_poly) (altay_raster) (altay_line) (altay_label) | | | (land) CLASS-|-CLASS (water) |-CLASS |-CLASS | | | | STYLE-| |-STYLE |-STYLE STYLE-|-LABEL
Если посмотреть на map-файл, то можно увидеть, что новый слой (altay_raster) был добавлен после полигонального. Почему? MapServer отображает слои в обратном порядке, по методу LIFO ("Последним пришёл, первым ушёл"). Первый слой, определенный в map-файле, на карте будет самым нижним.
Поскольку растровый слой полностью перекрывает полигональный, то мы не видим последнего. Линейный слой расположен выше растрового, поэтому он виден. Именно для этого мы и выделили его в отдельный слой, а не воспользовались параметром OUTLINECOLOR полигонального слоя. Очевидно, что слой подписей также виден, поскольку он находится на самом верху.
MapServer может автоматически включать или отключать слои, основываясь на статусах других слоев, то есть, например, выключить полигональный слой при включенном растровом слое. Эта возможность работает при использовании параметра REQUIRES. Помните об этом, возможно это будет очень полезной функцией при написании собственных приложений.
А теперь взглянем на новые параметры, появившиеся в нашем map-файле:
IMAGETYPE
Это не новый параметр, новым является только его значение "PNG24". PNG24 – это 24-битная или true-color версия PNG-формата. Вместо того чтобы ограничиваться 256 цветами для нашей карты, MapServer позволяет использовать несколько миллионов цветов. Между прочим, попробуйте изменить значение этого параметра обратно на PNG и посмотрите на результат. Обратите внимание на время, требуемое MapServer для создания изображений различных форматов. При выборе формата изображения, true-color или индексированные цвета, не забудьте принять во внимание время, необходимое на генерацию изображения.
SYMBOLSET
Задает путь до файла определения символов. На символы, определенные в этом файле во время работы ссылается параметр SYMBOL, входящий в состав объекта CLASS. В данном разделе это не является необходимым, однако, если вы захотите узнать больше о символах в MapServer, посетите эту страницу.
DATA
В новом растровом слое параметр DATA ссылается на GeoTIFF-изображение. Наряду с векторными данными, MapServer поддерживает множество растровых форматов данных. Эта поддержка достигнута за счет использования библиотеки GDAL. Для получения дополнительной информации о растровых форматах, поддерживаемых MapServer посетите страницу.
TYPE
При использовании растровых данных (изображений) параметру TYPE присваивается значение RASTER, в то время как при использовании векторных данных используются значения POLYGON, LINE или POINT, а при добавлении подписей – ANNOTATION.
PROCESSING
Этот параметр объекта LAYER появился в MapServer 4.x. PROCESSING имеет множество назначений, но в нашем примере мы использовали его для выбора каналов мультиспектрального изображения. Введенная здесь строка будет передана библиотеке GDAL. Документации по данному параметру очень мало, поэтому обязательно изучите Mapfile Reference (на сайте MapServer) для знакомства с примерами использования параметра PROCESSING.
OFFSITE
Этот параметр сообщает MapServer какое значение цвета пикселя установлено для отрисовки его как фона (или игнорирования). Вы можете определить значение пикселя, воспользовавшись программами для работы с графикой (например, Photoshop или Gimp).
Сравните скорость создания карт при использовании изображений RGB и изображений с индексированными цветами, заменив следующие строки в map-файле:
DATA "raster/altay-8bit.tif"
STATUS DEFAULT
TYPE RASTER
PROCESSING "BANDS=1,2,3"
на:
DATA "raster/altay-idx.tif"
STATUS DEFAULT
TYPE RASTER
Также попробуйте поменять IMAGETYPE с PNG24 на PNG.
Пример 1.4 | Глава 1 | Содержание | Пример 1.6
Обсудить в форуме Комментариев 85
Последнее обновление: February 27 2009
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).