通过 GeoServer 在 MongoDB 中提供地理空间数据

Posted

技术标签:

【中文标题】通过 GeoServer 在 MongoDB 中提供地理空间数据【英文标题】:Serving Geo-spacial data in MongoDB through GeoServer 【发布时间】:2016-05-20 14:56:14 【问题描述】:

我将地理空间数据存储在 MongoDB 数据存储中,我想通过 GeoServer 提供这些数据,以便可以通过 WFS、WMS 等使用数据。我能够安装 GeoServer 并放入 gt-与 GeoTools 一起打包的 mongodb 插件,还安装了 Java 的 MongoDb 驱动程序。这样做之后,我可以在添加数据存储时将 Mongo 作为一个选项。但是,在创建新的 MongoDB 存储后,我无法创建新的矢量图层;我继续收到以下错误:“无法创建矢量图层:null”。

这就是我正在做的事情:

在数据部分,我点击“图层” “添加新资源” 从下拉列表中选择我创建的 mongodb 存储 “创建新的特征类型” “添加新属性”并从我的数据中添加几个字段 输入“类型名称”并点击保存。

我是 GeoServer 的新成员,尽管以我能想到的各种方式进行搜索,但无法找到与 GeoServer 的 MongoDB 插件相关的文档。有人告诉我,唯一的其他选择可能是为 GeoServer 编写我自己的 MongoDB 扩展。在我走这条路之前,我希望找到一些关于此的文档或示例,或者有人可能如何让它工作。感谢您对此提供的任何帮助。

【问题讨论】:

您是否确保下载了正确版本的插件以匹配您的 GeoServer 版本?未能在日志文件中查看它所说的内容。 @iant,我将 gt-mongodb-9.4.jar 与 GeoServer 2.5.2 一起使用。据我所知,这应该没问题。你觉得这有什么问题吗? 【参考方案1】:

如果有人遇到与我相同的问题,这里有一个解决方案。

在挖掘插件代码后,我意识到该插件希望在 mongo 上存在几个存储的 javascript 函数。我在 Jar 文件中找到了 javascript 文件和安装说明。但是,即使在安装了 javacript 函数之后它也无法工作(我猜是因为我的 mongodb 版本和驱动程序调用函数的方式不兼容,但这主要是一个猜测。我没有深入研究什么根本问题是因为我找到了一个可行的解决方案,但我认为这应该适用于 2.4 之前的 mongodb 版本,否则您必须更改驱动程序。)

当我考虑修改驱动程序以在这种情况下工作时,我发现 BoundlessGeo 发布了一个更新、运行速度更快且更易于使用的驱动程序。

这里是 github 存储库:https://github.com/boundlessgeo/geoserver-exts 用于 geoserver-exts。该指令在自述文件中,但基本上你“git clone”,然后执行“mvn install”,它会为你构建驱动程序(驱动程序 jar 应该类似于:gt-mongo-15-SNAPSHOT.jar)。

安装说明可以在这里找到:https://github.com/boundlessgeo/suite/blob/master/docs/usermanual/source/dataadmin/mongodb/store.rst#id19。

【讨论】:

以上是关于通过 GeoServer 在 MongoDB 中提供地理空间数据的主要内容,如果未能解决你的问题,请参考以下文章

Geoserver添加mongoDB数据源

文件转换-cad转geojson

MongoDB最佳安全实践

MongoDB最佳安全实践

通过 https 运行与 Geoserver 平台无关的二进制文件?

通过 REST 为 GeoServer 配置密码加密