我的 Profile
模型有这个字段:
location = models.PointField(geography=True, dim=2, srid=4326)
我想使用 GeoDjango 计算这两个 locations
之间的距离(考虑到地球是一个椭球体),以便我可以将这个距离存储在数据库中。
- 如何使用 GeoDjango 计算这个距离?
- 结果的单位是什么?
- 是否有“最佳”方式来存储这些数据?漂浮?十进制?
我查看了以前的类似问题,但没有发现它们有用。没有答案足以解释正在发生的事情或它为什么起作用。
我正在使用 Django 1.8 和 GeoDjango 所需库的最新版本。
谢谢!
最佳答案
根据 Abhyudit Jain 的评论,我正在使用 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 默认为 Vincenty’s formulae ,误差高达 0.5%,并且包含我将来会用到的许多其他功能。
上面返回一个 GeoDjango Distance 对象,准备好在测量之间轻松转换。
感谢您的帮助!
关于python - GeoDjango:如何获得两点之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32092584/