Який найкращий спосіб відобразити тисячі полігонів у Openlayers?


10

Я намагаюся створити карту Openlayers, яка відображатиме тисячі полігонів. І коли користувач натискає на кожен, я хочу, щоб деякі метадані відображалися. Робота з цим великим набором даних здається, що це буде складно. Але я намагаюся розібратися, чи існує стандартний шлях для цього. На даний момент, я думаю, я повинен був би будь-який

  1. показувати мої багатокутники за допомогою WMS та використовувати getfeatureinfo
  2. Показуйте за допомогою WFS, завантажуйте стратегією.BBOX та використовуйте GetFeature для отримання метаданих.

Чи є логічний спосіб, коли мені не вистачає завантажувати всі ці дані на карту і мати хорошу швидкість. Я переглядав цю сторінку і намагався зрозуміти, що вони робили: http://protectedplanet.net/

Відповіді:


5

Мені не подобається стратегія BBOX, оскільки я думаю, що це може бути повільним через кількість запитів, які можуть бути створені.

Я б використав поєднання обох речей, які ви згадали.

показувати багатокутники з WMS та використовувати getfeatureinfo ... потім використовувати WFS, щоб завантажити контур функції при натисканні на неї та / або отримати додаткову інформацію з бази даних.

protectedplanet.net не використовує openlayers, а лише карти Google. Вони, ймовірно, зберігають усю інформацію у KML / KMZ.


Щиро дякую! Я здогадуюсь тоді я на вірному шляху. Але мені цікаво, чи захищений посаджений використовує KML, чи варто це робити для його швидкості? І це дані KML, які обслуговуються WFS?
KyleK

Я точно не знаю, чи це KML, лише здогадка. Але якщо це не WFS, тому що WFS використовує GML. Справа у використанні google apis та KML полягає в тому, що вам потрібно мати цей KML на загальнодоступній URL-адресі, де кожен може бачити його. Якщо це не проблема, то, можливо, ви можете спробувати. Це тому, що google поглинає цей KML на своїх серверах і повертає його назад в API. З цих двох причин я не можу використовувати API google maps через чутливість деяких проектів.
CaptDragon

Ви можете обмежити доступ до своєї загальнодоступної URL-адреси KML, щоб дозволити користувачеві-агенту, який представляє рядок аналізатора Google KML.
Сарж

3

Основний підхід тут - розділити растерізацію з взаємодією. Один із підходів (за який я частково відповідальний) - це UTFGrid , який використовувався NPR тощо, і він інтегрований у TileMill та Mapnik . Він також використовується CartoDB, а Google Maps використовує аналогічний підхід для Fusion Tables.

Захищена планета також використовує растрові плитки (наприклад, ця:) http://184.73.201.235/blue/8/78/93і за цим має живий сервер для точкових запитів (наприклад, цього ).

Re: CaptDragon: немає WFS або KML.

WMS та WFS не дадуть тобі ніде непогану ефективність для публічного сайту. Стратегія BBOX не працюватиме, якщо дозволити користувачам масштабувати.


FYI: Ви можете кешувати растрову послугу WMS, яка надасть вам плитки.
CaptDragon

1
Так, але це не головна проблема, це інтерактивність. Ви не можете кешувати спосіб роботи WFS / WMS GetFeature, оскільки вони не призначені для кешування плиткою.
tmcw

Я весь час кешую свої результати CSW, WFS та WMS GetFeature, GetRecord тощо. Це лише стандарти формату інтероперабельності і не диктують, де зберігається джерело, кешоване чи ні.
CaptDragon

Типовий запит WFS GetFeature - це запит на одну координату; кеш для цього запиту корисний лише для точних відповідностей - що є рідкістю з точки зору взаємодії користувачів. Такі альтернативи, як UTFGrid кеш-пам'ять даних і можуть оптимістично заповнювати кеш, на відміну від кешу для потенційно мільйонів одиничних координат. Таким чином стандарт диктує свою кеш-дружелюбність.
tmcw

Нічого, дякую за всю допомогу. Оскільки я використовую OpenLayers, і моя карта знаходиться в 4326 (що не підтримується TileMill), ви б рекомендували CartoDB як засіб для зберігання та доступу до моїх даних, хоча це?
KyleK
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.