2012-06-13 19 views
5

Da GeoDjango Point Campo, ottengo i seguenti punti:Perché Geopy Distance.Distance è sbagliato?

object1.point = "POINT(-113.4741271000000040 53.4235217000000020)" 
object2.point = "POINT(-113.5013688000000229 53.5343457999999970)" 

Poi ho calcolare la distanza utilizzando geopy:

from geopy import distance 
from geopy import Point 

p1 = Point("-113.4741271000000040 53.4235217000000020") 
p2 = Point("-113.5013688000000229 53.5343457999999970") 
result = distance.distance(p1,p2).kilometers 
print result 
# 5.791490830933827 

Ma utilizzando questo strumento: http://www.movable-type.co.uk/scripts/latlong.html ricevo una distanza di 12,45 km

Perché c'è una discrepanza così grande?

+0

ottengo 5,77 km con lo strumento si è collegato. Potresti provare di nuovo? –

risposta

9

Hai lat/long la direzione sbagliata. Prova:

p1 = Point("53.4235217000000020 -113.4741271000000040") 
p2 = Point("53.5343457999999970 -113.5013688000000229") 

mi dà risultato = 12,466096663282977

+0

Ho supposto che tu stia misurando a Edmonton piuttosto che da qualche parte in Antartide :) –

+2

Hai ragione, Edmonton ha ragione. Lat = 53, lon = -113. Ma, quando rappresenta un punto in Geodjango PointField, è fatto come "POINT ({lon} {lat})". Con geopy, è Point ("{lat} {lon}")? (Vedi correzione). Se questo è il caso, come trovo la distanza tra due campi di punti GeoDjango? – pmah

+0

Non sicuro - non ha familiarità con le classi di GeoDjango. Potresti voler postare una domanda sul django. :) Hai provato l'ovvia conversione tramite stringhe? Inoltre sono sospettoso di qualsiasi framework che utilizza lon/lat al posto del lat/log molto convenzionale. :) –

Problemi correlati