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



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

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

目前我找不到支持空间查询的模因数据库。我打算求助于使用R-Tree,例如 http://jsi.sourceforge.net/

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

有什么建议吗?

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

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

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

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

如果您确实想要半径内的每个点,则可以将点数增加到较大并运行 nearestN 查询,或者执行交集查询并在您自己的代码中按距离进行筛选。

最新更新