0

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

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

经过一些研究,我发现需要使用 Oracle Spatial。但是,无法将我的列转换为SDO_GEOMETRY,所以我无法使用 Oracle 的SDO_WITHIN_DISTANCE功能。

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

目前我只是在查询所有条目并使用 Haversine 公式对其进行迭代——这将很快成为瓶颈:-)

感谢你的协助!

4

2 回答 2

1

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

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

在此处查看完整答案

于 2014-05-16T17:38:58.843 回答
0

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

于 2014-05-15T19:47:02.843 回答