2016-03-15 35 views
1

我使用Postgis和Django来存储地理点。我有一个像这样的模型:如何计算两个PointField之间的距离?

from django.contrib.gis.db import models 
class Event(models.Model) 
    position = models.PointField() 

我有两个事件(ev1,ev2)。这里是每个的位置值:

SRID=4326;POINT (-73.6335140000000052 45.5472019999999986) 
SRID=4326;POINT (-73.6267909999999972 45.5459189999999978) 

我的目标是获得这两个点之间的距离。如果我这样做:

ev1.position.distance(ev2.position) 

我得到0.006844327432269004 我怎么能转换成米这个值?

谢谢!

+0

如果使用地理类型,则距离结果将以米为单位。请参阅:https://docs.djangoproject.com/en/1.9/ref/contrib/gis/model-api/#django.contrib.gis.db.models.GeometryField.geography – emily

回答

3

我能够使它发挥作用的结果,但只能通过查询集。在这里,我希望得到事件3和所有其他活动之间的距离:

p2 = Event.objects.get(id=3).position 
for event in Event.objects.all().exclude(id=3).annotate(distance=Distance('position', p2)): 
    print('{0} - {1}'.format(event.id, event.distance.m)) 

“位置” 是PointField

1

pnt.distance(PNT2)的名称* 100

会给你以km为单位的距离。相应地更改

相关问题