【发布时间】:2017-04-18 07:52:01
【问题描述】:
我的models.py 的用户和业务模型具有此字段:
location = PointField(geography=True)
我正在通过地理编码服务从用户指定的地址获取 Google 地图坐标(在 EPSG 4326 中)。
然后我将它保存在上述字段中(也是 EPSG 4326)。
现在,我想要的是根据用户位置获取指定半径(例如 1 公里)内的所有业务对象:
Business.gis.filter(location__distance_lt=(request.user.location, D(km=1)))
但它不起作用,它给了我这个错误:
ValueError: SpatiaLite 不支持几何距离查询 具有大地坐标系的字段。距离物体;用一个 以度为单位的距离数值。
那么,有谁知道如何正确解决这个问题?提前致谢!
【问题讨论】:
-
我在进行查询之前将其转换为投影系统。它就是这样工作的,虽然它不是那么精确,但我的情况不是问题。
-
嘿@MikiSoft,我发布的答案有点晚,看看。
-
@JohnMoutafis 嘿,我很久以前就按照上面描述的方式解决了它,但是我仍然将您的答案标记为解决方案,以感谢您的努力。 :)
标签: python django django-orm geodjango spatialite