2

WMS や WFS だけでなく、通常のリクエストで使用する mapfile に空間フィルターを設定する方法があるかどうかは誰でも知っていますか? 私たちのシステムのこれらのフィルターは動的であるため、この空間フィルターは四角形だけでなく、任意の種類の多角形にする必要があります。ユーザーは多角形を描画したり、多角形レイヤーから選択したりできます。これは、ユーザーがマップ機能のないレガシー デスクトップ アプリケーションを使用し、Mapserver に画像を要求するだけのシステムであるため、Mapserver 側でこれらのフィルタリングを行う必要があります。

簡単に言うと、例を次に示します。ユーザーは、通りの名前 (ラベル付きのポイント) や地区 (ポリゴン) などのデータを含むレイヤーを持っています。そのうちの 1 人は、第 2 地区にある通りだけを見たいと考えているかもしれません。そのため、Mapserver に残りの通りを隠した画像を生成させたいと考えています。もちろん、街路レイヤーには、街路がどの地区にあるかについての情報はありません

この質問をするのに役立ついくつかのこと:

  • リクエストは WMS ではなく CGI ですが、それが役立つ場合は変更できます
  • 私はMapscriptもOpenLayersやuDigのようなクライアントも使用していません
  • レイヤーには属性リレーションがなく、これからもありません
  • LAYER セクションの FILTER パラメータについては知っていますが、属性フィルタリング専用です
  • 「フィルターエンコーディング」(SLDに含まれています)について読みましたが、機能させることができず、WFSのみのようです
  • CQL を見たことがありますが、Mapserver では直接サポートされておらず、SLD を介してのみサポートされています

Mapserver で画像生成のための空間フィルタリングをどのように行いますか?

ありがとう

4

2 に答える 2

1

私が知る限り、一般に、空間/非空間クエリを実行するには2つの方法があります。1 つ目は、wms 呼び出し URL でパラメーターを使用するなど、フィルター エンコーディングを使用することです。例: http://.../mapserv?map=..¶m=value

これを行う別の方法は、リクエスト本文でフィルターを使用することです。サーバーへのポスト リクエストを作成できると仮定すると、1 つのフィルターで複雑な空間/非空間クエリのフィルターを使用できます。詳細については、mapserver フィルター ページを参照してください。包含、交差などの複数の空間フィルター操作が利用可能です。

マップ ファイル内のフィルターは少し異なり、データ ソース用の定義済みフィルターです。これは、顧客のリクエストが来る前であってもデータをフィルタリングするロジックがある場合に機能します。

また、SLD はレンダリング時にも機能し、データをフィルタリングします。空間フィルターと非空間フィルターの両方でも機能します。ただし、getmap 操作のみが反映されます。

于 2016-09-08T18:54:10.333 に答える
0

WMSリクエストを使用して、バウンディングボックス内の機能を返すことができます。

http://mapserver.org/ogc/wms_server.htmlを参照してください

BBOX = minx、miny、maxx、maxy:SRSユニットのバウンディングボックスのコーナー(左下、右上)

リクエストは次のようになります。

http://my.host.com/cgi-bin/mapserv?map=mywms.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&LAYERS=prov_bound&STYLES3%SRS=EPSG:4326&BBOX=-173.537,35.8775,-11.9603,83.8009&WIDTH=400&HEIGHT = 300&FORMAT = image / png

または、空間データベース(使用している場合)にクエリを作成し、機能IDを渡して、そこでフィルタリングすることもできます。

于 2010-01-07T22:50:49.150 に答える