UMN-mapserverでレイヤーの一部のクラスのみを表示するにはどうすればよいですか?


9

マップサーバーでシェイプレイヤーを視覚化します。ここで、このレイヤーの一部のクラスのみにリクエストを送信したいと思います。たとえば、ウォータークラスのみのリクエストと、ウッドクラスのみのリクエストが欲しいです。mapserverでこれを実現できますか?

回答:


7

これを行う別の方法を次に示します。この方法では、各クラスの式を持つ1つのレイヤーを使用します。論理式が含まれるため、この方法で行う方が少し「コストがかかります」が、実際に高負荷の状況に遭遇しない限り、違いに気付くことはありません。

各クラスには2つの部分からなる式があります。フィーチャーを描画するには、式の両方の部分がtrueである必要があります。式の最初の部分では、シェープファイルの属性に基づいて、そのクラスに分類される機能を選択します。式の2番目の部分は、URLを通じて渡された変数の値を評価します。URLで変数の名前を何にするかは関係ありません(「layer」などの予約語は使用しないでください)。式の変数名と一致する必要があります。

ここにいくつかのサンプルレイヤーがあります:

LAYER
  NAME "watersheds"
  STATUS DEFAULT
  DATA 'majclip'
  TYPE POLYGON
    CLASS
       NAME "water"
       EXPRESSION ([MAJOR] < 42 AND '%wanted%' = 'water')
       STYLE
          COLOR 0 0 255
       END
    END
    CLASS
       NAME "wood"
       EXPRESSION ([MAJOR] >= 42 AND '%wanted%' = 'wood')
       STYLE
          COLOR 0 255 0
       END
    END
END

水機能のみを描画するには、次のようなURLリクエストを使用します 。http://localhost/cgi-bin/mapserv.exe?map = / ms4w / apps / mymapfile.map&mode = map&wanted = wood

これは目標を達成するための3番目の有効な方法であるため、目標を明確に考えてください。データが頻繁に変更される場合は、このオプションを使用することをお勧めします。データが頻繁に変更されない場合は、個人的には2つのレイヤーを使用します。パフォーマンスが向上した場合は、土地利用タイプごとにシェープファイルを複数のシェープファイルに分割することもできます。(そうではないかもしれませんが、レイヤーフィルターはかなり効率的です)。Webマッピングを使用すると、データを事前に最適化すればするほど、より適切になります。


7

あなたのケースでは、木材用と水用の2つの層があるはずです。同じシェープファイルを使用して2つのレイヤーを作成できます。

次に、LAYERSパラメーターを使用して、リクエストで直接視覚化するレイヤーを選択できます。クラスは、データのさまざまな部分のみを表します(たとえば、そのレイヤーのデータのレンダリング方法)。


4

あなたが本当に、本当にそれらをすべて1つのレイヤーで必要とする場合は、名前付きスタイルを使用してこれを実現できます。詳細はこちらをご覧ください。しかし、ピーターが複数のレイヤーを提案することは、多くの点ではるかに単純なアプローチです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.