MapServer 之 发布 WMS GetFeatureInfo 服务

本文详细介绍了如何使用MapServer配置WMS GetFeatureInfo服务,以实现在地图上点击获取要素信息的功能。通过设置TEMPLATE参数,返回结果内容和格式可以自定义。文章还探讨了配置的各个部分,包括设置返回HTML格式、指定模板文件以及如何响应GetFeatureInfo请求。
摘要由CSDN通过智能技术生成

      对于一张图片地图,如果想实现点击地图上一点,地图在相应位置弹出小窗口,显示所点区域的信息这样的功能。要首先获取鼠标点击的坐标,然后在数据库中判断该点在哪个要素的范围内,最后返回包含该点的要素信息。然而我们既然懂这个原理,就可以先看看有没有实现,没必要去重新造轮子。

      MapServer 就已经实现了该服务,因为这是 WMS 的 GetFeatureInfo 操作,MapServer 支持 WMS、WFS等标准,我们只要配置 MapServer 支持该操作即可,不必自己去实现了,配置与发布方法依然是配置对应地图服务的 mapfile 文件。

      刚刚接触 MapServer 的朋友,可能不知道 mapfile 中还有 模板(templating)这个参数,而这个参数就负责配置 WMS GetFeatureInfo 操作的返回结果内容和格式。


注(术语):

    WMS - Web Map Service(网络地图服务)


调用实现效果

      我们要实现的效果就是当用户点击地图上某一块地物的时候,从服务器返回对应地物的属性信息,并以弹出框的形式显示,如下图所示。弹出框内容及其样式并不是我们讲的重点,所以文章中不会涉及 OpenLayers 弹窗,以及如何做出如图弹出框的样式。需要了解的可以看下我的 OpenLayers 3专栏 和相应的 HTML、CSS 知识。这里我们主要讲其后端的通信与处理过程

这里写图片描述
图1 GetFeatureInfo 实现效果图

TEMPLATE 参数

      在 上一篇关于 MapServer 的文章中,我们介绍了 mapfile 的知识,并以例子的形式发布了 WMS(网络地图服务) ,WMS包含三个基本服务,GetCapability(获取服务的元数据)、GetMap(获取图片格式的地图) 和 GetFeatureInfo(获取要素的信息),其中 GetCapability 和 GetMap 是一个WMS服务必须具备的能力,GetFeatureInfo 是可选的,上一篇中的 mapfile 配置中的 WEB 对象中有一行配置是 "wms_enable_request" "*" ,这行配置表示已经告诉 MapServer 开启了 WMS 所有服务,包括 GetFeatureInfo,但是这样配置并不能响应 GetFeatureInfo 的请求,必须配置一些额外的参数,就是本篇要讲的 TEMPLATE 参数。

如何配置

      下面是配置好 WMS GetFeatureInfo 操作的 mapfile,我们来分析一下各个配置的意义,该 mapfile 基于上一篇文章,添加了几个参数,所以不涉及 GetFeatureInfo 的内容我这里就不涉及了,主要讲 GetFeatureInfo 相关的配置。

MAP
    NAME "test"

    PROJECTION
        "init=epsg:3857"
    END #PROJECTION END

    WEB
        METADATA
            "wms_title" "test"
            "wms_version" "1.3.0"
            "wms_onlineresource" "http://xx.xx.xx.xx/cgi-bin/mapserv.exe?"
            "wms_enable_request" "*"
            "wms_srs" "EPSG:3857"
            "wms_feature_info_mime_type" "text/html"
        END  # MAP METADATA
    END # WEB

    LAYER
        NAME "test_layer"
        TYPE POLYGON
        METADATA
            "wms_title" "test_layer"
            "wms_srs" "EPSG:3857"
        END  # LAYER METADATA
        CONNECTIONTYPE postgis
        CONNECTION "host=xx.xx.xx.xx port=xxxx dbname='xxxx' user=xxxx password=xxxx"
        DATA "geom from xxx using unique gid using srid=3857"
        TEMPLATE "template.html"
        CLASS
            NAME "polygon_style"
            STYLE
                COLOR "#5eff4d"
                OUTLINECOLOR 
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值