Как подключить OpenLayers к данным PostGIS?


10

Я прочитал в OpenLayers, как загружать векторные файлы KML, GeoJSON и т. Д. В OpenLayers. Но как я могу подключиться к данным PostGIS. Если нет, почему я должен загружать свои данные в PostGIS, а не помещать свои данные напрямую с помощью WebServices. Я что-то пропустил?

И я хочу загрузить эти векторные данные, чтобы можно было увидеть атрибуты, нажав на объекты. Мне нужен PostGIS, потому что в будущем я хочу включить запросы. Я думаю, что это возможно только при поддержке базы данных, такой как PostGIS. Но как использовать OpenLayers?

Я прочитал Руководство для начинающих по OpenLayers, но нигде не упоминается. Пожалуйста помоги!!

Ответы:


26

К сожалению, вы не можете подключить веб-страницу напрямую к базе данных из-за проблем безопасности, обычно вам нужно какое-то промежуточное программное обеспечение, чтобы соединить их вместе.

Так что для вашего примера и если вы хотите придерживаться программного обеспечения с открытым исходным кодом, вы можете легко использовать GeoServer в качестве своего географического сервера для передачи ваших данных из базы данных PostGIS на веб-страницу OpenLayers HTML.

Это хорошо, потому что GeoServer будет обслуживать данные стандартным способом, OGC Web Map Server (WMS) или Web Feature Service (WFS), и оба понимают OpenLayers и многие другие API (ESRI, Leaflet и т. Д.) И другие Desktop Программное обеспечение ГИС (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 я определяю данные и стиль => Javascript-функция вызывает php-скрипт через GET для извлечения данных из Postgis => Функция стилирует данные для рендеринга в Openlayers 3. Весь сценарий можно увидеть в Есть ли простой способ использовать Postgis-геойсон в Openlayers 3?

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.