Jumlah maksimum fitur titik dalam lapisan vektor OpenLayers

27

Dalam pengalaman Anda, berapa banyak fitur titik yang dapat ditambahkan ke lapisan vektor OpenLayers (OpenLayers.Layer.Vector baru ("Point Layer")) sebelum ia berjalan sangat lambat?

Kasus penggunaan saya adalah untuk menampilkan poin dari tabel database. Pengguna dapat memutuskan kerangka waktu mana yang akan divisualisasikan. Oleh karena itu hasilnya dapat dari sangat sedikit hingga berpotensi 100.000 poin. Saya ingin memperkenalkan batas yang masuk akal dan memperingatkan pengguna jika permintaannya akan mengembalikan lebih banyak fitur.

underdark
sumber
Apakah ada browser standar yang digunakan? Batas kemungkinan akan berbeda tergantung pada browser yang Anda gunakan.
Derek Swingley
Sebagian besar Firefox. Itu tidak harus bekerja di IE lama.
underdark
1
Daripada memperingatkan pengguna Anda bisa beralih dari meminta data vektor untuk mengembalikan poin sebagai WMS / gambar.
geografi
@geographika: Biasanya saya akan melakukannya. Tetapi pengguna juga harus memutuskan basis data mana yang akan dihubungkan. Saya harus tahu semua database yang mungkin dan memilikinya tersedia melalui WMS. Mereka bahkan belum menginstal PostGIS, saya hanya mengambil kolom lat / lon.
underdark

Jawaban:

38

Saya tidak punya jawaban pasti untuk Anda, tetapi Anda saya mengumpulkan halaman di mana Anda dapat bermain-main dengan jumlah poin yang berbeda pada peta OL: http://derekswingley.com/lab/olpts/

Derek Swingley
sumber
5
Derek harus ada lencana 'Jawaban Hebat dengan contoh praktis' untuk itu. Bagus untuk melihat perbedaan dalam poin kecepatan atasnya.
Mapperz
3
Sangat menarik! Itu membuat saya berpikir ke geoipsum. Atau, dapat digunakan juga untuk menguji kinerja: craigmmills.com/geoipsum (saya tidak tahu apakah ada batas nomor poligon)
simo
1
@ So4ne bahwa situs mesin app google meninggal di beberapa titik, kode yang sama (hampir 5 tahun) ada di sini: derekswingley.com/lab/olpts
Derek Swingley
1
@nospor jatuh dari beralih ke https, diperbarui dan situs kembali.
Derek Swingley
1
@DerekSwingley Saya telah membuat sampel yang diperbarui berdasarkan ide Anda menggunakan Leaflet, MapboxGL JS & OpenLayers 4 medium.com/@ThomasG77/... Saya memberikan kredit untuk sampel Anda
ThomasG77
5

Jika tampilan menjadi lambat karena nomor fitur terlalu tinggi, itu berarti bahwa data untuk ditampilkan tidak cocok untuk tingkat zoom. Biasanya, ketika kepadatan fitur terlalu tinggi, tampilan tidak dapat dibaca lagi (lihat contoh ini ). Bahkan jika tidak ada batas pemrosesan dan semua perangkat layar dapat menampilkan fitur 1000000000000 dalam 0,001 pada layar kecil, visualisasi akan tetap mustahil.

Hukum radix Töpfer menyatakan bahwa kepadatan fitur harus tetap di bawah ambang batas konstan apa pun tingkat zoom. Cara untuk mengatasi masalah ini dan mengadaptasi data ke skala visualisasi adalah untuk mengubahnya menggunakan operasi generalisasi seperti ini atau ini lainnya .

Julien
sumber
Pada topik yang sama: gis.stackexchange.com/q/4096/162
julien
2
Sangat benar. Dan mengenai Openlayers, ia menggunakan strategi cluster untuk mengatasinya. Lihat contoh: openlayers.org/dev/examples/strategy-cluster.html
simo
1
Untuk aplikasi saya saat ini, saya cukup menghubungkan titik (GPS) ke jalur (trek). Itu sudah meningkatkan waktu rendering secara signifikan.
underdark
3

Saya pikir tidak mungkin memberikan jawaban yang kuat untuk pertanyaan ini. Titik render / poligon sepenuhnya tergantung pada browser dan perangkat keras (CPU & memori) tidak dengan OpenLayers. Saya punya masalah dengan Openlayers dan IE6 untuk salah satu rendering Lake (Polygon). tapi, itu dimuat dengan baik di Firefox. Dan pilihan terbaik adalah memantau penggunaan memori dan CPU dengan Chrome atau beberapa alat akan lebih baik.

Senthil
sumber
1

Seperti yang lain, saya tidak punya jawaban mengenai pertanyaan itu, tetapi menerapkan strategi BBox dapat membantu Anda menjaga hanya data yang diperlukan karena hanya menampilkan fitur yang berada di dalam kotak batas yang diberikan.

simo
sumber
1

Di OpenLayers 6, ada penyaji titik WebGL yang seharusnya memungkinkan Anda membuat 100-an dari ribuan fitur, dengan penyaringan berbasis waktu. Anda Mungkin ingin melihat versi terbaru dari bengkel resmi di https://openlayers.org/workshop/en/webgl/ .

Dengan OpenLayers 2, yang saya benar-benar tidak merekomendasikan untuk menggunakan lagi, maksimum untuk frame rate yang dapat diterima akan menjadi beberapa ratus fitur saja.

ahocevar
sumber
0

Saya tersandung pada kasus penggunaan yang sama, tidak yakin apakah itu akan sesuai dengan kebutuhan yang disebutkan di atas tetapi Clustering dalam OL 5 adalah apa yang saya adopsi.

Pengelompokan seperti kata-kata menyarankan mengambil sekelompok poin dan menggabungkan mereka ke titik lain misalnya Anda memiliki 100 poin di kota tertentu semua poin akan terlihat sebagai satu poin dari zoom katakanlah 4tetapi sebagai poin individu dari zoom mari katakan 10apa yang bisa Anda lakukan adalah ketika zoom dilakukan4 Anda dapat bergabung dengan titik-titik tersebut sebagai satu, apa yang dilakukan ini membantu mengurangi jumlah poin yang akan diberikan di area tertentu.

Dengan kata lain, katakanlah Anda memiliki 10.000 poin untuk ditampilkan di peta dan mereka cukup dekat satu sama lain, sehingga Anda dapat membuat kelompok mereka dan mengurangi rendering dan ketika pengguna memperbesar Anda terus melanggar kelompok. Ini akan memastikan bahwa Anda memiliki rendering yang lebih sedikit dan kinerja yang lebih baik.

Kinerja yang memuaskan. Tautan ke contoh Clustering di Openlayers

Jashanpreet Bhullar
sumber
Bisakah Anda menambahkan ringkasan singkat dari halaman yang ditautkan? Tautan dapat terputus dengan waktu, meninggalkan jawaban Anda tidak berguna seperti sekarang.
Kantan