我正在开发一个项目,涉及连接到外部 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
感谢任何帮助。
最佳答案
简单的答案是,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讨论调整这些查询。
关于java - 尝试计算大图层的 native 边界框时地理服务器超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41690019/