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

dbo*_*d68 6 java geolocation

我试图在java中解决"找到你附近的兴趣点"的问题.即我有一些lat,很多积分.我想找到800米以内的那些.假设我知道我当前的lat和log.

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

目前我找不到支持spatital查询的内存数据库.我打算使用像http://jsi.sourceforge.net/这样的R-Tree.

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

有什么建议吗?

Ale*_*led 1

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

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

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

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