7


5

SpatialKeyのような密度/ヒートマップの生成

SpatialKeyは、見栄えの良いヒートマップをいくつか生成します。大量のポイントを視覚化するために、内部プロジェクトでこれを行うことに関与しているものを調査しています。 どこから始めるべきかについてのアイデアについてのフィードバックを探しています(そしてそれは本当に興味深い問題です)。

ヒートマップはFlashを使用していることを知っており、ヒートマップはタイルサーバーからレンダリングされるのではなく、インタラクティブです。 これがどのように実装されるかについての最初の推測は、サーバーがFlashクライアントにグリッドを提供することです。各セルにはサーバーによって計算されたカウントがあります。 その後、Flashクライアントはグリッドのセル値に基づいて補間を行い、上記のきれいな出力を作成します。

この段階では、サーバー側でグリッドを効率的に生成する方法に興味があります(実装の前提が正しい場合)。 それが関与するようだ:

  1. 現在マップ境界内にあるもののクエリを実行する

  2. これらの境界内の各セルに対して集計サブクエリを実行する (上記の例のように、カウント、合計、または平均を行います)。

同じグリッド解像度で複数のズームレベルでこれを行うと、これを効率的に行うためにカスタム空間インデックスが必要になるようです。

代替ルートの説明をする人はいますか? 問題があれば、ここではPostGISを使用して空間インデックス用にデータをPostgreSQLに保存することに慣れていますが、何でも試してみることはできます。

2 Answer


5


単なる推測として、クライアント側のFlashでGISライブラリを実装し、これを使用して緯度と経度の座標をピクセル空間に投影していることを想像します。 次に、ピクセルごとに集計して各ピクセルの「高さ」を決定し、円をレンダリングするのと同じようにレンダリングしますが、透明度付きのグラデーション塗りつぶしを使用し、グラデーション塗りつぶしの開始色と終了色をピクセル。 複数の円を重ねると、明るいピクセルが作成されます。

別の方法として、これをグレースケールで行い、輝度値をカラースケールにマッピングすることもできます。 それが最も効率的かもしれません。

ビジュアル分析アプリケーションで統合するための従来のツリーマップヒートマップ(例:ヒートマップSDK)を販売し、現在ではエリアを色分けする地理ヒートマップを用意しています。 標準のESRI Shapefileマップを読み取り、クライアント側ですべての投影とレンダリングを実行します(Javaではなく、Flashではなく同じコンセプトで)。 SpatialKeyも同じように機能していると思います。なぜなら、Google Mapsのようなタイルサーバーを使用している場合は、エリアフィルドレンダリングをサポートしていないからです。

このような密度のヒートマップはまだ作成していませんが、静的な画像を背景として使用していくつかのテストを実行しました。 さらに情報が必要な場合はお知らせください。開発者にどのように行ったのかを尋ねることができます。 現在、密度ベースのヒートマップが予定されている場所はわかりませんが、より多くのポイントベースの機能の開発を行っていることは知っています。

SpatialKeyは、実際には、エリアで埋められたヒートマップ(つまり:テーママップ)と密度ヒートマップの違いに関する優れた投稿を書いています。 http://blog.spatialkey.com/2010/02/comparing-thematic-maps-with-density-heatmaps/で確認できます。

密度ヒートマップを作成する良い方法を見つけた場合、視覚分析SDKに追加する価値があるため、どのようにそれを行ったかを学ぶことに興味があります。 頑張ってください。


0


実際の集計マップの合計のMapReduce、およびデータベースのGeospatial Indexingを使用して、これらのMapReduceジョブをフィードします。 私はこれとまったく同じアプローチの実装を検討していますが、マップの代わりにインターフェースの場合:) MongoDBは現時点では適しているようです。