加入栅格图层

查看示例

MapServer 除了支持矢量数据(点,线,多边形和标注),还可以显示栅格数据。通过GDAL库的使用, MapServer 可以输入和输出多种栅格格式。现在的MapServer支持RGB和多光谱图像(多层)。而在4.0以前的版本栅格输入仅限于单层,灰度或彩色图像索引。这个例子显示了如何使用多光谱数据选择要显示什么样的层。采用RGB和多光谱图像,有可能有一个明显的性能损失。

因为MapServer的5.x的使用 GD 2.0.x 版本库生成图像输出,它支持 RGB(24位真彩色)以及输出。因此,现在可以同时使用 PNG24 (真彩色)输出和8位(索引颜色或灰度)PNG。这个例子使用PNG24 IMAGETYPE。就像RGB输入,使用 PNG24 时,渲染的结果会有显著的改善。

MapServer 其实可以使用GDAL生成输出图像,但是那是另一个话题。关于它如果你想知道更多,看看 MapFile 中 在 OUTPUTFORMAT 对象的具体用法。

下面是本例中用到的Mapfile(xmfa5.map):

文件变动如下:

01 MAP
02     IMAGETYPE "PNG24"
03     EXTENT -97.238976 41.619778 -82.122902 49.38562
04     SIZE 400 300
05     SHAPEPATH "../data"
06     IMAGECOLOR 255 255 255
07     FONTSET "../fonts/fonts.list"
08     SYMBOLSET "../symbols/symbols35.sym"
09     LAYER
10         NAME "states"
11         DATA "states_ugl"
12         STATUS OFF
13         TYPE POLYGON
14         CLASSITEM "CLASS"
15         CLASS
16             NAME "States"
17             EXPRESSION "land"
18             STYLE
19                 COLOR 232 232 232
20             END
21         END
22     END
23     LAYER
24         NAME "modis"
25         DATA "raster/mod09a12003161_ugl_ll_8bit.tif"
26         STATUS OFF
27         TYPE RASTER
28         PROCESSING "BANDS=1,2,3"
29         OFFSITE 71 74 65
30     END
31     LAYER
32         NAME "states_line"
33         DATA "states_ugl"
34         STATUS OFF
35         TYPE LINE
36         CLASSITEM "CLASS"
37         CLASS
38             NAME "State Boundary"
39             EXPRESSION "land"
40             STYLE
41                 SYMBOL "line5"
42                 COLOR 64 64 64
43                 SIZE 1
44             END
45         END
46     END
47     LAYER
48         NAME "states_label"
49         DATA "states_ugl"
50         STATUS OFF
51         TYPE POLYGON
52         CLASSITEM "CLASS"
53         LABELITEM "STATE"
54         CLASS
55             EXPRESSION "land"
56             STYLE
57                 COLOR -1 -1 -1
58             END
59             LABEL
60                 COLOR 132 31 31
61                 SHADOWCOLOR 218 218 218
62                 SHADOWSIZE 2 2
63                 TYPE TRUETYPE
64                 FONT "arial-bold"
65                 SIZE 12
66                 ANTIALIAS TRUE
67                 POSITION CL
68                 PARTIALS FALSE
69                 MINDISTANCE 300
70                 BUFFER 4
71             END
72         END
73     END
74 END

带标注的 Mapfile

mapfile的结构,通过对象,看起来像这样:


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

修改内容如下:

f1MAPf1MAP
n2    IMAGETYPE "PNG"n2    IMAGETYPE "PNG24"
3    EXTENT -97.238976 41.619778 -82.122902 49.385623    EXTENT -97.238976 41.619778 -82.122902 49.38562
7    FONTSET "../fonts/fonts.list"7    FONTSET "../fonts/fonts.list"
nn8    SYMBOLSET "../symbols/symbols35.sym"
8    LAYER9    LAYER
n9        NAME "states_poly"n10        NAME "states"
11        DATA "states_ugl"
12        STATUS OFF
13        TYPE POLYGON
14        CLASSITEM "CLASS"
15        CLASS
16            NAME "States"
17            EXPRESSION "land"
18            STYLE
19                COLOR 232 232 232
20            END
21        END
22    END
23    LAYER
24        NAME "modis"
25        DATA "raster/mod09a12003161_ugl_ll_8bit.tif"
26        STATUS OFF
27        TYPE RASTER
28        PROCESSING "BANDS=1,2,3"
29        OFFSITE 71 74 65
30    END
31    LAYER
32        NAME "states_line"
33        DATA "states_ugl"
34        STATUS OFF
35        TYPE LINE
36        CLASSITEM "CLASS"
37        CLASS
38            NAME "State Boundary"
39            EXPRESSION "land"
40            STYLE
41                SYMBOL "line5"
42                COLOR 64 64 64
43                SIZE 1
44            END
45        END
46    END
47    LAYER
48        NAME "states_label"
10        DATA "states_ugl"49        DATA "states_ugl"
15        CLASS54        CLASS
n16            NAME "States"n
17            EXPRESSION "land"55            EXPRESSION "land"
18            STYLE56            STYLE
n19                COLOR 232 232 232n57                COLOR -1 -1 -1
20            END58            END
34        END72        END
t35        CLASSt
36            NAME "Water"
37            EXPRESSION "water"
38            STYLE
39                COLOR 198 198 255
40            END
41        END
42    END
43    LAYER
44        NAME "states_line"
45        DATA "states_ugl"
46        STATUS OFF
47        TYPE LINE
48        CLASSITEM "CLASS"
49        CLASS
50            NAME "State Boundary"
51            EXPRESSION "land"
52            STYLE
53                COLOR 64 64 64
54            END
55        END
56    END73    END

当你在 MapFile ,你会看到,新的图层 "modis" 添加到了多边形图层 "states"之后。 MapServer以相反的顺序显示层 - 后进先出(LIFO),第一层绘制在 MapFile 中定义在地图的底部。

所以国家多边形层,会绘制在结果的底部。由于栅格层被绘制在它的上面,所以不会看到它。 这就是为什么第一层得到关闭的状态值 STATUS OFF 。线图层定义在栅格图层之下,所以它会在结果的上面绘制(你可以看到它)。 这就是为什么开始从多边形层分离线层的原因。最后,标签绘制在一切之上。

MapServer的可以根据其他图层的状态来自动自动开启或关闭l图层(栅格图层被打开时多边形图层会关闭)。这个是通过 REQUIRES 参数来完成。一旦开始创建自己的 MapServer 应用程序时应该会用到这个功能。

参数说明

让我们一起来看看在 MapFile 介绍的新参数:

IMAGETYPE ,这是不是新的,但值是 PNG24 。 PNG24是24位真彩色版本的PNG格式。而不是被有限的256颜色组合的输出图像, 地图服务器现在有几百万。顺便说一下,尝试改变这个值回PNG。 注意可以使用的格式,生成图像所花费的时间。 在真彩色和索引颜色之间选择,考虑到生成图像所花费的时间。

SYMBOLSET ,分中的符号定义的文件的路径。此文件中的符号通过类对象中的SYMBOL对象参考。 在这一点上这不是真正需要的,但我想我会现在在这里抛出这个。 请参阅的 MapFile 参考, 并在的MapServer的建设与制图符号了解更多信息。

DATA "raster/mod09a12003161_ugl_ll_8bit.tif",在新添加的层对象,数据参数指向一个GeoTIFF的图像。 MapServer的矢量数据集一样,支持多个栅格文件格式。 这种支持是通过使用GDAL库。欲了解更多信息,不同的栅格格式支持MapServer和一般性讨论使用栅格地图服务器,请阅读的栅格数据如何在 http://www.mapserver.org/input/raster.html

TYPE RASTER,当使用栅格数据(图像),值为 RASTER,而不是 POLYGONLINEPOINT, 或其他。

PROCESSING "BANDS=1,2,3",这层对象参数地图服务器4.x中是新的。加工的关键字有很多的值,但在这种情况下,都用它来选择波段多光谱图像显示。这里的值字符串将被传递给GDAL库。用于这的文档目前是最小的,但是请参阅MAPFILE更多使用加工关键字的例子。

OFFSITE,此参数告诉MapServer的像素值呈现为背景(或忽略)。你可以得到利用图像的像素值处理或图像处理程序(如 GIMP,Photoshop)。

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

另外,尝试改变 IMAGETYPEPNG24PNG