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

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

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

  2. Есть ли способ настроить plone (например, через аддон) для доступа к WFS?


person aquavitae    schedule 06.02.2014    source источник
comment
Вы намерены, чтобы геопространственные данные также можно было редактировать с помощью Plone (а именно collective.geo.* + OpenLayers) или просто отображать с помощью Plone? Потому что если нет, то определения уровня OpenLayers, который использует централизованную службу WMS (вместо WFS), и настройки этого уровня для collective.geo.* должно быть достаточно.   -  person Lukas Graf    schedule 06.02.2014
comment
Также: Не могли бы вы уточнить, что вы подразумеваете под настройкой Plone для использования БД postgis - сам Plone ничего не делает с геопространственными данными - это будет один из collective.geo.* пакетов. Но что именно вы хотите сделать с данными в Plone? Изначально создавать его, привязывая типы контента при их добавлении? Изменить его в виджете карты?   -  person Lukas Graf    schedule 06.02.2014
comment
@LukasGraf Я использую коллектив.geo.* для редактирования и просмотра геопространственных данных, но созданные данные также должны быть доступны для анализа через настольную ГИС (только для чтения). Я читал, как подключить plone к реляционной базе данных, но в документах говорится, что он хранит объекты pickle в базе данных, а не фактические значения (в данном случае geometry), поэтому я могу читать данные только из Plone.   -  person aquavitae    schedule 06.02.2014


Ответы (2)


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

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

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

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

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

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

person Lukas Graf    schedule 06.02.2014
comment
Спасибо, что написали. Я надеюсь избежать написания собственных инструментов для этого, но если мне это нужно, это даст мне хорошую отправную точку! - person aquavitae; 07.02.2014

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

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

person ebrehault    schedule 06.02.2014
comment
Я просмотрел zgeo.wfs, но, как вы сказали, он не поддерживается. Однако мне интересно использовать geoJSON. Я думал, что это просто соглашение JSON для представления пространственных данных, но если он может заменить WFS, означает ли это, что на самом деле это тип сервиса, к которому может подключаться ГИС? Это может решить мои проблемы! - person aquavitae; 07.02.2014
comment
Вы можете использовать слой GeoJSON почти так же, как слой WFS: вы можете отобразить его в веб-клиенте (например, OpenLayers или Leaflet), вы можете отобразить его в настольном клиенте ГИС (например, QGis). Плюсы: его намного проще производить и интерпретировать. Минусы: нет стандартного способа запросить его. Если для вас важнее работоспособность, чем совместимость, то GeoJSON — хороший выбор. - person ebrehault; 07.02.2014
comment
Это нестандартный способ, который меня немного беспокоит. QGIS и ArcGIS должны получить к нему доступ, и хотя с QGIS проблем быть не должно, я не уверен в ArcGIS. Думаю, мне нужно провести небольшое исследование. - person aquavitae; 08.02.2014