我正在开发一个涉及将外部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
任何帮助表示感谢。
答案 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讨论调整这些查询。