Публикация геопространственных данных с помощью Plone

Я настраиваю новый сайт на plone, используя colle.geo.bundle, но мне нужно сделать данные доступными для настольной ГИС. Два очевидных способа сделать это - использовать базу данных postgres/postgis или опубликовать данные через сервис WFS. Проблема в том, что похоже, что plone хранит соленые огурцы в базе данных, поэтому ГИС не сможет разобраться в данных, и, похоже, не существует аддона, который выставляет WFS. Тогда два вопроса:

  1. Есть ли способ использовать configure plone для использования базы данных postgres/postgis с геометрическими типами данных, чтобы данные могли быть прочитаны извне plone?

  2. Есть ли способ настроить Plone (например, через аддон), чтобы выставить WFS?

2 ответа

Решение

TL;DR: я не думаю, что есть готовое решение (использующее collective.geo.*) это уже делает это.

Как упоминалось в комментариях, сам Plone вообще не имеет дело с геопространственными данными, это collective.geo.geographer это делает это Более конкретно, это GeoreferencingAnnotator это сохраняет координаты для IGeoreferenceable объекты в свои аннотации (и загружает их оттуда).

Таким образом, просто заставляя Plone хранить свой контент в реляционной БД, например, используя RelStorage Вам не поможет - Plone или RelStorage не знают о геопространственных данных и будут хранить эти аннотации, как и любые другие.

Тем не менее, это не должно быть слишком сложно, чтобы написать свой собственный IWriteGeoreferenced адаптер, который записывает данные геопривязки в базу данных PostGIS вместо аннотаций, используя UUID контекста для связи данных с объектами и, возможно, хранит некоторые дополнительные метаданные, такие как Title или URL. Эти данные с географической привязкой могут полностью отделиться от вашего реального контента - нет необходимости помещать весь контент Plone в базу данных PostgreSQL.

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

И последнее, но не менее важное: я настоятельно рекомендую взглянуть на collective.geo список рассылки - люди там обычно очень отзывчивы и полезны, и я вполне могу представить, что кто-то другой уже имел такой же вариант использования.

Давным-давно я разработал zgeo.wfs https://pypi.python.org/pypi/zgeo.wfs для предоставления содержимого Plone с географической привязкой через WFS. Раньше он работал на Plone 3 и, вероятно, больше не работает на Plone 4, тем не менее, это может быть хорошей отправной точкой для вас.

Примечание: я больше не поддерживаю его, так как сейчас предпочитаю использовать GeoJSON.

Другие вопросы по тегам