OpenLayersベクターレイヤーのポイントフィーチャの最大数


27

あなたの経験では、OpenLayersベクターレイヤー(新しいOpenLayers.Layer.Vector( "ポイントレイヤー"))を使用できないほど遅くなる前に、いくつのポイントフィーチャを追加できますか?

私の使用例は、データベーステーブルからポイントを表示することです。ユーザーは、視覚化する時間枠を決定できます。したがって、結果はごく少数から潜在的に100,000ポイントになる可能性があります。妥当な制限を導入し、クエリがより多くの機能を返す場合はユーザーに警告したいと思います。


使用されている標準ブラウザはありますか?制限は、使用しているブラウザによって異なる可能性があります。
デレクスイングリー

ほとんどがFirefox。古いIEで動作する必要はありません。
暗闇

1
ユーザーに警告するのではなく、ベクターデータの要求からポイントをWMS /イメージとして返すように切り替えることができます。
geographika

@geographika:通常はそうします。ただし、ユーザーは接続するデータベースを決定することもできます。考えられるすべてのデータベースを知り、WMSで利用できるようにする必要があります。PostGISもインストールされていません。lat/ lon列を取得するだけです。
暗闇

回答:


38

決定的な答えはありませんが、OLマップ上でさまざまなポイント数で遊ぶことができるページを作成しました:http : //derekswingley.com/lab/olpts/


5
Derekには、そのための「実用的な例のあるグレートアンサー」バッジが必要です。ポイントを横切る速度の違いを見るのに良い。
マッパーズ

3
とても興味深い!ジオイプサムを考えさせます。また、それはテストのパフォーマンスにも同様に使用することができます:craigmmills.com/geoipsum(ポリゴン数の制限がある場合、私は知りません)
SIMO

1
@ So4neは、Google App Engineサイトがある時点で死んだことを示しています。同じ(ほぼ5年前の)コードはこちらです: derekswingley.com/lab/olpts
デレクスウィングリー

1
httpsへの切り替えからの@nospor falloutが更新され、サイトが復活しました。
デレクスイングリー

1
@DerekSwingley Leaflet、MapboxGL JS、およびOpenLayers 4 medium.com/@ThomasG77/を使用して、あなたのアイデアに基づいて更新されたサンプルを作成しました...サンプルにクレジットを入れました
-ThomasG77

5

機能番号が高すぎるために表示が遅くなる場合は、表示するデータがズームレベルに適していないことを意味します。通常、フィーチャの密度が高くなりすぎると、ディスプレイを読み取ることができなくなります(この例を参照)。処理の制限がなく、すべての表示デバイスが1000000000000の機能を0.001で小さな画面に表示できたとしても、視覚化は不可能なままです。

Töpferの基数の法則では、ズームレベルに関係なく、フィーチャの密度は一定のしきい値を下回らないようにします。この問題を解決し、可視化スケールにデータを適合させる方法は、使用して、それを変換することです汎化操作のように、この1またはこの他のものを



2
本当です。Openlayersに関しては、クラスター戦略を使用して処理します。例を参照してください:openlayers.org/dev/examples/strategy-cluster.html
SIMO

1
現在のアプリケーションでは、(GPS)ポイントをライン(トラック)に接続するだけです。これにより、レンダリング時間が大幅に改善されます。
暗闇

3

この質問にしっかりした答えを出すことは不可能だと思います。レンダリングポイント/ポリゴンは、OpenLayersではなく、ブラウザーとハードウェア(CPUとメモリ)に完全に依存します。Lake(Polygon)レンダリングの1つでOpenlayersとIE6に問題がありました。しかし、Firefoxではうまくロードされました。そして、最良のオプションは、ChromeでメモリとCPU使用率を監視するか、いくつかのツールの方が良いでしょう。


1

他の人と同じように、私はその質問に関しては答えがありませんが、BBox戦略を適用すると、指定された境界ボックス内にある機能のみが表示されるため、必要なデータのみを保持できます。


1

OpenLayers 6には、時間ベースのフィルタリングで数十万の機能をレンダリングできるWebGLポイントレンダラーがあります。https://openlayers.org/workshop/en/webgl/にある公式ワークショップの最新バージョンをご覧ください

OpenLayers 2では、これ以上使用することはお勧めしませんが、許容されるフレームレートの最大値は、数百の機能のみになります。


0

上記のニーズに合うかどうかはわかりませんが、似たようなユースケースを見つけましたがClustering、OL 5で採用しました。

言葉が示すようにクラスタリングすることで、特定の都市で100ポイントを持って、たとえば、すべての点がLETだと言うのズームから1ポイントとして表示されますポイントのグループを取り、単一のポイントでtogtherそれらをマージする4が、レッツのズームから個々の点として、つまり10、ズームが4可能であれば、それらのポイントを1つとして結合できます。これにより、特定の領域にレンダリングされるポイントの数を減らすことができます。

言い換えると、地図上に10,000個のポイントをレンダリングし、それらが互いに非常に近いため、それらのクラスターを作成してレンダリングを削減し、ユーザーがズームインしてもクラスターを破壊し続けるとしましょう。これにより、レンダリングが少なくなり、パフォーマンスが向上します。

満足のいくパフォーマンス。Openlayersのクラスタリング例へのリンク


リンクされているページの短い要約を追加していただけますか?リンクは時間とともに壊れ、現在の答えが役に立たなくなる可能性があります。
カンタン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.