Як підключити OpenLayers до даних PostGIS?


10

Я читав у OpenLayers, як завантажувати векторні файли KML, GeoJSON тощо у OpenLayers. Але як я можу підключитися до даних PostGIS. Якщо ні, то чому я повинен завантажувати свої дані в PostGIS, а не безпосередньо розміщувати свої дані за допомогою WebServices. Я щось пропускаю?

І я хочу завантажити ці векторні дані, щоб можна було побачити атрибути, натиснувши на функції. Мені потрібен PostGIS, оскільки в майбутньому я хочу включити запити. Я думаю, що це можливо лише завдяки підтримці такої бази даних, як PostGIS. Але як використовувати OpenLayers?

Я читав Посібник для початківців OpenLayers, але ніде це не згадується. Будь ласка, допоможіть!!

Відповіді:


26

На жаль, ви не можете підключити веб-сторінку безпосередньо до бази даних через проблеми безпеки, як правило, вам потрібно трохи проміжного програмного забезпечення, щоб об’єднати їх разом.

Отже, для вашого прикладу, і якщо ви хочете дотримуватися програмного забезпечення з відкритим кодом, ви можете легко використовувати GeoServer як ваш географічний сервер для подачі ваших даних із вашої бази даних PostGIS на веб-сторінку HTML OpenLayers.

Чому це добре, це те, що GeoServer буде обслуговувати дані стандартним чином, сервер веб-карт OGC (WMS) або сервіс веб-функцій (WFS), і обидва вони розуміють OpenLayers та багато інших API (ESRI, Leaflet тощо) та інші настільні Програмне забезпечення GIS (ESRI, MapInfo, QGIS, uDig тощо)

Тож я би роздивився розпочату документацію GeoServer, яка допоможе вам підключити GeoServer до PostGIS, а потім обслуговувати дані.

http://docs.geoserver.org/stable/en/user/gettingstarted/index.html

Якщо ви не знайомі з цими видами речей, немає кращого місця для початку, ніж підручники OpenGeo

http://workshops.opengeo.org/

Я б точно дотримувався ваших даних, що знаходяться в PostGIS, якби

а) у вас багато даних; б) ви хочете виконувати запити (як у вас) і в) якщо багато людей збираються використовувати ваш додаток

Якщо ви збираєтеся запускати запити, я погляну на Web Processing Services (WPS), вони все ще "нові", але вони підтримуються в GeoServer.

Якщо у вас є невелика кількість даних і ви можете заздалегідь запустити запити, а потім просто використовувати OpenLayers для відображення, то вам слід дотримуватися використання GeoJSON з плоского файлу або навіть подивитися на TopoJSON, який набирає велику популярність у бібліотеці JavaScript D3 - дивіться тут http://bost.ocks.org/mike/map/ Підручник Майка Бостока чудовий.

Сподіваюся, що це допомагає


14

Одним із способів з'єднати це було б з GeoJSON. Ось приклад запиту бази даних PostGIS:

SELECT population,ST_AsGeoJSON(geom) FROM censusblocks

Отримавши результати запиту, ви можете зробити щось подібне:

       var geojson_format = new OpenLayers.Format.GeoJSON();
       var vector_layer = new OpenLayers.Layer.Vector(); 
       map.addLayer(vector_layer);
       vector_layer.addFeatures(geojson_format.read(featurecollection));

Де featurecollectionваш результат запиту PostGIS;

Однак майте на увазі, що якщо ваш GeoJSON дуже складний, можуть виникнути проблеми з завантаженням / рендерінгом.

Дивіться джерело цього прикладу OpenLayers для отримання додаткової інформації про цю методику


3

Я використовую PostGis разом із Openlayers 3/4 без GeoServer. Я вибрав спосіб отримання геойсона з бази даних Postgis через функцію, яку я викликаю, яка повертає дані та стилі, відповідно до моїх налаштувань.

У Javascript я визначаю дані та styling => Javascript-функція викликає php-скрипт через GET, щоб отримати дані з Postgis => стилі функцій, дані для візуалізації в Openlayers 3. Цілі скрипти можна побачити в Чи є простий спосіб використовувати Postgis-geojson у Openlayers 3?

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

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