GeoJSON / KMLに対するWFSの利点?


8

openlayers(2または3)またはリーフレットを使用してオンラインマップを作成する予定です。複数のレイヤーのOSMマップの上にいくつかのポイント/マーカー(〜30.000)、ポリゴン(〜500)、ラインを表示する必要があります。これらのポイントとポリゴンには、マウスオーバー、クリック、またはタッチのイベントに関する追加情報をユーザーに表示するためのメタデータ(少なくともID)が含まれている必要があります。現在、そのデータをクライアントに送信するための最良の方法を探しています。これらの機能が配置される領域全体がいくつかのセクションに分割され、ほとんどの場合、ユーザーは1つのセクションで作業します(情報の読み取り-書き込みは非常にまれなケースであり、現在実装されていません)。ただし、これらのセクションは互いに隣接して配置され、ほとんどの場合、少なくとも3つのセクションが表示されます。また、ポイントをより高いズームレベルでクラスタ化または非表示にすることもできます。

WFSについて聞いたことがありますが、GeoJSONやKMLよりも優れている点はわかりません。WFSを使用して現在のビューの境界ボックス内のフィーチャを取得することは可能ですか?MSSQLデータベースと、データベースとWebアプリケーションの間にWebサービスがあり、それが本当に利点がない場合は、GeoServerとPostgres DBをセットアップする必要はありません。また、Webサービスに通知しても問題はありません。X1、Y1とX2、Y2の間にあるレイヤーLのすべての機能を(GeoJSON、KMLなど)教えてください。WFSの利点は何ですか?方法は何ですか、あなたは行くでしょうか、この決定に関連する情報は他にありますか?


3
マップに30kのフィーチャを表示するときに問題が発生します。1k前後でパフォーマンスの問題が発生します。クラスター戦略などを使用する必要があります。
CaptDragon 2013年

はい。そしてもちろん、30kの機能はユーザーにとっても役に立ちません。
stofl 2013年

What are the advantages of WFS?それはあなたを与えることができる標準的なインターフェース(サービス)ですall features of layer L between X1,Y1 and X2,Y2 (as GeoJSON, KML or whatever)
nmtoken

回答:


8

WFSはすでにデータ形式(OGC標準の混合)を返すサービスであることを覚えておいてください。GeoJSONとKMLは単なるデータ形式であり、データを返すにはサービスを構築する必要があります。

そのため、WFSには、時間的フィルター、空間的フィルター(交差、接触、オーバーラップなど)、論理演算子、比較演算子などの高度なフィルタリング機能が含まれています。はい、ユーザーがマップをナビゲートするだけでなく、BBoxの結果をリロードするように指定できます。これはすべてそのままです。もちろん、これは広く使用されている標準であり、多くのサーバー、クライアント、アプリケーションが、前述のようにこのデータを自動的にクエリできるようにすることで読み取ることができます。

ですから、あなたが自問すべきなのは、このデータを他のクライアント、アプリケーション、サーバーに公開したいということですか。「X1、Y1とX2、Y2の間のレイヤーLのすべての機能を私に与えて」というサービスで十分ですか?それで十分ですか?それだけで十分であれば、WFSを使用する理由はありません。GeoJSONまたはKMLオプションは、おそらくすべてのオーバーヘッドなしで高速になります。しかし、将来のSOAスタイルで高度なフィルタリングを行う場合は、WFSが適しています。


ありがとうございました。クライアント、アプリ、サーバーはなくなります。そして、「Give me all ..」は、JavaScriptからデータにアクセスして変更できる(機能の状態が変化した場合にアイコンを変更する、選択した機能を強調表示する、...)ことができる限り十分です。 )
stofl 2013年

5

まず、仕様を読むことをお勧めします。WFSの最大の長所は、ベクターデータにアクセスするための公式で標準化された方法であることです。つまり、WFSを使用する場合、ホイールを再発明する必要はありません(たとえば、2人のユーザーが同時に同じ機能を編集するとどうなりますか?)。また、GeoJSONやKMLを使用するよりもWFSでデータを共有する方がはるかに簡単です(ここでも、ユーザーが要求したデータを返す関数を作成する必要はありません。データはすでにWFS仕様の一部であるためです)。

読み取り専用アクセスのレイヤーを提供する場合は、WMSを使用してみませんか?それはあなたの目的のために完全に大丈夫でなければなりません。

他にご不明な点がありましたら、お気軽にお問い合わせください。私はこのジレンマを自分で決定している最中なので、他の人の意見を読むのはいつも楽しいことです。


マップを備えたWindowsクライアントがすでにあり、多くの操作がデータベースのストアドプロシージャに既に実装されています。「WMS」:後でJavaScriptで機能にアクセスする必要があります(状態に応じてアイコンを変更し、強調表示します)。WMSベクターレイヤーで機能しますか?
stofl 2013年

2
WMSはベクターレイヤーではありません。一度読み込まれた静的ラスターイメージは変更できません。あなたができることは、ボタンクリックまたはチェックボックス変更イベントで画像を再要求し、異なるスタイルでそれらをロードすることです。
Michal Zimmermann

WMSはSVG画像を返すことができます。それは私の目にはベクターレイヤーでしょう。そしてもちろん、これらのSVG画像はアクセス可能で編集可能ですが、私は非常に低いレベルでのみ疑っています...
stofl

4

WFSは、クライアント(OpenLayers)に、WFS呼び出しのさまざまな戦略を使用して呼び出しを実行するオプションを提供します。

BBOX: reads new features when the viewport invalidates some bounds.
Cluster: for vector feature clustering.
Filter: for limiting features that get added to a layer by evaluating a filter.  The strategy maintains a cache of all features until removeFeatures is called on the layer
Fixed: requests features once and never requests new data
Paging: vector feature paging
Refresh: refreshes the layer.  By default the strategy waits for a call to refresh before refreshing.  By configuring the strategy with the interval option, refreshing can take place automatically
Save: commits newly created or modified features.  By default the strategy waits for a call to save before persisting changes.  By configuring the strategy with the auto option, changes can be saved automatically

BBOX戦略が一般的に使用されます。ベクターレイヤーは、ビューポートにあるWFSの機能のみをリクエストし、ビューポートが変更されると、追加の機能が自動的に透過的に読み込まれます。

CaptDragonが述べ、あなたの前の質問で述べたように、機能の数はOpenLayersを殺すか、ユーザーエクスペリエンスをサポート不可能にする可能性があります。

データをMSSQLデータベースに格納し、サーバー側ルーチンを記述して、Ajax呼び出しを介してデータを返し、自分でレイヤーを更新できます。クライアントは、Ajax呼び出しでビューポート境界を提供します。これが機能するには、データベースが空間を認識している必要があります。

WMSは同じデータソースからタイルを生成します。利点は、非常に迅速な実装、サーバー側のスタイル設定、およびタイル以外のデータをクライアントにダウンロードして表示しないことです。WMSでWFSを使用して、ユーザーがポイントをクリックしたときに機能情報を取得することもできます。

これらすべてのシナリオで、データベースの代わりにシェイプファイルからデータを提供することも可能です。


「WMSでWFSを使用する」とはどういう意味ですか?WMSから返されたタイルは、ポイントを認識していますか、またはここでWMSを使用する利点は何ですか?
stofl 2013年

何ができるかを理解するためには、実際に座ってすべてのOpenLayersの例を確認する必要があります。具体的には、WFSデモはこちら!
Mark Cupitt 2013年

私はその例を見てきましたが、今、私はそれをより深く調べました。OpenLayers WFSコントロールがそのデモでWMSを使用するのは、WMSレイヤーからURLを取得することだけです。そのため、WMSのメリットはまだわかりません。
stofl 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.