2012-06-13 12 views
5

Od GeoDjango punkt Field, otrzymuję następujące punkty:Dlaczego Geopy Distance.Distance jest złe?

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

Potem obliczyć odległość korzystając 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 

Ale za pomocą tego narzędzia: http://www.movable-type.co.uk/scripts/latlong.html dostaję odległości 12.45km

Dlaczego jest tak duża rozbieżność?

+0

dostaję 5,77 km pomocą narzędzia ty powiązane. Czy możesz spróbować jeszcze raz? –

Odpowiedz

9

Masz długą/długą w złym kierunku. Spróbuj:

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

daje mi doprowadzić = 12,466096663282977

+0

Założyłem, że mierzysz w Edmonton, a nie gdzieś na Antarktydzie :) –

+2

Masz rację, Edmonton ma rację. Lat = 53, lon = -113. Ale reprezentując punkt w Geodjango PointField, jest on wykonany jako "POINT ({lon} {lat})". Z geopy, czy to Point ("{lat} {lon}")? (Patrz korekta). Jeśli tak, to w jaki sposób znajdę odległość między dwoma polami punktów GeoDjango? – pmah

+0

Nie jestem pewien - nie znasz klas GeoDjango. Możesz opublikować pytanie django. :) Czy próbowałeś oczywistej konwersji za pomocą ciągów? Podejrzewam też, że wszelkie frameworki używające lon/lat, zamiast bardzo konwencjonalnych lat/log. :) –