自定义 WMS GetFeatureInfo 响应

WMS 服务支持一系列操作,如 GetCapabilities、GetMap、GetStyles 等,允许客户端应用程序通过向服务的 URL 附加各种参数来使用此服务。GetFeatureInfo 操作以同样的方式工作,它用于以多种格式(如 HTML、XML 和纯文本)返回地图中所查询要素的属性。

以下是 GetFeatureInfo 请求及其默认的 HTML 格式响应的示例:

请求

http://gisserver.domain.com/arcgis/services/ihs_petroleum/MapServer/WMSServer?&service=WMS&version=1.1.0&request=GetFeatureInfo&layers=fields&query_layers=fields&styles=&bbox=47.130647,8.931116,48.604188,29.54223&srs=EPSG:4326&feature_count=10&x=562&y=193&height=445&width=1073&info_format=text/html&

响应

默认的 HTML GetFeatureInfo 响应

在很多情况下,默认的 HTML、XML 或纯文本响应即满足需求,但也可能会存在想要自定义响应格式或方案以执行特定业务逻辑的情况。例如,由于互操作的原因,您可能希望以标准模式(如 GML 或 GeoJSON)返回要素信息。

XSLT 模板

可扩展样式表语言转换 (XSLT) 模板可以基于 WMS GetFeatureInfo 响应生成便于阅读的输出结果。例如,向服务器发送 WMS GetFeatureInfo 请求时,服务器以 XML 格式返回所请求元素的响应。然后,XSLT 模板将 XML“转换”为指定的格式(如 HTML 或纯文本),从而实现了最后响应的可读性。

查看 WMS GetFeatureInfo XML 响应以及 ArcGIS Server 安装时生成的默认 XSLT 模板,将有助于更好地理解如何自定义 GetFeatureInfo 响应。以下部分将做详细介绍。

GetFeatureInfo XML 响应

以下示例是 XML 格式的 WMS 服务中的 GetFeatureInfo 响应:

<?xml version="1.0" encoding="UTF-8"?>
<esri_wms:FeatureInfoResponse version="1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:esri_wms="http://www.esri.com/wms" xmlns="http://www.esri.com/wms">
  <esri_wms:FeatureInfoCollection layername="fields">
    <esri_wms:FeatureInfo>
      <esri_wms:Field>
        <esri_wms:FieldName><![CDATA[OBJECTID]]></esri_wms:FieldName>
        <esri_wms:FieldValue><![CDATA[1]]></esri_wms:FieldValue>
      </esri_wms:Field>
      <esri_wms:Field>
        <esri_wms:FieldName><![CDATA[Shape]]></esri_wms:FieldName>
        <esri_wms:FieldValue><![CDATA[Polygon]]></esri_wms:FieldValue>
      </esri_wms:Field>
      <esri_wms:Field>
        <esri_wms:FieldName><![CDATA[Shape_Area]]></esri_wms:FieldName>
        <esri_wms:FieldValue><![CDATA[0.009079]]></esri_wms:FieldValue>
      </esri_wms:Field>
        ...
        <!-- there could be more <esri_wms:Field> -->
        ...
    </esri_wms:FeatureInfo>
    ...
    <!-- there could be more <esri_wms:FeatureInfo> -->
    ...
  </esri_wms:FeatureInfoCollection>
  ...
  <!-- there could be more <esri_wms:FeatureInfoCollection> -->
  ...
</esri_wms:FeatureInfoResponse>

请注意以下细节:

  • 根标签 <FeatureInfoResponse> 可包含多个 <FeatureInfoCollection> 元素。
  • 每个 <FeatureInfoCollection> 元素包含从单个 WMS 图层中识别出的所有要素的属性字段和值。
  • 每个识别出的要素的信息包含在<FeatureInfo> 标签中。请注意,每个字段的“名称-值”均成对出现。

默认的 XSLT 模板

ArcGIS Server 附带的 XSLT 模板用于支持 WMS 的功能文件中列出的格式。例如,如果打开这些模板的目录(位于 <ArcGIS Server 安装位置>\Styles\WMS),将会看到以下内容:

  • featureinfo_application_geojson.xsl
  • featureinfo_application_vnd.esri.wms_featureinfo_xml.xsl
  • featureinfo_application_vnd.ogc.wms_xml.xsl
  • featureinfo_text_html.xsl
  • featureinfo_text_plain.xsl
  • featureinfo_text_xml.xsl

根据它们的文件名可以看出,每个模板用于以便于阅读的格式(如 GeoJSON、纯文本和 XML)生成一个默认的 GetFeatureInfo 响应。

本主题起始位置显示的带蓝色标题的示例 HTML 表就是使用默认 XSLT HTML 模板生成的。另外,如果要将原始 XML 作为响应,可以将 GetFeatureInfo 请求参数 INFO_FORMAT 设置为 application/vnd.esri.wms_raw_xml。可以使用此方法来创建自定义 XSLT 模板。

自定义 GetFeatureInfo 响应

现在,我们已对 GetFeatureInfo 响应 XML 和 XSLT 模板有了初步的了解,接下来就可以深入研究两种自定义 WMS GetFeatureInfo 响应的方法。

修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值