由于GQL引擎的限制,有人建议想要执行邻近搜索的人应该使用建议的地理模型找到这些限制。它可能不是一个非常优雅或快速的解决方案,但有什么可以阻止任何人使用这里的算法:
SELECT id, ( 3959 * acos( cos( radians(lat_t) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(lng_t) )
+ sin( radians(lat_t) ) * sin( radians( lat ) ) ) ) AS distance
FROM Stores HAVING distance < 25
ORDER BY distance
作为计算距离的简单方法。即我们只需通过循环遍历数据存储区中的每条记录来手动计算每对(lat,lng)和(lat_t,lng_t)的距离,从而获得所有记录在目标距离内的id求助于使用HAVING命令?总而言之,我们会做一个简单的GQL查找以获取所有记录并循环遍历所有lng / lat对并与我们的目标值进行比较。
答案 0 :(得分:2)
显然,片段是SQL的一种风格,与数据存储区更简单的基于索引的查找不兼容。
如果你的意思是你想要获取所有实体并使用python在内存中执行距离计算;那肯定是可能的,但是你将被限制在相对较小的一组实体上这样做或者使用任务分批进行。
查看专为此用例设计的GeoModel。