質問

この投稿と同様の問題があります。埋め込みGoogleマップに最大1000個のポリゴンを表示する必要があります。ポリゴンはSQLデータベースにあり、 http://alpha.foresttransparency.org/concession.1.kml

(非常に高速な)開発マシンでも、数十個のシェイプをロードするのに時間がかかります。本当に2つの質問です。

  1. 特定のズームレベルを超えたら、これらをオーバーレイではなくマーカーとしてレンダリングするための適切な戦略は何ですか?

  2. 特定のズームレベルで意味をなす以上のポイントを表示しないように、ポリゴンを単純化する(ポイントの数を減らす)ための公開アルゴリズムはありますか?

役に立ちましたか?

他のヒント

最初の質問では、特定のポリゴンの面積を計算し、各ズームレベルを特定の最小面積に関連付けて、ズームレベルに応じてポリゴンが消えたりマーカーが表示されたりするようにします。

2番目の質問では、Mark Besseyの提案を使用します。

KMLについてはあまり知りませんが、質問2の通常の解決策は、ポイントを反復処理し、特定のサイズ以下の線分を削除することです。これにより、「不幸」が発生します。場合によっては効果がありますが、比較的高速で簡単です。

2つのことをお勧めします。 -接触しているポリゴンを計算して結合します。これには多くの処理と難しい計算が含まれますが、私はそれを実行したので、それが可能であることを知っています。 -PNG形式のKMLを使用する代わりに独自のオーバーレイを作成し、前の提案でそれらを組み合わせます。多くのPNGを作成する必要がありますが、クライアント上では非常に高速です。

幸運:)

少し前に#2の質問に対する解決策が必要でしたが、利用可能な行単純化アルゴリズムのいくつかを見て、独自のアルゴリズムを作成しました。

プロセスはシンプルで、うまく機能しているように見えますが、正しく実装しないと少し遅くなる可能性があります:

P [0..n] はポイントの配列です   T [n] を、ポイント P [n-1]、P [n]、P [n + 1]によって形成される三角形として定義します。 ]   Max は、この行を削減しようとしているポイントの数です。

  1. セット内のすべての可能な三角形 T [1..n-1] の面積を計算します。
  2. 最小面積の三角形 T [i] を選択します
  3. ポイント P [i] を削除して、本質的に三角形を平らにします
  4. 影響を受ける三角形の面積を再計算します T [n-1]、T [n + 1]
  5. ポイント数が>の場合、ステップ2に進みます。 Max
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top