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

6/13/2014