在我的应用程序中,我想存储地理数据(经度和纬度)。然后我想问“这个地区在哪个地方”。不能使用类似SQL的查询,因为GQL中的“仅在一个属性上允许不等的过滤器”link text
您是否知道如何在AppEngine数据库中存储这些数据并使用GQL请求它们的另一种解决方案?
答案 0 :(得分:7)
我成功使用geomodel开源项目在App Engine数据存储区中存储和查询lat / lon数据。它使用geohash来启用对单个属性的查询,它可用于Python和Java,并且因为它是开源的,所以如果需要,您可以修改代码以适合您的特定情况。
值得注意的是,几周前谷歌I / O宣布数据存储有一天(希望很快)会在内部使用希尔伯特曲线为地理空间和日期查询提供原生支持。这将允许快速查询边界框甚至在任意多边形查询中。您可以在线观看the video在线讨论的更多细节,这是一个非常有趣的讨论。
答案 1 :(得分:0)
您可以使用Geohash将纬度和经度编码为单个字符串,然后只使用升序和降序属性索引来查找最近的匹配项。