WMS リクエストでの layerDefs パラメータを使用したフィーチャのフィルタリング
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'"}