例1.7¶
添加OGC WMS层¶
MapServer的另一个令人兴奋的功能是它能够使用其他地图服务器中的图层。在这种情况下,MapServer应用程序将成为WMS(或WFS)客户端。MapServer还可以将 Mapfile 中的图层共享(或提供)给其他地图服务器。这使应用程序成为WMS(或WFS)服务器。什么是WMS或WFS?这些是由开放地理空间联盟(OGC)发布的“基于Web的互操作性服务”规范。WMS代表Web地图服务,WFS代表Web要素服务。简单地说,这两个规范之间的区别在于,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 对于这些规格。
此示例演示如何在映射文件中添加WMS层。
Mapfile¶
这就是映射文件的外观: Example1-7.map
图层对象和WMS参数¶
让我们来看看WMS层:
- LAYER # MODIS WMS map from NASA
标记WMS图层对象的开始。
- NAME modis_nasa
层标识符。
- 型栅格
由于WMS层是图像,因此我们使用栅格作为层类型。
- 场外0 0 0
忽略黑色背景色
- **状态* **
默认情况下关闭此层。
- 连接类型WMS
要使用的层连接类型。默认值为本地。
备注
如果必须是显式的,我们将向map文件中的所有其他向量和栅格层添加本地连接类型。相反,我们只定义外部的连接类型。WMS是一个外部数据层,来自另一个地图服务器。
- CONNECTION "https://neo.sci.gsfc.nasa.gov/wms/wms?"
允许我们 get 来自其他服务器的数据。对于WMS连接,这是一个URL。如果我们使用PostGIS数据库,它将是一个SQL语句。请注意,字符串必须在映射文件中的一行中。
- METADATA
标记WMS层的元数据对象的开头。MapServer使用此对象中定义的参数以及上面的连接参数来形成对WMS服务器的有效WMS请求。
- “wms_srs”“epsg:4326”,
WMS预测。有时WMS服务器支持多个投影。如果您希望在这种情况下输出映射(爱普生:2163). 不幸的是,NASA服务器不支持这个预测。
- "wms_name" "MOD_143D_RR"
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/'.
这是IMAGEPATH相对于web服务器根目录的显示方式。如果我们必须为此键入完整的URL,它将是“https://demo.mapserver.org/ms_tmp/". 确保路径的末尾包含斜杠(/)。
最后,在map对象中,我添加了一个新参数:name。这是映射对象的标识符。MapServer将此作为其创建并转储到的所有图像的前缀 tmp 目录。在这一点上不需要它,但是拥有它也不会带来伤害。
如果要将数据层共享到其他地图服务器,则需要在地图对象内以及要共享的每个图层对象内添加元数据对象。从另一台服务器添加的所有WMS层将自动层叠,并且也将对其他服务器可用。要了解有关如何使MapServer应用程序成为WMS服务器的更多信息,请阅读 MapServer WMS Server HowTo . 还存在用于配置MapServer应用程序以支持WFS标准的文档,这两个标准都是 server 作为一个 client .