2015-11-08 15 views
6

ユーザーが識別子のセットを入力し、それらの識別子に関連するマップ上のドットのセットが表示されるWebアプリケーションを作成します。Shiny/Leaflet/Rでズームレベルでマーカークラスタリングを変更する

問題は、このデータは数十万〜数十万の数であっても、潜在的に何百万という数になる可能性があります。この可能性を考えれば、私は軽いタックを取りたいです。以下は理想的な集計動作です。

低ズームレベルでは、これらのドットを状態(適切なシンボルサイズ/色が強度を示し、ドットは状態重心を中心にしている)によって集計したいと考えています。わずかに高いズームレベルでは、小さなポリゴンによってカウントに分割されます。さらに高いズーム、さらに小さなポリゴンで。集約されていない場合、マップ上の点の数が〜500未満になると、点をプロットします。

これらのポリゴンは既に決定されており、各ドットはそのデータ内に、そのポリゴンの下にあるポリゴンIDを持っています。

ドットはランダムに各ポリゴン内にプロットされているため、実際にポリゴン内のドットの分布は問題になりません。あるいは、ドットがプロットされたポリゴンを無視する集約は、情報を消去します。私が探している方法で集約する簡単な手段があれば、私に知らせてください)

さまざまな理由(私は、私はRプログラマです)私はR内のチラシパッケージの範囲内で作業しています。この方法でズームに応じて集計レベルを変更できる方法はありますか?

私は一緒にそれらの状態のための国勢調査や郡のための重心と一緒に、比較的小さなサブセット(1つのエンティティ、3つの状態、〜10K観測)を含むおもちゃのデータセットを入れています。

http://s000.tinyupload.com/index.php?file_id=00048836337627834343

+2

ユーザー 'cluster = clusterOptions()'があれば、既にズームすることでクラスタ化するオプションがあります。あなたはそれ以上のことをしようとしていますか? – jenesaisquoi

+0

はい...パラグラフ5で説明したように、ポリゴン境界を消去/無視するため、既存のクラスタをズームで使用することはできません。特定のドットがどのポリゴンに入ったのかは本当に重要なものです...これらの境界線を消去するか、または偶然にお互いの近くに落ちたドットをグループ化することは望ましくない動作です。 – Faydey

+0

私たちが遊ぶことができるように、いくつかのポイントでおもちゃのデータセットを与えることができますか? – NicE

答えて

1

これはまさに答えではないが、それはほとんどのコメントに収まらないだろう。

あらかじめ定義された地理的エリアごとに集計されたデータ(点数/マーカーの数?)を表示したい場合は、ズームレベルを低くしてマージします(都市、郡、州などがあります)。

JavaScriptの場合でも、私はこのユースケースに対してすぐに使用できるソリューションは認識していません。いくつかの可能性のある回避策がありますが、Rで簡単に実行できるかどうかわかりません。

通常の回避策は、自動クラスタリングを取り除き、各ズームレベルで適切なデータ集約アルゴリズム(あなたは親ポリゴンIDに頼ることができるので、それほど困難ではありません)。次に、ズームが変化したときにマーカーを追加/削除するだけです。

残念ながら、これはMarkerClusterからアニメーションとカバレッジ表示を取得しないことを意味します。

また、このスレッド[Question] Build clusters depending on some geographical entity #521からLeaflet.markercluster issue GitHubのページに興味がある可能性があります。ユースケースは何とか似ていますが、実装の例を見ることができますが、一般的で信頼性の高いソリューションでは出力されませんでした。

+0

ありがとうございます。リンクの結果が気に入っていますが、Rでどのように実装できるかはわかりません。難しいと思っています。 マップに追加する前に、さまざまな集計レベルで集計を行い、その時点でマップ上にあるドットだけ(ズームレベルに応じて)マップに追加するという考えがありました。 (まあ、理想的にはマップ上にあるもの+周辺のビットで、地図の境界線がその周囲に移動したときに再描画するだけです) 私はまだこれをやっています。いくつかの奇妙なエラーを経験する。 – Faydey

関連する問題