python - GeoDjango:如何获得两点之间的距离?

标签 python django location distance geodjango

我的 Profile 模型有这个字段:

location = models.PointField(geography=True, dim=2, srid=4326)

我想使用 GeoDjango 计算这两个 locations 之间的距离(考虑到地球是一个椭球体),以便我可以将这个距离存储在数据库中。

  1. 如何使用 GeoDjango 计算这个距离?
  2. 结果的单位是什么?
  3. 是否有“最佳”方式来存储这些数据?漂浮?十进制?

我查看了以前的类似问题,但没有发现它们有用。没有答案足以解释正在发生的事情或它为什么起作用。

我正在使用 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/

相关文章:

python - 如何通过 AWS Jupyter Notebook 查询 (Postgres) RDS 数据库?

database - Django:锁定表中的特定行

android - 将自定义 Google map 的位置下载到 Android 设备

iphone - 将邮政编码输入文本字段

java - 无法转换为 com.google.android.gms.location.LocationListener

python - 是否有一种标准的 UNIX 方式可以明确地将 <filename> 和 <lineno> 写入 stderr?

python - 从 2-grams 中提取短语

python - PyMC2 和 PyMC3 给出不同的结果......?

django - 如何将 MultipleChoiceField 保存到数据库

Django::OperationalError at/admin/login/无法打开数据库文件