Filtern von Features mit dem Parameter "layerDefs" in WMS-Anforderungen
In diesem Thema
Der WMS-Spezifikation verfügt nicht über einen Filterungsmechanismus, bei dem eine Abfragezeichenfolge oder eine Where-Klausel in einer GetMap-Anforderung angehängt werden kann. Obwohl die Filter anhand der Regeln im SLD angewendet werden können, müssen Sie den Symbologieteil im SLD gleichzeitig neu erstellen.
Als Alternative implementiert ArcGIS for Server anbieterspezifische Parameter mit der Bezeichnung "layerDefs" für GetMap- und GetFeatureInfo-WMS-Operationen. Auf diese Weise kann der Client die Features der einzelnen Layer durch Angabe von Definitionsausdrücken für diese Layer problemlos in der exportierten Karte filtern.
Der Parameter "layerDefs" wird aus dem Parameter "layerDefs" des ArcGIS for Server-Karten-Service abgeleitet. Weitere Informationen zu diesem Parameter finden Sie in der ArcGIS REST API-Dokumentation.
Verwenden von layerDefs in einer Anforderung
Es folgen einige Beispiele zur Nutzung der Parameter "layerDefs" in GetMap- und GetFeatureInfo-Anforderungen.
Hinweis:
Beachten Sie, dass Filterausdrücke im Parameter "layerDefs" sich im SLD und/oder SLD_BODY gegenseitig ausschließen. Wenn beide in einer GetMap- oder GetFeatureInfo-Anforderung vorhanden sind, hat "layerDefs" eine niedrigere Priorität und wird ignoriert.
GetMap
Filtern Sie den Landes-Layer, indem Sie nur die Länder mit einer Bevölkerung von mehr als einer Million anzeigen: layerDefs={"country":"POP_CNTRY>100000000"}.
Beispielanforderung:
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
Filtern Sie den Landes-Layer, indem Sie Informationen für Länder abfragen, die eine Bevölkerung von mehr als einer Million aufweisen und einen Fluss namens Amazonas enthalten: layerDefs={"country":"POP_CNTRY>100000000","rivers":"NAME LIKE 'Amazonas'"}.
Beispielanforderung:
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 'Amazonas'"}