1

我正在使用collective.geo.bundle 在plone 上建立一个新站点,但我需要使数据可供桌面GIS 访问。两种明显的方法是使用 postgres/postgis 数据库,或者通过 WFS 服务发布数据。问题是 plone 似乎将泡菜存储在数据库中,因此 GIS 无法理解数据,并且似乎没有公开 WFS 的插件。那么两个问题:

  1. 有没有办法使用configure plone来使用具有几何数据类型的postgres/postgis数据库,以便可以从外部plone读取数据?

  2. 有没有办法设置 plone(例如通过插件)来公开 WFS?

4

2 回答 2

2

很久以前,我开发了 zgeo.wfs https://pypi.python.org/pypi/zgeo.wfs来通过 WFS 公开地理参考的 Plone 内容。它曾经在 Plone 3 上工作,它可能不再在 Plone 4 上工作,但它对你来说可能是一个很好的起点。

注意:我不再维护它,因为我现在更喜欢使用 GeoJSON。

于 2014-02-06T14:49:56.530 回答
1

TL;DR:我不认为有一个开箱即用的解决方案(使用collective.geo.*)已经做到了这一点。

正如评论中提到的,Plone 本身根本不处理地理空间数据,它就是collective.geo.geographer这样做的。更具体地说,它将对象的GeoreferencingAnnotator坐标保存IGeoreferenceable到它们的注释中(并从那里加载它们)。

因此,仅强制 Plone 将其内容存储在关系数据库中,例如使用RelStorage不会帮助您 - Plone 或 RelStorage 不了解地理空间数据,并且会像其他任何注释一样存储这些注释。

但是,编写自己的适配器将地理配准数据写入 PostGIS 数据库而不是注释,使用上下文的UUID数据链接到对象,并可能存储一些额外的元数据,如标题或网址。此地理配准数据可以与您的实际内容完全分开 - 无需将所有 Plone 内容放入 PostgreSQL 数据库中。IWriteGeoreferenced

另一种方法可能是为 编写事件处理程序ObjectGeoreferencedEvent,并将地理配准数据发布到 PostGIS DB(除了将其存储在实际对象的注释中)。由于您只想从桌面 GIS 以只读方式访问它,因此您不必担心双向同步该数据。

最后但并非最不重要的一点是,我强烈建议查看collective.geo邮件列表- 那里的人通常反应迅速且乐于助人,我可以想象其他人已经有相同的用例。

于 2014-02-06T21:30:19.317 回答