2012-06-13 11 views
5

Từ GeoDjango Point Field, tôi nhận được một số điểm sau:Tại sao Geopy Distance.Distance sai?

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

Sau đó, tôi tính toán khoảng cách sử dụng 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 

Nhưng sử dụng công cụ này: http://www.movable-type.co.uk/scripts/latlong.html tôi nhận được một khoảng cách 12.45km

Tại sao có sự khác biệt lớn như vậy?

+0

tôi nhận được 5,77 km với công cụ mà bạn được liên kết. Bạn có thể thử lại không? –

Trả lời

9

Bạn đã nhận được khoảng thời gian không chính xác. Hãy thử:

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

Cung cấp cho tôi kết quả = 12,466096663282977

+0

Tôi giả định rằng bạn đang đo ở Edmonton thay vì ở đâu đó ở Nam Cực :) –

+2

Bạn nói đúng, Edmonton là đúng. Lat = 53, lon = -113. Tuy nhiên, khi đại diện cho một điểm trong Geodjango PointField, nó được thực hiện như là "POINT ({lon} {lat})". Với geopy, có phải Point ("{lat} {lon}") không? (Xem hiệu chỉnh). Nếu đây là trường hợp, làm thế nào tôi sẽ tìm thấy khoảng cách giữa hai lĩnh vực điểm GeoDjango? – pmah

+0

Không chắc chắn - không quen thuộc với các lớp GeoDjango. Bạn có thể muốn đăng câu hỏi django. :) Bạn đã thử chuyển đổi rõ ràng thông qua các chuỗi? Ngoài ra tôi là đáng ngờ của bất kỳ khuôn khổ sử dụng lon/lat thay vì lat/log rất thông thường. :) –