OpenLayers vektör katmanında maksimum nokta özelliği


27

Deneyiminizde, alışılmadık derecede yavaş ilerlemeden önce bir OpenLayers vektör katmanına (yeni OpenLayers.Layer.Vector ("Point Layer")) kaç nokta özelliği eklenebilir?

Kullanım durumum bir veritabanı tablosundan puanları göstermektir. Kullanıcı hangi zaman diliminin görselleştirileceğine karar verebilir. Bu nedenle sonuç çok az ila 100.000 puan arasında olabilir. Makul bir sınır koymak ve sorgusunun daha fazla özellik getirmesi durumunda kullanıcıyı uyarmak istiyorum.


Kullanılan standart bir tarayıcı var mı? Sınır, kullandığınız tarayıcıya bağlı olarak büyük olasılıkla farklı olacaktır.
Derek Swingley

Çoğunlukla Firefox. Eski IE’lerde çalışmak zorunda değildir.
underdark

1
Bir kullanıcıyı uyarmak yerine, vektör verilerini istekten, noktaları bir WMS / resim olarak döndürmeye geçebilirsiniz.
geographika

@geographika: Genellikle bunu yapardım. Ancak kullanıcı hangi veritabanına bağlanılacağına da karar verir. Olası tüm veritabanlarını bilmek ve bir WMS aracılığıyla bunları kullanılabilir hale getirmek zorunda kalırdım. PostGIS yüklü bile değiller, sadece lat / lon sütunlarını alıyorum.
underdark

Yanıtlar:


38

Sizin için kesin bir cevabım yok ama siz bir OL haritasında farklı sayılarla oynayabileceğiniz bir sayfa hazırladım: http://derekswingley.com/lab/olpts/


5
Derek bunun için 'pratik örnekle Büyük Cevap' rozeti olmalı. Hız aşan noktalardaki farklılıkları görmek güzel.
Mapperz

3
Çok ilginç! Beni geoipsum için düşündürüyor. Alternatif olarak, performansı test etmek için de kullanılabilir: craigmmills.com/geoipsum (Çokgen sayı sınırı olup olmadığını bilmiyorum)
simo

1
@ Google app motor sitesi bir noktada öldüğü So4ne, aynı (neredeyse 5 yaşında) kodu burada: derekswingley.com/lab/olpts
Derek Swingley

1
@nospor fallout https'e geçiş yaptı, güncellendi ve site geri döndü.
Derek Swingley

1
@DerekSwingley Leaflet, MapboxGL JS ve OpenLayers 4 kullanarak fikrinize dayanarak güncellenmiş örnekler hazırladım 4 medium.com/@ThomasG77/… Örnek için kredi verdim
ThomasG77

5

Çok fazla özellik numarası nedeniyle ekran yavaşlarsa, gösterilecek verilerin yakınlaştırma seviyesi için uygun olmadığı anlamına gelir. Genellikle, özellikler yoğunluğu çok yükseldiğinde, ekran artık okunamaz ( bu örneğe bakın ). İşlem limiti olmasa ve tüm görüntüleme cihazları 1000000000000 özelliklerini 0.001'lerde küçük bir ekranda görüntüleyebilse bile, görselleştirme imkansız kalır.

Töpfer'in taban hukuku, özellik yoğunluğunun yakınlaştırma seviyesi ne olursa olsun sabit bir eşiğin altında kalması gerektiğini belirtir. Bu sorunu çözmek ve görselleştirme ölçeğine verileri uyarlamak için bir yolu kullanarak dönüştürmektir genelleme işlemleri gibi bu bir veya bu diğeri .



2
Çok doğru. Ve Openlayers ile ilgili olarak, bunun üstesinden gelmek için küme stratejisini kullanır . Örneğe
simo

1
Mevcut uygulamam için basitçe (GPS) noktalarını çizgilere (izlere) bağladım. Bu zaten oluşturma süresini önemli ölçüde artırıyor.
underdark

3

Bu soruya katı bir cevap vermenin mümkün olmadığını sanmıyorum. Render noktası / çokgenler tamamen OpenLayers ile değil tarayıcı ve donanıma (CPU ve hafıza) bağlıdır. Openlayers ve IE6 ile Lake (Polygon) sunumu için bir sorunum vardı. ancak, Firefox'ta güzel bir şekilde yüklendi. Ve en iyi seçenek, Chrome ile bellek ve CPU kullanımını izlemek olacaktı veya bazı araçlar daha iyi olurdu.


1

Diğerleri gibi, bu soruyla ilgili bir cevabım yok, ancak bir BBox stratejisi uygulamak , yalnızca verilen sınırlama kutusunda bulunan özellikleri gösterdiğinden yalnızca gerekli verileri tutmanıza yardımcı olabilir.


1

OpenLayers 6'da, zamana dayalı filtrelemeyle, yüz binlerce özelliği sunmanıza izin vermesi gereken bir WebGL nokta oluşturucusu vardır. Resmi çalıştayın en son halini https://openlayers.org/workshop/en/webgl/ adresinden öğrenebilirsiniz .

Gerçekten daha fazla kullanmanızı önermeyeceğim OpenLayers 2 ile, kabul edilebilir kare hızı için maksimum değer yalnızca birkaç yüz özellik olacaktır.


0

Benzer bir davaya rastladım, yukarıda belirtilen ihtiyaçlara uyup uymadığından emin değilim ama ClusteringOL 5'te benim kabul ettiğim şey bu.

Kelimeler anlaşılacağı gibi noktaların bir grup alır kümeleme ve tek noktada togther bunları birleştirmek tüm noktaları diyelim söz hakkından bir zoom itibaren bir nokta olarak görülebilecek bir kentteki 100 puan var örneğin 4ama let yılların bir zoom bireysel noktaları olarak Diyelim 10ki yapabilecekleriniz zoom olduğunda4 bu noktalara tek olarak katılabiliyorsa, bunun belirli bir alanda oluşturulacak nokta sayısını azaltmaya yardımcı şey olabilir.

Başka bir deyişle, haritada gösterilecek 10,000 puanınız olduğunu ve birbirlerine oldukça yakın olduklarını varsayalım, böylece kümeleri oluşturabilir ve görüntülemeyi azaltabilirsiniz ve kullanıcı sizi yakınlaştırdığında kümeleri parçalamaya devam edebilir. Bu, daha az görüntü oluşturma ve daha iyi performans elde etmenizi sağlayacaktır.

Tatmin edici performans. Openlayers'ta Kümeleme örneklerine bağlantı


Bağlantılı sayfanın kısa bir özetini ekler misiniz? Bağlantılar zamanla bozulabilir, cevabınızı şimdi olduğu gibi işe yaramaz olarak bırakabilirsiniz.
Kantan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.