Максимальна кількість точкових особливостей у векторному шарі OpenLayers


27

З вашого досвіду, скільки точкових функцій можна додати до векторного шару OpenLayers (новий OpenLayers.Layer.Vector ("Точковий шар")), перш ніж він буде неприйнятно повільним?

Моя справа використання - відображення точок з таблиці бази даних. Користувач може вирішити, який часовий проміжок візуалізувати. Тому результат може бути від дуже мало до потенційно 100 000 балів. Я хотів би ввести розумний ліміт і попередити користувача, якщо його запит поверне більше функцій.


Чи використовується стандартний браузер? Ліміт, ймовірно, буде різним залежно від того, який браузер ви використовуєте.
Дерек Свінглі

Переважно Firefox. Це не обов'язково працювати в старих ІЕ.
underdark

1
Замість того, щоб попередити користувача, ви можете перейти від запитування векторних даних до повернення точок у вигляді WMS / зображення.
geographika

@geographika: Зазвичай я б це робив. Але користувач також повинен вирішити, до якої бази даних підключитися. Я повинен знати всі можливі бази даних і мати їх доступними через систему управління послугами. У них навіть не встановлений PostGIS, я просто отримую колони lat / lon.
underdark

Відповіді:


38

Я не маю для вас остаточної відповіді, але ви склали сторінку, де можна пограти з різною кількістю очок на карті OL: http://derekswingley.com/lab/olpts/


5
Дереку, для цього повинен бути знак "Чудова відповідь з практичним прикладом". Добре бачити відмінності в швидкості, що перевищує точки.
Mapperz

3
Дуже цікаво! Це змушує задуматися про геоіпсу. Крім того, це може бути також корисно для тестування продуктивності: craigmmills.com/geoipsum (я не знаю, чи є обмеження кількості полігонів)
simo

1
@ So4ne, що сайт двигуна програми Google помер у якийсь момент, той самий (майже 5-річний) код знаходиться тут: derekswingley.com/lab/olpts
Дерек

1
Випадання @nospor із переходу на https, оновлено, і сайт повернувся.
Дерек Свінглі

1
@DerekSwingley Я зробив оновлені зразки на основі вашої ідеї, використовуючи Leaflet, MapboxGL JS & OpenLayers 4 medium.com/@ThomasG77/… Я виставив кредити для вашого зразка
ThomasG77

5

Якщо дисплей йде повільно через занадто високий номер функції, це означає, що дані для відображення не підходять для рівня збільшення. Зазвичай, коли щільність функцій стає занадто високою, дисплей вже не можна читати (див. Цей приклад ). Навіть якби не було обмеження на обробку і всі пристрої відображення змогли відобразити 1000000000000 функцій за 0,001 на маленькому екрані, візуалізація залишатиметься неможливою.

Закон радіусу Тепфера зазначає, що щільність функції повинна залишатися під постійним порогом, незалежно від рівня збільшення. Спосіб вирішення цього питання та адаптація даних до масштабу візуалізації - це перетворення їх за допомогою операцій узагальнення, таких як ця чи інша .


На цю ж тему: gis.stackexchange.com/q/4096/162
Julien

2
Дуже правильно. Що стосується Openlayers, то для цього використовується кластерна стратегія . Див. Приклад: openlayers.org/dev/examples/strategy-cluster.html
simo

1
Для мого поточного застосування я просто підключив (GPS) точки до ліній (доріжок). Це вже значно покращує час надання.
андеркап

3

Я не думаю, що дати відповідь на це питання неможливо. Точка та полігони візуалізації повністю залежать від браузера та апаратного забезпечення (процесора та пам'яті), а не з OpenLayers. У мене виникли проблеми з Openlayers та IE6 для однієї з озерних (багатокутників) візуалізації. але, він непогано завантажений у Firefox. І найкращим варіантом буде моніторинг пам’яті та використання процесора за допомогою Chrome чи деяких інструментів.


1

Як і інші, я не маю відповіді на це питання, але застосування стратегії BBox могло б допомогти вам зберегти лише необхідні дані, оскільки вона відображає лише функції, розташовані в заданому полі обмеження.


1

У OpenLayers 6 є точковий рендерінг WebGL, який повинен дозволяти вам надати 100 тисяч тисяч функцій із фільтром на основі часу. Ви можете перевірити останню версію офіційного семінару за посиланням https://openlayers.org/workshop/uk/webgl/ .

Для OpenLayers 2, яку я дійсно не рекомендую використовувати більше, максимальна допустима частота кадрів буде лише декілька сотень функцій.


0

Я натрапив на подібний випадок використання, не впевнений, що він відповідатиме вищезазначеним потребам, але Clusteringв OL 5 - це те, що я прийняв.

Кластеризація, як підказують слова, займає групу очок і об'єднує їх в одну точку, наприклад, у вас є 100 балів у конкретному місті, всі точки будуть видні як одна точка від масштабування, скажімо, 4але як окремі точки з масштабування скажіть, 10що ви можете зробити, коли зум4 ви можете приєднатись до цих точок як єдине, а це сприяє зменшенню кількості балів, які будуть надані в певній області.

Іншими словами, скажімо, у вас на карті 10 000 очок, які потрібно винести на карту, і вони досить близькі один до одного, тому ви можете робити кластери з них і зменшити візуалізацію, і коли користувач збільшує вас, ви продовжуєте ламати кластери. Це забезпечить вам менше рендерінгу та кращу ефективність.

Задовільне виконання. Посилання на приклади кластеризації на Openlayers


Не могли б ви додати короткий підсумок пов’язаної сторінки? Посилання можуть зірватися з часом, залишивши вашу відповідь марною, як зараз.
Кантан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.