0

我正在尝试使用 Google App Engine 的GeoModel类进行proximity_fetch。我想使用它的实体是 ndb,我不确定我需要下载和导入什么,以及我可以在我的 python 代码中从谷歌导入什么。这些网站似乎有点过时,我想知道是否有人有更多相关信息。这是我到目前为止所拥有的,它告诉我 Location 没有属性proximity_fetch,我知道但我不确定我应该如何在 Location(ndb.Model) 类中定义它。

        g = geocoders.Google()

        place, (lat, lng) = g.geocode(inputlocation, exactly_one=False)


        bound = 20
        upper = lat + bound
        lower = lat - bound
        left = lng + bound
        right = lng - bound

        locations = []

        if lat and lng:
            locations = Location.proximity_fetch(
                                                 Location.query(),
                                                 geotypes.Point(lat, lng),
                                                 max_results=50,
                                                 max_distance=500000) 

此外,当我尝试导入对此似乎非常重要的地理模型和地理类型时,它给了我一个导入错误,我不知道从哪里得到它们。

任何帮助或示例将不胜感激!

4

2 回答 2

2

您应该首先从 SVN 存储库中签出最新的代码。您可以在http://code.google.com/p/geomodel/source/checkout找到有关此的信息

在您的机器上本地获取代码后,在主目录内有一个名为geo. 您应该将此目录复制到您的 GAE 项目中。然后在你的代码中,你从这个包中导入你需要的东西。例如:

from geo import geomodel

现在,关于您的Location模型,为了能够执行proximity_fetch查询,您的模型应该扩展名为 geomodel 的提供的模型GeoModel。因此,你应该有这样的东西:

class Location(ndb.Model, GeoModel):
....

请注意,GeoModel当前使用的是“旧”GAE 数据存储层db,而不是ndb您在代码中使用的。但是,它不应该造成任何麻烦。

有关如何使用 geomodel 的更多信息,您还应该查看从 SVN 获得的代码中也存在的演示。您可以在 demos 目录中找到它们。

希望这可以帮助!

于 2012-10-12T16:31:33.207 回答
1
from geo import geotypes

他们做了一个完整的例子,可以在这里找到:http: //code.google.com/p/geomodel/source/browse/trunk/demos/pubschools/handlers/service.py http://code.google.com/ p/geomodel/source/browse/#svn/trunk/demos/pubschools

results = PublicSchool.proximity_fetch(
        base_query,
        center, max_results=max_results, max_distance=max_distance)
于 2012-10-12T09:03:51.780 回答