Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么地理距离错了?_Python_Geopy - Fatal编程技术网

Python 为什么地理距离错了?

Python 为什么地理距离错了?,python,geopy,Python,Geopy,从GeoDjango点域,我得到以下几点: object1.point = "POINT(-113.4741271000000040 53.4235217000000020)" object2.point = "POINT(-113.5013688000000229 53.5343457999999970)" 然后我使用geopy计算距离: from geopy import distance from geopy import Point p1 = Point("-113.47412710

从GeoDjango点域,我得到以下几点:

object1.point = "POINT(-113.4741271000000040 53.4235217000000020)"
object2.point = "POINT(-113.5013688000000229 53.5343457999999970)"
然后我使用
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
但是使用这个工具: 我的距离是12.45公里


为什么会有这么大的差异呢?

你错了方向。尝试:

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

给我结果=12.466096663282977

使用您链接的工具,我可以行驶5.77公里。你能再试一次吗?我假设你是在埃德蒙顿而不是在南极洲的某个地方测量:)你是对的,埃德蒙顿是对的。纬度=53,经度=113。但是,当在Geodjango PointField中表示一个点时,它是作为“点({lon}{lat})”完成的。在地质学中,它是点(“{lat}{lon}”)?(见更正)。如果是这种情况,我如何找到两个GeoDjango点域之间的距离?不确定-不熟悉GeoDjango类。您可能想发布一个django问题。:)您是否尝试过通过字符串进行明显的转换?此外,我怀疑任何使用lon/lat而不是非常传统的lat/log的框架FWIW,使用测地线.WGS84.Inverse()方法(从C.F.F.Karney的中,我得到12466.096663762537米。为了便于记录,geopy有一种方法将
(lon,lat)
元组转换为
(lat,lon)
tuple。如果你有一个Django
实例,你可以使用
.tuple
属性,这样你就可以做:
lonlat(*my_pnt.tuple)
。顺便说一句:很遗憾,lat/lon的顺序没有标准化,在系统中差异很大,所以这不是geopy/Django的错或对。