经纬距

2024-10-17 06:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

朋友们, 我正在研究一些东西来找出两个经纬度点之间的距离。你知道吗

下面是我的python代码,以公里为单位计算距离

from math import radians, cos, sin, asin, sqrt
def distance(lat1, lng1, lat2, lng2):     
    R = 6371  # radius of the earth in km
    lng1, lat1, lng2, lat2 = map(radians, [lng1, lat1, lng2, lat2])
    x = (lng2 - lng1) * cos( 0.5*(lat2+lat1) )
    y = lat2 - lat1
    d = R * sqrt( x*x + y*y )
    return d

distance(25.42684996,81.84835984,25.45328992,81.86906992)
**Out[77]: 3.6011256577543027**

答案是3.60。。公里。但当我在谷歌地图上交叉核对时,发现是609公里。有人能指出这里的错误是什么吗?你知道吗

我也提到了HERE和其他链接

如果你有“R”码,那绝对没问题!!!你知道吗

还有,有没有什么方法可以用python找出google建议的最短路径?你知道吗


Tags: 代码from距离朋友单位mathsqrtcos
1条回答
网友
1楼 · 发布于 2024-10-17 06:27:47

试试这个:

from math import *

def greatCircleDistance((lat1, lon1), (lat2, lon2)):
  def haversin(x):
    return sin(x/2)**2 
  return 2 * asin(sqrt(
      haversin(lat2-lat1) +
      cos(lat1) * cos(lat2) * haversin(lon2-lon1)))

这将返回球体上点之间的角度距离。要获得长度(公里)的距离,将结果与地球半径相乘。你知道吗

相关问题 更多 >