Варіанти відображення векторів PostGIS у OpenLayers


22

Я дуже новачок у веб-картах, тому це питання може бути трохи помилковим.

Я хочу мати дуже простий веб-інтерфейс за допомогою OpenLayers (або навіть Google Maps, якщо це буде простіше), який може відображати ряд таблиць точок і полігонів, які зараз перебувають у PostGIS.

Я хочу, щоб це було якомога простіше (і з максимально низьким рівнем обслуговування):

  • Мені не хочеться створювати плитки (якщо немає дуже вагомих причин) або мати масивний складний шар проміжного програмного забезпечення.
  • Продуктивність не повинна бути феноменальною, оскільки це для внутрішнього використання, і, таким чином, не потрібно масштабувати понад пару одночасно користувачів.
  • Стилізація векторних шарів має мінімальне значення.
  • Інструменти з відкритим кодом є більш переважними, оскільки у мене майже немає бюджету на це.

Який для цього рекомендований підхід?

Відповіді:


14

Найпростіший спосіб налаштування онлайн-карти з джерел PostGIS - це використання Geoserver. Посібник користувача Geoserver містить гарне введення для використання PostGIS як джерела даних . Ви в основному додаєте сховище даних, що містить інформацію про з'єднання, і після цього ви можете опублікувати будь-яку таблицю, що містить геометрії. Окрім PostGIS, ви також можете використовувати багато інших джерел даних:

alt текст

З внутрішнього веб-інтерфейсу Geoserver ви також можете попередньо переглянути шари на веб-сторінці OpenLayers. Ви можете використовувати джерело цієї сторінки попереднього перегляду для створення власної програми OpenLayers.

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

За замовчуванням Geoserver не плитка, а OpenLayers не запитує плитки. Якщо вам не потрібні високопродуктивні, вам все одно не потрібно морочитися плиткою.

Особисто я вважаю, що OpenLayers простіший у використанні, ніж API Google Maps, і ви будете незалежні від Google. Якщо вам потрібна фонова карта, ви можете замість цього заглянути в OpenStreetMap.


8

Якщо ви дійсно не хочете великого проміжного шару, ви можете використовувати TinyOWS ( http://tinyows.org/trac ) - я ніколи цього не пробував, але він стверджує, що він малий і швидкий. Крім того, він використовує стандарти OGC, тому якщо ви вирішите опублікувати для широкої аудиторії, і він не може продовжувати перемикатися на GeoServer або MapServer, ви зможете продовжувати використовувати той самий код клієнта без змін.


ах так, забув про tinyOWS, здавалося, трохи важко налаштувати, і його єдине для PostGIS
dodobas

питання задавали лише про постгігів
Ян Тертон

6

Ви можете використовувати будь-яку програму, яка може сервер WFS-протоколу. За допомогою Openlayers ви можете легко використовувати дані PostGIS через протокол WFS. Є кілька додатків FLOSS, які можуть це зробити. Наприклад, FeatureServer , Geoserver , картсервер ... Якщо ви новачок в веб-картографії я б порекомендував Geoserver'у , тому що це дуже легко , щоб отримати це почалося.

Дивіться цей приклад Openlayers з WFS .


Остання ланка розірвана.
Адам Матан

1
Я спробував їх усіх, і вони працюють. Можливо, останній був тимчасовим вниз.
Маріо Мілер

4

Openlayers підтримує велику кількість форматів векторних даних (GeoJSON, GML, KML ..), які можна відображати та стилювати за допомогою шару OpenLayers Vector.

Можливо, найпростішим середнім програмним забезпеченням може бути FeatureServer, який може подавати дані PostGIS у більшість форматів, підтримуваних OL. Це легко налаштувати та підтримує прості просторові запити / атрибути.

Але, якщо вам потрібно щось більш потужне, Geoserver може стати життєздатним рішенням.


Немає любові до mapserver :(
dassouki

1
насправді mapserver було моїм першим коханням, датувались десь близько 2001 року, але ... ми просто почали багато битися, тому нам довелося гальмувати :)
dodobas

Отже, якщо я даю відкритим слоям URL-адресу для geojson / gml / kml, він може просто їх надати?
fmark

1
так, але якщо вам потрібна фільтрація, навіть за допомогою простого обмежувального поля, тоді вам потрібно використовувати
WFS

4

Ви можете подавати json, kml amd wkt з postgis, як st_asgeojson (), st_asKML () для скрипту PHP або JSP сервера, а потім використовувати клас ajax openlayers для підключення джерела даних з вашого сервера


Я думаю, що найкраще підходить для мого поточного використання. Якщо це занадто повільно, я спробую TinyOWS та інші більш важкі сервери карт. Чи можете ви навести приклад коду для сторони openlayers, припускаючи, що у мене є сценарій PHP десь повертаючи geojson / kml / wkt?
fmark

@chaipat: Чи є у вас приклад (php скрипт та відповідний фрагмент openlayers)?
underdark

2

Ви можете легко зробити це за допомогою Geomajas, який буде читати ваші дані з бази даних, використовуючи Hibernate або Geotools. Це все на Java, що може бути проблемою, якщо ви віддаєте перевагу іншим мовам.


1

Що ж ви можете зробити, це використовувати бібліотеку OpenLayers та мову сервера, щоб перенести всі типи геометрії Postgis у Openlayers. Вам буде потрібно:

  • Openlayers.Layer.Vector для створення шару векторних даних
  • Openlayers OpenLayers.Protocol.HTTP для читання даних із сервера Postgis
  • OpenLayers.Strategy.Fixed необов’язково
  • OpenLayers.Feature.Vector всі вектори є з цього класу у клієнта
  • OpenLayers.Format.GeoJSON або OpenLayers.Format.JSON
  • Мова серверної сторони, щоб зробити запит на Postgis та накачати геометрії до клієнта
  • Аналізатор JSON на сервері та клієнті для транспортування даних у цей формат

Завдяки цьому ви можете дуже легко відображати їх без більше програмного забезпечення.

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