2016-03-15 130 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爲單位的距離。相應地更改

相關問題