WMS 仕様には、GetMap リクエストにクエリ文字列や Where 句を追加できるフィルタリング メカニズムがありません。SLD のルールを使用してフィルターを追加できますが、同時に SLD のシンボル部分を再作成する必要があります。
必要に応じて、ArcGIS Server では、GetMap オペレーションと GetFeatureInfo WMS オペレーションの両方でベンダー固有のパラメーター layerDefs を実装できます。これは、クライアントにとって、エクスポートしたマップの個々のレイヤーの定義式を指定することによりこれらのレイヤーのフィーチャをフィルターすることができる軽量なやり方です。
layerDefs パラメーターは、ArcGIS Server マップ サービスの layerDefs パラメーターから派生しています。このパラメーターの詳細については、ArcGIS Server REST API ドキュメントをご参照ください。
リクエストでの layerDefs の使用
以下の例では、GetMap リクエストおよび GetFeatureInfo リクエストで 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 万人を超える人口を持ち、アマゾンという名前の川がある国の情報のみを取得して国レイヤーをフィルターします。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'"}