Skip To Content

在 WMS 请求中使用 layerDefs 参数过滤要素

WMS 规范缺少过滤机制,您可以在其中在 GetMap 请求中追加查询字符串或 where 子句。 尽管可以使用 SLD 中的规则应用过滤器,但您必须同时在 SLD 中重新创建符号系统部分。

或者,ArcGIS Server 为 GetMap 和 GetFeatureInfo WMS 操作实现了称为 layerDefs 的供应商特定参数。 这为客户端提供了一种更轻量级的方式,通过为这些图层指定定义表达式来过滤导出地图中各个图层的要素。

layerDefs 参数派生自 ArcGIS Server 地图服务 layerDefs 参数。 有关此参数的详细信息,请参阅 ArcGIS REST API 文档。

在请求中使用 layerDefs

以下是一些如何在 GetMapGetFeatureInfo 请求中使用 layerDefs 参数的示例。

注:

请记住,layerDefs 参数中的过滤器表达式与 SLD 和/或 SLD_BODY 中定义的过滤器表达式是互斥的。 当两者都存在于 GetMap 或 GetFeatureInfo 请求中时,layerDefs 的优先级较低,将被忽略。

GetMap

通过仅显示人口超过 100 万的国家/地区来过滤国家/地区图层:layerDefs={"country":"POP_CNTRY>100000000"}

样本请求:

http://gisserver.domain.com:6080/arcgis/services/MyMapService/MapServer/WmsServer?VERSION=1.3.0&REQUEST=GetMap&CRS=CRS:84&BBOX=-180,-90,180,83.604158999999996&WIDTH=660&HEIGHT=318&LAYERS=country&STYLES=default&EXCEPTIONS=xml&FORMAT=image/png&BGCOLOR=0xFEFFFF&TRANSPARENT=TRUE&layerDefs={"country":"POP_CNTRY>100000000"}

GetFeatureInfo

通过仅获取人口超过 100 万且有一条名为 Amazon 的河流的国家/地区的信息来过滤国家/地区图层:layerDefs={"country":"POP_CNTRY>100000000","rivers":"NAME LIKE 'Amazon'"}.

样本请求:

http://gisserver.domain.com:6080/arcgis/services/MyMapService/MapServer/WmsServer?VERSION=1.3.0&REQUEST=GetFeatureInfo&CRS=CRS:84&BBOX=-180,-90,180,83.604158999999996&WIDTH=660&HEIGHT=318&LAYERS=country,rivers&STYLES=default,default&EXCEPTIONS=xml&FORMAT=image/png&BGCOLOR=0xFEFFFF&TRANSPARENT=TRUE&QUERY_LAYERS=country,rivers&INFO_FORMAT=text/html&I=50&J=50&layerDefs={"country":"POP_CNTRY>100000000","rivers":"NAME LIKE 'Amazon'"}

在 WMS 请求过滤图像

基于影像服务的 WMS 支持使用供应商特定参数的影像过滤。 用户可以通过 Query 参数指定条件,也可以通过 Images 参数指定图像 ID。 参数适用于从镶嵌数据集发布的服务。

图像

IMAGES 参数通过镶嵌数据集中的对象 ID 查询各个栅格。

请求:显示一个对象 ID 为 1 的图像:

http://gisserver.domain.com:6080/arcgis/services/folder/ServiceName/ImageServer/WMSServer?REQUEST=GetMap&SERVICE=WMS&VERSION=1.3.0&LAYERS=0&STYLES=&FORMAT=image/png&BGCOLOR=0xFFFFFF&TRANSPARENT=TRUE&CRS=EPSG:4326&BBOX=17.9995833333334,-161.000416666667,23.0004166666666,-153.999583333333&WIDTH=981&HEIGHT=826&images=1

请求:显示两个对象 ID 为 3 和 5 的图像:

http://gisserver.domain.com:6080/arcgis/services/folder/ServiceName/ImageServer/WMSServer?REQUEST=GetMap&SERVICE=WMS&VERSION=1.3.0&LAYERS=0&STYLES=&FORMAT=image/png&BGCOLOR=0xFFFFFF&TRANSPARENT=TRUE&CRS=EPSG:4326&BBOX=17.9995833333334,-161.000416666667,23.0004166666666,-153.999583333333&WIDTH=981&HEIGHT=826&images=3,5

QUERY

在 10.3 中,影像服务 WMS 支持新 Query 参数。 Query 参数查询基于条件的图像。

请求:显示工程名称由开始"Cotton"的图像。 在示例中,projectName 是镶嵌数据集中的自定义字段名称:

http://gisserver.domain.com:6080/arcgis/services/ServiceName/ImageServer/WMSServer?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=CRS:84&BBOX=-.00012294555236728837,-.00056041068726637587,.0038293544476327114,.0040723426808816961&WIDTH=697&HEIGHT=817&LAYERS=0&STYLES=&FORMAT=image/png&BGCOLOR=0xFEFFFF&TRANSPARENT=TRUE&Query=ProjectName like 'Cotton%25'

注:

默认情况下,Query 参数仅进行标准化查询。 有关详细信息,请参阅关于标准化查询