在不使用Oracle Spatial功能的情况下按两个对象之间的距离查询

时间:2014-05-15 07:42:45

标签: java sql jpa spatial oracle-spatial

现在我在Oracle 10g数据库中有LAT(FLOAT)LNG(FLOAT)列的表。

任务是查找给定点(中心)的特定距离(半径)内的所有条目。应用程序本身是Java,Hibernate用作JPA实现。

经过一番研究后,我发现需要使用Oracle Spatial。但是,无法将我的列转换为SDO_GEOMETRY,因此我无法使用Oracle的SDO_WITHIN_DISTANCE函数。

是否有解决方法来实现此类功能?

目前我只是查询所有条目并使用Haversine公式迭代它们 - 这很快就会成为瓶颈: - )

感谢您的协助!

2 个答案:

答案 0 :(得分:1)

使用在X和Y列中编码的现有空间数据而不引入其他列很简单:只使用基于函数的索引。

这意味着现有表格没有变化:只需添加一个函数和基于函数的索引以及可能的视图,以使一切更加透明。

查看完整的答案here

答案 1 :(得分:0)

如果您无法更改目标表上的列,则可以使用触发器将单独表中的数据实现为sdo_geometry,使用sdo_within_distance然后将行连接到原始表。