2012-04-22 79 views
6

我想解決在Java中「找到你感興趣的點」的問題。 即我有很多經緯度點。我想在800米範圍內找到那些。假設我知道我目前的經緯度和日誌。在內存數據庫,支持空間查詢

我的問題是這樣的應用程序必須是獨立的。所以我不能依靠空間數據庫查詢來查找結果,例如使用mysql 我發現這是有用的: http://xebee.xebia.in/2010/10/28/working-with-geolocations/

目前我無法找到一個支持spatital查詢的memeory數據庫。 我打算使用類似於http://jsi.sourceforge.net/

但我知道這不會是正確的給出它使用rectange而不是全局搜索的事實。

有什麼建議嗎?

回答

1

其實JSI庫(http://jsi.sourceforge.net)是這個問題的非常完美。它被寫爲支持這種確切的情況。

當搜索附近的矩形(或點),你可以提供的最大距離,它將在距離增加的順序返回結果。

它不支持查詢「800米半徑範圍內返回的每一個點」,但在實踐中,你會希望有一個極限。所以JSI庫支持更有用的「在800米範圍內返回最近的50個點」。

如果你真的想要一個半徑範圍內的每一個點,你可以增加點的數量的大量和運行nearestN查詢,或在自己的代碼做由距離路口查詢和過濾器。

1

沒有支持空間特徵名爲ALTIBASE一個內存數據庫。它遵守OGC規範。你可以使用它。