我正在尝试使用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)
此外,当我尝试导入geomodel和geotype时,这对我来说非常重要,它会给我一个导入错误,我不知道从哪里获取它们。
非常感谢任何帮助或示例!
答案 0 :(得分:2)
您应首先查看SVN存储库中的最新代码。您可以在http://code.google.com/p/geomodel/source/checkout
找到相关信息在您的计算机上本地获得代码后,在主目录中有一个名为geo
的目录。您应该将此目录复制到GAE项目中。然后在您的代码中,您从此包导入所需的内容。例如:
from geo import geomodel
现在,关于您的Location
模型,为了能够执行proximity_fetch
查询,您的模型应该在名为GeoModel
的地理模型中扩展所提供的模型。因此,你应该有这样的事情:
class Location(ndb.Model, GeoModel):
....
请注意GeoModel
目前使用" old"您在代码中使用的GAE数据存储区db
而不是ndb
。但是,它不应该造成任何麻烦。
有关如何使用geomodel的更多信息,您还应该查看从SVN获得的代码中也存在的演示。您可以在演示目录中找到它们。
希望这有帮助!
答案 1 :(得分: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)