例1.7¶
添加OGC WMS层¶
MapServer的另一个令人兴奋的特性是它能够使用来自其他地图服务器的层。在这种情况下,MapServer应用程序将成为WMS(或WFS)客户机。mapserver还可以将map文件中的层共享(或服务于其他映射服务器)。这使应用程序成为一个WMS(或WFS)服务器。什么是WMS或WFS?这些是由开放地理空间联盟(OGC)发布的“基于Web的互操作性服务”规范。wms代表web map服务,wfs代表web feature服务。简而言之,这两种规范的区别在于WMS使用Web栅格格式(PNG、GIF、JPEG)共享层,而WFS使用地理标记语言GML。第三个OGC互操作性规范是Web覆盖服务规范或WCS。MapServer仅在服务器级别支持WCS。要查找有关WMS、WFS和WCS的更多信息,请访问 OGC's web site 然后寻找 OGC Implementation Specifications 或 OGC Abstract Specifications .MapServer网站也有 documentation 和 WIKI pages 对于这些规范。
此示例演示如何在 Mapfile 中添加WMS层。
Mapfile¶
这就是 Mapfile 的外观: Example1-7.map
图层对象和WMS参数¶
让我们来看看WMS层:
- 来自JPL的图层modis WMS地图
标记WMS图层对象的开始。
- 名称modis_jpl
层标识符。
- 型栅格
由于WMS层是图像,因此我们使用栅格作为层类型。
- OFFSITE0 0 0
忽略黑色背景色
- **状态* **
默认情况下关闭此层。
- 连接类型WMS
要使用的层连接类型。默认值为本地。
注解
如果必须是显式的,我们将向map文件中的所有其他向量和栅格层添加本地连接类型。相反,我们只定义外部的连接类型。WMS是一个外部数据层,来自另一个地图服务器。
- 连接“http://mapus.jpl.nasa.gov/wms.cgi?”
允许我们 get 来自其他服务器的数据。对于WMS连接,这是一个URL。如果我们使用PostGIS数据库,它将是一个SQL语句。请注意,字符串必须在 Mapfile 中的一行中。
- METADATA
标记WMS层的元数据对象的开头。MapServer使用此对象中定义的参数以及上面的连接参数来形成对WMS服务器的有效WMS请求。
- “wms_srs”“epsg:4326”,
WMS投影。有时,WMS服务器支持多个投影。如果是这种情况,您可能希望在输出投影中请求映射(epsg:2163)。不幸的是,JPL服务器不支持这种投影。
- “WMS”名称“modis”
WMS层名称。这就像添加参数“layers=modis”。
- “WMS_服务器_版本”“1.1.1”
服务器符合的WMS版本。有关更多选项,请参阅 MapServer OGC规范支持 .
- “WMS U格式”“image/jpeg”
我们期望从WMS服务器接收的图像格式。您可以尝试将值替换为 image/png 或者别的什么。
- END
标记元数据对象的结尾
要了解有关向应用程序添加WMS层的更多信息,请访问 MapServer WMS Client Howto .
Web对象参数¶
除了添加WMS图层对象,地图下还有一个新对象。这是Web对象。在Web对象中有两个参数:
- imagepath'/data/tmp/'.
指向Web可访问临时目录的绝对本地路径。运行Web服务器进程的用户应该能够写入此目录。确保路径末尾包含斜线(/)。(您的映像路径可能如下所示:“/home/apache/htdocs/tmp/”或“c:/inetpub/wwwroot/tmp/”。
- imageurl'/tmp/'.
这是相对于Web服务器的根目录显示ImagePath的方式。如果必须为此键入完整的URL,它将是“http://terrasip.gis.umn.edu/tmp/”。确保路径末尾包含斜线(/)。
最后,在map对象中,我添加了一个新参数:name。这是映射对象的标识符。MapServer将此作为其创建并转储到的所有图像的前缀 tmp 目录。在这一点上不需要它,但是拥有它也不会带来伤害。
如果要将数据层共享到其他地图服务器,则需要在地图对象内以及要共享的每个图层对象内添加元数据对象。从另一台服务器添加的所有WMS层将自动层叠,并且也将对其他服务器可用。要了解有关如何使MapServer应用程序成为WMS服务器的更多信息,请阅读 MapServer WMS Server HowTo . 还存在用于配置MapServer应用程序以支持WFS标准的文档,这两个标准都是 server 作为一个 client .