在支持空间查询的内存数据库中

时间:2012-04-22 22:42:54

标签: java geolocation

我正在尝试解决java中“找到您附近的兴趣点”的问题。 也就是说,我有许多纬度,很多积分。我想找到800米以内的那些。假设我知道我当前的lat和log。

我的问题是这个应用程序必须独立。所以我不能依赖空间数据库查询来查找结果,例如使用mysql 我发现这很有用: http://xebee.xebia.in/2010/10/28/working-with-geolocations/

目前我找不到支持spatital查询的内存数据库。 我打算使用类似http://jsi.sourceforge.net/

的R-Tree

但是我知道这不会是正确的,因为它使用的是矩形而不是圆形搜索。

有任何建议吗?

2 个答案:

答案 0 :(得分:1)

实际上,jsi库(http://jsi.sourceforge.net)对于这个问题非常完美。它是为了支持这个确切的场景而编写的。

搜索附近的矩形(或点)时,您可以提供最大距离,并按照距离增加的顺序返回结果。

它不支持查询“返回800米范围内的每个点”,但实际上你需要一个限制。所以jsi库确实支持更有用的“返回最近的50个半径范围内的50个点”。

如果您确实想要半径内的每个点,可以将点数增加到一个大数并运行nearestN查询,或者在您自己的代码中按距离进行交叉查询和过滤。

答案 1 :(得分:1)

有一个名为Altibase的内存数据库支持Spatial功能。它遵守OGC规范。你可以利用它。