Варианты отображения векторов PostGIS в OpenLayers


22

Я очень новичок в веб-картографии, поэтому этот вопрос может быть немного ошибочным.

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

Я хочу, чтобы это было как можно проще (и как можно меньше обслуживания):

  • Я не хочу создавать плитки (если на то нет веских причин) или иметь массивный, сложный слой промежуточного программного обеспечения.
  • Производительность не должна быть феноменальной, поскольку она предназначена для внутреннего использования и, следовательно, не должна выходить за рамки пары одновременно работающих пользователей.
  • Стилизация векторных слоев имеет минимальное значение.
  • Инструменты с открытым исходным кодом очень предпочтительны, так как у меня почти нет бюджета на это.

Какой рекомендуемый подход для этого?

Ответы:


14

Самый простой способ настроить онлайн-карту из источников PostGIS - использовать Geoserver. Руководство пользователя Geoserver содержит хорошее введение в использование PostGIS в качестве источника данных . Вы в основном добавляете хранилище данных, содержащее информацию о соединении, и после этого вы можете опубликовать любую таблицу, содержащую геометрию. Помимо PostGIS вы также можете использовать множество других источников данных:

альтернативный текст

Из веб-интерфейса Geoserver вы также можете просмотреть слои на веб-странице OpenLayers. Вы можете использовать источник этой страницы предварительного просмотра, чтобы создать свое собственное приложение OpenLayers.

Geoserver предлагает множество вариантов стилей для векторных и растровых данных. Для начала вам может быть достаточно просто настроить некоторые из готовых стилей, поставляемых с установкой.

По умолчанию Geoserver не создает плитки, а OpenLayers не запрашивает плитки. Если вам не нужна высокая производительность, вам все равно не нужно беспокоиться о плитках.

Лично я считаю, что OpenLayers проще в использовании, чем Google Maps API, и вы будете независимы от Google. Если вам нужна фоновая карта, вы можете вместо этого заглянуть в OpenStreetMap.


8

Если вам действительно не нужен большой слой промежуточного программного обеспечения, вы можете использовать TinyOWS ( http://tinyows.org/trac ) - я никогда не пробовал, но он утверждает, что он маленький и быстрый. Кроме того, он использует стандарты OGC, поэтому, если вы решите публиковать документы для более широкой аудитории и не сможете продолжать переключаться на GeoServer или MapServer, вы сможете продолжать использовать один и тот же код клиента без изменений.


ах да, забыл про tinyOWS, казалось немного сложным в настройке, и это только для PostGIS
dodobas

вопрос только о postgis
Йен Тертон

6

Вы можете использовать любое приложение, которое может обслуживать протокол WFS. С Openlayers вы можете легко использовать данные PostGIS по протоколу WFS. Есть несколько приложений FLOSS, которые могут сделать это. Например, FeatureServer , Geoserver , картсервер ... Если вы новичок в веб-картографии я бы порекомендовал Geoserver'у , потому что это очень легко , чтобы получить это началось.

Посмотрите этот пример Openlayers с WFS .


Последняя ссылка не работает.
Адам Матан

1
Я перепробовал их все, и они работают. Возможно, последний был временным.
Марио Милер

4

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

Возможно, самым простым промежуточным ПО может быть FeatureServer который может обслуживать данные PostGIS для большинства поддерживаемых форматов OL. Он прост в настройке и поддерживает простые пространственные / атрибутивные запросы.

Но если вам нужно что-то более мощное, Geoserver может стать жизнеспособным решением.


Нет любви к mapserver :(
dassouki

1
на самом деле mapserver был моей первой любовью, датированной где-то около 2001 года, но ... мы просто начали много
драться

Так что, если я дам openlayers URL-адрес для geojson / gml / kml, он может просто отобразить их?
фмарк

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

4

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


Я думаю, что подходит мой текущий вариант использования лучше всего. Если это будет слишком медленно, я попробую TinyOWS и другие более мощные картографические серверы. Можете ли вы предоставить пример кода для стороны openlayers, предполагая, что у меня есть где-то PHP-скрипт, возвращающий geojson / kml / wkt?
Fmark

@chaipat: У вас есть пример под рукой (php скрипт и соответствующий фрагмент openlayers)?
Подземье

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.