【发布时间】:2020-10-06 01:04:39
【问题描述】:
我正在尝试将 GeoDjango 与 PostGIS 一起使用以测量距离,但我得到的结果偏离了 20%。
为了测试,我选择了海洋中的 2 个随机点:(40.607532, -72.829369) 和 (40.366040, -73.556856)。
为了获得预期的结果,我使用了 2 种不同的方法:
- 谷歌地图“测量距离”功能。
- 我自己的python代码使用大弧距计算。
两者都给我 41.71 英里的相同结果。 Django 给了我 50.49。
这是我的代码:
# models.py
from django.contrib.gis.db import models
class Location(models.Model):
point = models.PointField(null=True)
然后从 django shell:
>>> from loc.models import Location
>>> from django.contrib.gis.geos import Point
>>> from django.contrib.gis.db.models.functions import Distance
>>> loc = Location(point=Point(40.366040, -73.556856, srid=4326))
>>> loc.save()
>>> pnt = Point(40.607532, -72.829369, srid=4326)
>>> qs = Location.objects.annotate(distance=Distance('point', pnt))
>>> qs[0].distance.mi
50.4954671273202
【问题讨论】:
标签: python django postgis geodjango