尝试计算大图层的本机边界框时,Geoserver超时

时间:2017-01-17 06:02:37

标签: java oracle geoserver

我正在开发一个涉及将外部oracle数据库作为数据store连接的项目。我正在尝试基于oracle Geoserver中的数据库视图向store添加多个层。

许多图层都很好: 当点击“从数据计算”来计算本机边界框坐标(minX,minY,maxX,maxY)时,除了相当显着的延迟之外,其他几个视图都很好。后台任务似乎在约2-10分钟后完成。这很好......

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

有没有人遇到过这个?我已经尝试过增加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

1 个答案:

答案 0 :(得分:2)

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

要计算表格的边界,您可以使用以下方法向Oracle索取:

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

select sdo_aggr_mbr(MY_GEOMETRY) from MY_TABLE;

question上的GIS stackexchange site讨论调整这些查询。