Skip To Content

Filtrage des entités à l'aide du paramètre layerDefs dans les requêtes WMS

Dans la spécification WMS, aucune méthode de filtrage ne vous permet d'ajouter une chaîne de requête ou une clause WHERE dans une requête. Bien que les filtres puissent être appliqués à l'aide des règles dans le chemin SLD, vous devez recréer la portion des symbologies dans le chemin SLD en même temps.

ArcGIS Server implémente également un paramètre spécifique aux fournisseurs, nommé layerDefs, à la fois pour les opérations WMS GetMap et GetFeatureInfo. Il permet au client de filtrer plus facilement les entités de couches individuelles dans la carte exportée en spécifiant les expressions de définition de ces couches.

Le paramètre layerDefs provient du paramètre layerDefs du service de carte ArcGIS Server. Pour plus d'informations sur ce paramètre, reportez-vous à la documentation sur l'API REST d'ArcGIS.

Utilisation du paramètre layerDefs dans une requête

Voici quelques exemples d'utilisation du paramètre layerDefs dans les requêtes GetMap et GetFeatureInfo.

Remarque :

N'oubliez pas que les expressions de filtre dans le paramètre layerDefs sont mutuellement exclusives par rapport à celles définies dans le chemin SLD et/ou SLD_BODY. Lorsque les deux sont présentes dans une requête GetMap ou GetFeatureInfo, layerDefs a une priorité moindre et sera ignoré.

GetMap

Filtrez la couche de pays en affichant uniquement les pays dont la population est supérieure à un million: layerDefs={"country":"POP_CNTRY>100000000"}.

Requête d'exemple :

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

Filtrez la couche de pays afin d'obtenir uniquement les informations concernant les pays dont la population est supérieure à un million et dans lesquels coule le fleuve Amazone : layerDefs={"country":"POP_CNTRY>100000000","rivers":"NAME LIKE 'Amazon'"}.

Requête d'exemple :

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'"}