My Profile
模型有这个字段:
location = models.PointField(geography=True, dim=2, srid=4326)
我想计算两者之间的距离locations
(考虑到地球是一个球体)使用GeoDjango,这样我就可以将这个距离存储在数据库中。
- 我如何用 GeoDjango 计算这个距离?
- 结果采用什么单位?
- 是否有存储这些数据的“最佳”方法?漂浮?十进制?
我回顾了以前的类似问题,但发现它们没有用。没有答案能够充分解释正在发生的事情或它为何有效。
我正在使用 Django 1.8 和 GeoDjango 所需库的最新版本。
Thanks!
下列的阿布尤迪·贾因的评论,我正在使用geopy https://github.com/geopy/geopy来计算距离。我将其添加为属性,而不是存储它,按照e4c5的建议:
from django.contrib.gis.measure import Distance, D
from geopy.distance import distance
@property
def distance(self):
return Distance(m=distance(self.user_a.profile.location, self.user_b.profile.location).meters)
Geopy 默认为文森特公式 https://en.wikipedia.org/wiki/Vincenty%27s_formulae,误差高达 0.5%,并且包含许多我将来会使用的其他功能。
上面返回一个 GeoDjango Distance 对象,准备在测量之间轻松转换。
谢谢您的帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)