如何在AppEngine中存储和搜索GeoData?

时间:2010-06-03 21:33:49

标签: google-app-engine geolocation gql

在我的应用程序中,我想存储地理数据(经度和纬度)。然后我想问“这个地区在哪个地方”。不能使用类似SQL的查询,因为GQL中的“仅在一个属性上允许不等的过滤器”link text

您是否知道如何在AppEngine数据库中存储这些数据并使用GQL请求它们的另一种解决方案?

2 个答案:

答案 0 :(得分:7)

我成功使用geomodel开源项目在App Engine数据存储区中存储和查询lat / lon数据。它使用geohash来启用对单个属性的查询,它可用于Python和Java,并且因为它是开源的,所以如果需要,您可以修改代码以适合您的特定情况。

值得注意的是,几周前谷歌I / O宣布数据存储有一天(希望很快)会在内部使用希尔伯特曲线为地理空间和日期查询提供原生支持。这将允许快速查询边界框甚至在任意多边形查询中。您可以在线观看the video在线讨论的更多细节,这是一个非常有趣的讨论。

答案 1 :(得分:0)

您可以使用Geohash将纬度和经度编码为单个字符串,然后只使用升序和降序属性索引来查找最近的匹配项。