我正在尝试解决java中“找到您附近的兴趣点”的问题。 也就是说,我有许多纬度,很多积分。我想找到800米以内的那些。假设我知道我当前的lat和log。
我的问题是这个应用程序必须独立。所以我不能依赖空间数据库查询来查找结果,例如使用mysql 我发现这很有用: http://xebee.xebia.in/2010/10/28/working-with-geolocations/
目前我找不到支持spatital查询的内存数据库。 我打算使用类似http://jsi.sourceforge.net/
的R-Tree但是我知道这不会是正确的,因为它使用的是矩形而不是圆形搜索。
有任何建议吗?
答案 0 :(得分:1)
实际上,jsi库(http://jsi.sourceforge.net)对于这个问题非常完美。它是为了支持这个确切的场景而编写的。
搜索附近的矩形(或点)时,您可以提供最大距离,并按照距离增加的顺序返回结果。
它不支持查询“返回800米范围内的每个点”,但实际上你需要一个限制。所以jsi库确实支持更有用的“返回最近的50个半径范围内的50个点”。
如果您确实想要半径内的每个点,可以将点数增加到一个大数并运行nearestN查询,或者在您自己的代码中按距离进行交叉查询和过滤。
答案 1 :(得分:1)
有一个名为Altibase的内存数据库支持Spatial功能。它遵守OGC规范。你可以利用它。