我计划编写一个Android应用程序,允许用户分享关于某个地方的小块信息,例如酒吧,餐馆等。我现在正在研究存储此类数据的最佳方法。我特别关注检索:在显示(Google)地图时,我想将其与所述信息重叠,因此我需要能够进行地理空间查询到数据库。
例如,这可能是Google Cloud Datastore吗?有哪些替代方案?
答案 0 :(得分:1)
数据存储区本身不支持地理空间属性,但您可以轻松创建便利类来使用它。在App Engine中,Java和Python库中都有一个属性GeoPt用于此目的。
如果您对地理查询感兴趣,那么Datastore可以为您做的并不多,但Python中有一个有趣的lib来处理它,geomodel。问题仍然在于性能和成本。在那里执行的操作虽然经过优化,但很重要。
还有最后一种选择。 Search API允许您执行地理位置查询。唯一的缺点是成本和有限的免费等级。
答案 1 :(得分:1)
你可以尝试一个四核。它类似于geohash或geocell。将点转换为二进制并对其进行交织并将其视为基数为4的数字。它看起来像一个空间填充曲线,它具有相同的属性。这是一篇关于quadkeys的好文章:https://msdn.microsoft.com/en-us/library/bb259689.aspx。
答案 2 :(得分:1)
您可能希望查看Postgresql甚至PostGIS以存储地理数据。它们相当高效,可扩展且快速。我已经使用Postgresql和地理数据多年,并在非常繁忙的网站和Android应用程序。如果您只需要将其他东西放在其他东西附近,Postgresql就能很好地工作。如果您想在多边形中查找内容或执行更复杂的查询,PostGIS有很多很棒的功能。
Postgresql和PostGIS都是开源的,免费的。
如果您想要惊人的性能,请使用SSD和具有足够内存的计算机来容纳整个数据库。你会惊讶于这种设置有多快。