私は何千ものサイトのセットを持っています。すべてのユーザーがマップ上で同じサイトを見るとは限りません-したがってACL。データは非GISデータベース(mssql、oraなど)に格納され、現在標準のSQLクエリで取得され、JSPを使用してクライアント(OpenLayers)に返されます。
現在のコードはすでにクライアント側のクラスタリング(クライアントの混乱は少ないですが、すべてのデータはそこにあります)、境界ボックスの取得(データのサブセットですが、すべてのサーバーにアクセスする必要がある)を実行するようにすでに最適化されています新しいデータのパン/ズーム)およびサーバー側のクラスタリング(クライアントに送信されるデータを減らすため)。
代わりに、すべてのデータに対して画像/タイルを生成します。これは、Googleマップがすべての結果に対して大量の小さな赤い点を表示する方法と似ています-http://bit.ly/d73qrw [google maps search for "coffee"]クライアントに表示します。クリックすると、情報を取得するためにWMSサービスをすばやくajaxで呼び出します。それは少なくともアイデアです。
しかし、ここに問題があります。すべてのユーザーが同じデータを表示するわけではないため、データの前に標準のWMSサービスをセットアップすることはできません。これらのタイルをオンザフライで生成したり、WMSをACL対応にする方法はありますか?
編集-2010年9月22日-Googleがタイルを生成する方法、またはその背後にあるテクノロジーを見つけました。彼らはGoogle Fusion Tablesを使用しています。テーブルにN行を格納し、データが緯度/経度を認識している場合、Fusion Table製品はその場でタイルを生成できます(!)。これは私が探している種類のものです-大量のデータを含む高性能のマップ。しかしもちろん、ACLで制御する必要があります。WMS仕様のカスタムの軽量実装を記述したり、既存の製品を変更したりすることには意味がありますか?geoserverは、ACLをサポートするために「ただ」変更するだけのように思えます。
編集-2010年9月27日-バウンティを追加してからの詳細情報。私のデータはOracleにあります。Ora空間が有効になっていません。現在、データはビジネスレベルで抽出されてデータに変換され、クライアントに送信されます。クライアントは「ドット」をマップに配置します。ACLは、DBやActivDirなどではなく、ビジネスロジックレベルで実行されます。認証は単純ですが、承認は単純ではないため、コードに取り込む必要がありました。各ユーザーに異なるドットのサブセットが表示されるマップ上で最大数千の「ドット」を提供するWMSサービスを最適に作成する方法を知りたい。答えはCQL_FILTERですか?しかし、パラメーターはどのように設定されますか?私が今持っている考えの1つは、2ステップのプロセスを実行することです。最初に社内クエリを実行して、ユーザーが表示を許可されているIDのリストを取得し、次に、CQL_FILTERパラメーターでそれらのIDを使用してWMSリクエスト文字列を作成します。このプロセスを簡略化するものはありますか?そして、これを使用する場合、エンドポイントをOLにするには、GeoServer上の実際のWMSサービスではなくDBからIDを取得するためのコードなので、このレイヤーを「WMS」レイヤーとしてOpen Layersクライアントに追加するにはどうすればよいですか?