java - 尝试计算大图层的 native 边界框时地理服务器超时

标签 java oracle geoserver

我正在开发一个项目,涉及连接到外部 Oracle 数据库作为数据存储。我正在尝试根据 oracle store 中的数据库 View 向 Geoserver 添加多个层。

多层就可以了: 除了单击“从数据计算”来计算 native 边界框坐标(minX、minY、maxX、maxY)时出现相当大的延迟外,几个 View 的摄取效果良好。后台任务似乎在大约 2-10 分钟后完成。这很好...

问题: 有一些非常大的 View 在单击“从数据计算”后未完成。该过程似乎超时。我已附上显示此问题的屏幕截图。即,旋转器消失,但边界坐标仍为空白。

有人以前遇到过这个吗?我尝试增加 Jetty http.timeout 和threads.timeout,没有成功。

进度旋转器出现在右上角,指示计算正在进行,它将旋转大约 15 分钟,然后消失,坐标框保持空白。它只是停止而没有错误 - 我已经检查了日志文件。

该服务器在具有充足内存的 centos 7 机器上运行。 Geoserver 本身使用 3GB 内存运行。

你有过这样的经历吗?

此外,我正在考虑根据从 oracle View 导出的 CSV(根据所有几何值计算)手动计算这些边界框值。我可以使用 JTS 等 java 包,有更好的方法吗?

https://en.wikipedia.org/wiki/JTS_Topology_Suite

感谢任何帮助。

enter image description here

enter image description here

enter image description here

最佳答案

简单的答案是,Oracle 空间在以一般方式使用时很糟糕,因为 GeoServer 被设计为与许多数据库一起工作,它在其数据库访问代码中不能有(许多)空间加速技巧。一个好的数据库(例如 PostGIS)总是很快,只有当您使用基于本地知识的提示手动调整它时,Oracle 才会很快。您没有说明您正在使用哪个版本的 GeoServer,但最新版本可能会比旧版本更快。

要计算表的边界,您可以使用以下方法向 Oracle 请求:

SELECT SDO_TUNE.EXTENT_OF('TABLE_NAME', 'SPATIAL_COLUMN');

select sdo_aggr_mbr(MY_GEOMETRY) from MY_TABLE;

这个questionGIS stackexchange site讨论调整这些查询。

关于java - 尝试计算大图层的 native 边界框时地理服务器超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41690019/

相关文章:

linux - 通过从 shell 传递数据库凭据使用 shell 脚本连接数据库

oracle - DbUnit HSQLDB - 无效的架构名称 : C

javascript - 无法读取未定义的属性 'length'(使用地理服务器打印 map )

Java内置邻接表

java - Arraylist vs Array 用于查找元素?

java - JAX-RS:从具有声明的抽象返回类型的方法返回具体类实例

orientdb - 我可以使用 WFS 与 Orient DB 建立 Geo 服务器连接吗

java - 无法在 html 上运行 Applet,ClassNotFoundException

java - Oracle 子查询不返回任何记录

apache - https下的GeoServer