11

この投稿と同様の問題があります。埋め込まれたGoogleマップに最大1000個のポリゴンを表示する必要があります。ポリゴンはSQLデータベースにあり、 http: //alpha.foresttransparency.org/concession.1.kmlのようなカスタムHttpHandler(ASP.NET内)を使用して、各ポリゴンをその場で単一のKMLファイルとしてレンダリングできます。。

私の(非常に高速な)開発マシンでも、数十の形状をロードするのに時間がかかります。つまり、2つの質問があります。

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

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

4

5 に答える 5

13

2番目の質問: Douglas-PeuckerGeneralizationAlgorithmが必要です

于 2008-10-10T21:02:55.143 に答える
2

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

2 番目の質問については、Mark Bessey の提案を使用します。

于 2008-10-10T21:31:19.970 に答える
0

KMLについてはよくわかりませんが、質問2の通常の解決策は、ポイントを繰り返し処理し、特定のサイズ未満の線分を削除することだと思います。これにより、場合によっては「不幸な」影響が発生しますが、比較的高速で簡単に実行できます。

于 2008-10-10T21:00:56.613 に答える
0

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

幸運を :)

于 2008-10-10T21:01:28.407 に答える
0

少し前に #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. ポイント数 >Max
于 2008-10-23T06:55:56.640 に答える