添加OGC WMS图层

查看示例

MapServer的另一项令人兴奋的功能是它能够使用其他地图服务器提供的图层作为其数据源。在这种情况下,MapServer 应用程序成为 WMS(WFS)客户端。MapServer的也可以分享(或服务)MapFile 中的图层到其他地图服务器。这使得应用程序成为的WMS(WFS)服务器。WMS或WFS是什么?这些都是“基于网络的互操作性服务”规范,由开放地理空间联盟(OGC)发布。WMS代表Web地图服务, WFS表示Web要素服务。这两种规格之间的差异,简单来说,就是WMS使用网络栅格格式(PNG,GIF,JPEG)分享层,而世界粮食首脑会议使用地理标记语言GML。第三种常用的 OGC互操作规范是网络覆盖服务规范(WCS) ,MapServer 仅在服务器端提供支持。如果需要了解 WMS,WFS和WCS的更多信息,可以在 OGC 官方网站 查找 OGC Implementation Specifications 或者 OGC Abstract Specifications 。MapServer的网站也有一些与这些规范相关页面。

这个例子告诉你如何在你的 MapFile 中添加一个WMS层。

下面是本例中使用的Mapfile(xmfa7.map):

01 MAP
02     IMAGETYPE "PNG24"
03     EXTENT -180 -90 180 90
04     SIZE 600 300
05     SHAPEPATH "../geodata"
06     IMAGECOLOR 255 255 255
07     FONTSET "../fonts/fonts.list"
08     SYMBOLSET "../symbols/symbols35.sym"
09     LAYER
10         NAME "modis"
11         DATA "land_shallow_topo_8192.tif"
12         STATUS OFF
13         TYPE RASTER
14         PROCESSING "BANDS=1,2,3"
15         OFFSITE 71 74 65
16     END
17     LAYER
18         NAME "modis_jpl"
19         TYPE RASTER
20         OFFSITE 0 0 0
21         STATUS OFF
22         CONNECTIONTYPE WMS
23         CONNECTION "http://wcs.osgeo.cn:8088/service?"
24         METADATA
25             "wms_srs" "EPSG:4326"
26             "wms_name" "maplet_i887"
27             "wms_server_version" "1.1.1"
28             "wms_format" "image/jpeg"
29         END
30         PROJECTION
31             "init=epsg:4326"
32         END
33     END
34     LAYER
35         NAME "states_line"
36         DATA "wcountry.shp"
37         STATUS OFF
38         TYPE LINE
39         CLASS
40             NAME "State Boundary"
41             STYLE
42                 SYMBOL "line5"
43                 COLOR 255 255 0
44                 SIZE 1
45             END
46         END
47     END
48 END

Mapfile 中添加WMS图层

文件变动如下:

2    IMAGETYPE "PNG24"2    IMAGETYPE "PNG24"
n3    EXTENT -20042150 -20000000 20104978 20000000n3    EXTENT -180 -90 180 90
4    SIZE 400 3004    SIZE 600 300
5    SHAPEPATH "../geodata"5    SHAPEPATH "../geodata"
nn6    IMAGECOLOR 255 255 255
7    FONTSET "../fonts/fonts.list"
6    SYMBOLSET "../symbols/symbols35.sym"8    SYMBOLSET "../symbols/symbols35.sym"
n7    FONTSET "../fonts/fonts.list"n
8    PROJECTION
9        "init=epsg:3857"
10    END
11    LAYER
12        NAME "states"
13        DATA "wcountry.shp"
14        STATUS OFF
15        TYPE POLYGON
16        PROJECTION
17            "init=epsg:4326"
18        END
19        CLASS
20            NAME "States"
21            EXPRESSION "land"
22            STYLE
23                COLOR 232 232 232
24            END
25        END
26    END
27    LAYER9    LAYER
32        PROCESSING "BANDS=1,2,3"14        PROCESSING "BANDS=1,2,3"
nn15        OFFSITE 71 74 65
16    END
17    LAYER
18        NAME "modis_jpl"
19        TYPE RASTER
20        OFFSITE 0 0 0
21        STATUS OFF
22        CONNECTIONTYPE WMS
23        CONNECTION "http://wcs.osgeo.cn:8088/service?"
24        METADATA
25            "wms_srs" "EPSG:4326"
26            "wms_name" "maplet_i887"
27            "wms_server_version" "1.1.1"
28            "wms_format" "image/jpeg"
29        END
33        PROJECTION30        PROJECTION
37    LAYER34    LAYER
n38        NAME "states"n35        NAME "states_line"
39        DATA "wcountry.shp"36        DATA "wcountry.shp"
41        TYPE LINE38        TYPE LINE
t42        PROJECTIONt
43            "init=epsg:4326"
44        END
45        CLASS39        CLASS

说明

让我们看看在WMS层:

来自JPL层#MODIS WMS地图 标志着开始的WMS层对象。

NAME modis_jpl,层标识符。

TYPE RASTER , 由于这WMS图层是图像,使用栅格图层类型。

OFFSITE 0 0 0 ,忽略黑色的背景颜色

STATUS OFF, 打开这层默认关闭。

CONNECTIONTYPE WMS 他输入层连接使用。默认为本地 。

如果我们必须要明确的,我们将增加本地的所有其他矢量和栅格图层在我们的 MapFile CONNECTIONTYPE。相反,我们只定义是外部的连接类型。WMS是一个外部的数据层,来自其他地图服务器。

CONNECTION “http://mapus.jpl.nasa.gov/wms.cgi?” ,连接字符串,使我们能够从另一台服务器上的数据“搞定”。在WMS连接的情况下,这是一个URL。如果我们用的是PostGIS数据库,这将是一个SQL语句。请注意字串是在一个单一的线在你的 MapFile 。

METADATA , 标志着我们的WMS层的元数据对象。MapServer的使用此对象定义的参数,以及与上述连接参数,以形成有效的WMS请求WMS服务器。

"wms_srs" "epsg:4326" , WMS投影。有时WMS服务器支持多个投影。如果是这样的话,你可能会想要求你的输出投影(EPSG:2163)地图。不幸的是,外部的 WMS 服务器不支持这种投影。

"wms_name" "modis" , WMS图层名称。这就像是添加参数 "layers=modis" .

"wms_server_version" "1.1.1" , WMS版本的服务器的版本。可以查看更多支持的版本。

"wms_format" "image/jpeg" , 图像格式,我们预计接收来自WMS服务器。你可以试试“图像/ PNG”或其他东西取代的价值。

END , 标志着年底的元数据对象

其他信息

要知道更多关于WMS图层添加到您的应用程序,请访问 WMS客户端如何来记录.

除了加入WMS图层对象,也有地图的下一个新的对象。这是Web对象。在Web对象有两个参数:

IMAGEPATH '/data/tmp/' , 本地绝对路径到Web访问的临时目录。运行Web服务器进程的用户应该能够写入到这个目录中。确保该路径包含在最后一个斜杠( / )。(你的IMAGEPATH可能是这个样子: /home/apache/htdocs/tmp/ or C:/Inetpub/wwwroot/tmp/.)

IMAGEURL '/tmp/' , 这是怎么IMAGEPATH会出现相对Web服务器的根目录。如果我们必须输入完整的URL,这将是 "http://terrasip.gis.umn.edu/tmp/" 。请确保路径包含在最后一个斜杠( / )。

最后,在 MAP 对象中添加了一个新的参数: NAME 。这是地图对象的标识符。MapServer的使用这个前缀的所有图像创建和转储 tmp 的目录。在这个例子中其实并不需要,但也不会有什么不好的影响。

如果您想分享您的数据层到其他地图服务器,你需要在你的 MAP 对象添加 METADATA 对象,并在每个你想和大家分享的图层对象中添加 METADATA。所有从另一台服务器添加的 WMS 图层会自动进行级联 发布,提供给他人来用(传染性)。 要知道如何使MapServer的应用程序成为一个WMS服务器的详细信息,请仔细阅读 WMS服务器文档。另外,除了 WMS 服务, MapServer 也支持 WFS 服务,可以查看文档了解如何配置 MapServer 来实现 WFS 服务器,或 WFS 客户端。