0

我打算編寫一個Android應用程序,允許用戶分享有關某個地方的小塊信息,例如酒吧,餐館等。我現在正在研究什麼是存儲這些數據的最佳方式。我特別關心檢索:在顯示(Google)地圖時,我想覆蓋上述信息,因此我需要能夠將地理空間查詢添加到數據庫中。適用於Android應用程序的地理空間數據庫

這是可能的與Google Cloud Datastore,例如?有什麼選擇?

回答

1

數據存儲本身不支持地理空間屬性,但您可以輕鬆創建一個便利的類來使用它。在App Engine中,在JavaPython庫中都有一個屬性GeoPt。

如果您對地理查詢感興趣,Datastore可以爲您做的事情不多,但Python中有一個有趣的庫來處理這個問題,geomodel。問題仍然是性能和成本。在那裏執行的操作雖然優化,但是很重。

還有一個最後的選擇。 Search API允許您執行地理查詢。這個唯一的缺點是成本和有限的免費級別。

1

您可以嘗試一個quadkey。它與geohash或geocell類似。將點轉換爲二進制並將其交織並將其視爲基數爲4的數字。它看起來像一個空間填充曲線,它具有相同的屬性。這裏有一篇關於quadkeys的好文章:https://msdn.microsoft.com/en-us/library/bb259689.aspx

1

您可能想要查看Postgresql甚至PostGIS以存儲地理數據。它們相當高效,可擴展且快速。我已經在地理數據上使用了Postgresql多年,並且在非常繁忙的網站和Android應用程序中使用過。如果您只需要找到其他東西附近的東西,那麼Postgresql就很好。如果你想在多邊形內找到東西或者做更復雜的查詢,PostGIS有很多很棒的功能。

Postgresql和PostGIS都是開源和免費的。

如果您想獲得驚人的性能,請使用SSD和具有足夠內存的計算機來存放整個數據庫。你會驚訝於設置的速度。