我正在从事一个项目,该项目涉及将外部oracle数据库作为数据store连接起来。我正在尝试根据oraclestore中的db视图向Geoserver添加几个层。
很多层都很好:中的几个视图都很好,除了单击“计算从数据”来计算本地边界框坐标(minX、minY、maxX、maxY)时有相当大的延迟。背景任务似乎在2-10分钟后就完成了。这很好..。
问题:有一些非常大的视图在单击"Compute“后没有完成。进程似乎超时。我附上了显示这个问题的截图。即,旋转器不皂化,但边界坐标仍为空白。
以前有人遇到过这种情况吗?我试过增加Jetty http.timeout和threads.timeout,而不是骰子。
进度旋转器出现在右上角,表示正在进行计算,它将旋转大约15分钟,然后简单地消失,坐标框仍然是空白的。它只是在没有错误的情况下停止--我检查了日志文件。
这台服务器运行在一个带有大量内存的centos 7盒上。Geoserver本身运行的内存为3GB。
你有经历过吗?
此外,我还考虑根据从oracle视图导出的CSV手动计算这些边界框值,根据所有几何值计算。我可以使用像JTS这样的java包,有更好的方法吗?
任何帮助都很感激。



发布于 2017-01-17 08:51:16
简单的答案是,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上讨论调优这些查询。
https://stackoverflow.com/questions/41690019
复制相似问题