例1.5

添加栅格层

https://demo.mapserver.org/cgi-bin/mapserv?map=/mapserver/apps/tutorial/htdocs/example1-5.map&layer=states&layer=states_line&layer=modis&mode=map

除了矢量数据支持(点、线、多边形),MapServer还可以显示栅格数据。通过使用GDAL库,MapServer可以输入和输出多种栅格格式。在4.x之前的版本中,栅格输入仅限于单层、灰度或索引彩色图像,而最新的MapServer版本支持RGB和多光谱(多层)图像。此示例显示如何选择使用多光谱数据时要显示的图层。

备注

在使用RGB和多光谱图像时,可能会出现明显的性能问题。

因为MapServer使用AGG生成输出图像,所以它也支持RGB(24位或真彩色)输出。所以,除了8位(索引颜色或灰度)PNG8,现在还可以使用PNG(真彩色)作为输出。本例使用PNG作为IMAGETYPE。

备注

与RGB输入一样,与PNG8相比,使用PNG时可能会出现明显的性能问题。

mapserver实际上也可以使用gdal生成输出图像,但这是另一个主题。如果你想了解更多,看看 OUTPUTFORMAT 映射文件引用中的对象。

映射文件结构

这就是映射文件的外观: Example1-5.map

按对象划分的mapfile结构如下所示:

                                             MAP
             LAYER #1-------------LAYER #2----|----LAYER #3
          (states_poly)           (modis)       (states_line)
             |                                        |
(land) CLASS-|                                        |-CLASS
          |                                               |
    STYLE-|-LABEL                                         |-STYLE

当您查看映射文件时,您将看到新的图层对象被添加到状态多边形图层的下面(后面)。为什么?mapserver按相反的顺序显示层:后进先出(lifo)。 Mapfile 中定义的第一个图层绘制在地图的底部。

所以,如果我们画了状态多边形层,它会在底部。因为栅格图层被绘制在上面,所以我们看不到它。这就是为什么第一层的状态值为off的原因。状态线图层定义在栅格图层的下方,以便在顶部绘制(您可以看到)。这就是我们将状态线层与状态多边形层分离的原因。当然,标签是最重要的。

MapServer可以根据其他图层的状态自动打开或关闭图层(例如,当栅格图层打开时,希望关闭状态多边形图层)。这是通过使用Requires参数来完成的。记住这一点,因为您可能希望在开始创建自己的MapServer应用程序后使用它。

参数

让我们看看mapfile中引入的新参数:

IMAGETYPE

PNG是PNG格式的24位或真彩色版本。顺便说一下,试着把这个值改成png8。请注意,使用这两种格式生成图像所需的时间。在选择真彩色和索引颜色时,要考虑生成图像所需的时间。

SYMBOLSET

指向符号定义文件的路径。此文件中的符号由中的符号参数引用 CLASS 对象。现在不需要,但我想我现在就把它扔到这里。请参阅 Cartographic Symbol Reference 更多信息。

数据栅格/mod09a1200 3161_ugl_ll_8bit.tif

在新添加的图层对象中,数据参数指向geotiff图像。与矢量数据集一样,MapServer支持多种栅格文件格式。这种支持是通过使用gdal库来实现的。有关MapServer支持的不同栅格格式的详细信息,以及有关在MapServer中使用栅格的一般性讨论,请阅读 Raster Data Reference .

型栅格

当使用栅格数据(图像)时,我们使用值栅格作为参数类型,而不是使用多边形、直线和点值作为矢量数据及其标签。

处理“波段=1,2,3”

该层对象参数已添加到MapServer 4.x中。 PROCESSING 关键字有许多值,但在本例中,我们使用它来选择要显示的多光谱图像中的波段。这里的值是将传递到gdal库的字符串。

OFFSITE

此参数告诉MapServer要渲染为背景(或忽略)的像素值。您可以使用图像处理或图像操作程序(例如,Imagine、Photoshop、Gimp)获取像素值。

RGB与索引彩色图像

要在使用RGB图像而不是索引颜色图像时比较地图创建速度,请替换 Mapfile 中的以下行:

DATA "raster/mod09a12003161_ugl_ll_8bit.tif"
STATUS DEFAULT
TYPE RASTER
PROCESSING "BANDS=1,2,3"
OFFSITE 71 74 65

用这些:

DATA "raster/mod09a12003161_ugl_ll_idxa.tif"
STATUS DEFAULT
TYPE RASTER
OFFSITE 70 74 66

另外,尝试将imagetype从png更改为png8。


Back to Example 1.4 | Proceed to Example 1.6