6

我正在尝试解决java中“查找您附近的兴趣点”的问题。即我有很多纬度,很多兴趣点。我想找到800米以内的那些。假设我知道我当前的纬度和日志。

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

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

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

有人有什么建议吗?

4

2 回答 2

2

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

于 2014-01-29T15:52:20.120 回答
1

实际上,jsi 库 (http://jsi.sourceforge.net) 非常适合解决这个问题。它是为了支持这种确切的情况而编写的。

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

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

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

于 2012-07-24T11:14:45.500 回答