如何在 ArcGIS WMS 中启用 layerDefs?

How to enable layerDefs in ArcGIS WMS?

我正在尝试使用 ESRI 供应商特定的 WMS 参数 "layerDefs",如下所述:

https://enterprise.arcgis.com/en/server/latest/publish-services/linux/filtering-features-using-the-layerdefs-parameter-in-wms-requests.htm

但是,由于示例中的语法中断了服务(服务器以 [​​=44=] 响应),因此我无法使其正常工作。这应该有效,但无效:

https://alaskafisheries.noaa.gov/arcgis/services/ShoreZoneFlexMapService/MapServer/WMSServer?&service=WMS&request=GetMap&layers=53&styles=&format=image%2Fjpeg&transparent=true&version=1.1.1&width=256&height=256&srs=EPSG%3A3857&bbox=-20037508.342789244,0,-10018754.171394622,10018754.171394628&layerDefs={"53":"State='AK'"}

我知道此服务支持 layerDefs,因为它适用于地图服务:

1) 没有 layerDefs: https://alaskafisheries.noaa.gov/arcgis/rest/services/ShoreZoneFlexMapService/MapServer/export?bbox=-16445389.266341925%2C5254576.417854222%2C-11798017.946604446%2C7896240.115389209&bboxSR=&layers=&layerDefs=&size=&imageSR=&historicMoment=&format=jpg&transparent=true&dpi=&time=&layerTimeOptions=&dynamicLayers=&gdbVersion=&mapScale=&rotation=&datumTransformations=&layerParameterValues=&mapRangeValues=&layerRangeValues=&f=html

2) 带有 layerDefs(底部被排除在外,因为它在阿拉斯加之外):

https://alaskafisheries.noaa.gov/arcgis/rest/services/ShoreZoneFlexMapService/MapServer/export?bbox=-16445389.266341925%2C5254576.417854222%2C-11798017.946604446%2C7896240.115389209&bboxSR=&layers=&layerDefs=3%3AState%3D%27AK%27&size=&imageSR=&historicMoment=&format=jpg&transparent=true&dpi=&time=&layerTimeOptions=&dynamicLayers=&gdbVersion=&mapScale=&rotation=&datumTransformations=&layerParameterValues=&mapRangeValues=&layerRangeValues=&f=html

注意图片的底部消失了(即被过滤掉)

在地图服务中它是第 3 层,但 WMS 将其列为第 53 层(别问,这是 ESRI!)

所以,没有layerDefs的WMS url如下:

https://alaskafisheries.noaa.gov/arcgis/services/ShoreZoneFlexMapService/MapServer/WMSServer?&service=WMS&request=GetMap&layers=53&styles=&format=image%2Fjpeg&transparent=true&version=1.1.1&width=256&height=256&srs=EPSG%3A3857&bbox=-20037508.342789244,0,-10018754.171394622,10018754.171394628

但是当包含 layerDefs 参数时服务器“不理解”请求。

你知道正确的语法是什么吗?

似乎无法在 ESRI WMS 服务中包含 layerDefs 参数。它根本行不通。我四处打听,搜索互联网并测试了我能想到的所有可能的组合。遗憾的是,这么大的公司在他们产品的基本功能上绊倒了......或者故意这样做?然后是缺乏文档和基本支持(ESRI 论坛上的问题多年来一直没有得到解答......而这个 post 到目前为止只有少数观点!)

地图服务选项与 layerDefs 一起使用(如我的问题中所述),所以这就是我现在要使用的。不幸的是,它需要额外的编码。而且我再也不会接触任何 ESRI 混合物......