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