python实现根据两点经纬度计算实际距离

原创 2016年07月06日 17:36:54

下面是python 两种方法实现的距离的计算,可能误差有一定的区别

# -*- coding: utf-8 -*- 
from math import*
def Distance1(Lat_A,Lng_A,Lat_B,Lng_B): #第一种计算方法
    ra=6378.140 #赤道半径
    rb=6356.755 #极半径 (km)
    flatten=(ra-rb)/ra  #地球偏率
    rad_lat_A=radians(Lat_A)
    rad_lng_A=radians(Lng_A)
    rad_lat_B=radians(Lat_B)
    rad_lng_B=radians(Lng_B)
    pA=atan(rb/ra*tan(rad_lat_A))
    pB=atan(rb/ra*tan(rad_lat_B))
    xx=acos(sin(pA)*sin(pB)+cos(pA)*cos(pB)*cos(rad_lng_A-rad_lng_B))
    c1=(sin(xx)-xx)*(sin(pA)+sin(pB))**2/cos(xx/2)**2
    c2=(sin(xx)+xx)*(sin(pA)-sin(pB))**2/sin(xx/2)**2
    dr=flatten/8*(c1-c2)
    distance=ra*(xx+dr)
    return distance
def Distance2(lat1,lng1,lat2,lng2):# 第二种计算方法
    radlat1=radians(lat1)  
    radlat2=radians(lat2)  
    a=radlat1-radlat2  
    b=radians(lng1)-radians(lng2)  
    s=2*asin(sqrt(pow(sin(a/2),2)+cos(radlat1)*cos(radlat2)*pow(sin(b/2),2)))  
    earth_radius=6378.137  
    s=s*earth_radius  
    if s<0:  
        return -s  
    else:  
        return s
Lat_A=32.060255; Lng_A=118.796877 # 南京
Lat_B=39.904211; Lng_B=116.407395 # 北京
distance=Distance1(Lat_A,Lng_A,Lat_B,Lng_B)
print('(Lat_A, Lng_A)=({0:.6f},{1:.6f})'.format(Lat_A,Lng_A))
print('(Lat_B, Lng_B)=({0:.6f},{1:.6f})'.format(Lat_B,Lng_B))
print('Distance1={0:.3f} km'.format(distance))
print('Distance2={0:.3f} km'.format(Distance2(Lat_A,Lng_A,Lat_B,Lng_B)))

结果:
(Lat_A, Lng_A)=(32.060255,118.796877)
(Lat_B, Lng_B)=(39.904211,116.407395)
Distance1=896.533 km
Distance2=899.218 km
版权声明:本文为博主原创文章,未经博主允许不得转载。

Python计算地图上两点经纬度间的距离

处理地图数据时,经常需要用到两个地理位置间的距离。比如A点经纬度(110.0123, 23.32435),B点经纬度(129.1344,25.5465),求AB两点之间的距离。我们可以用haversi...
  • vernice
  • vernice
  • 2015年06月21日 12:28
  • 18091

python函数——根据经纬度计算距离公式的错误及修正

#coding: utf-8 #封装函数 import math def cal_dis(latitude1, longitude1,latitude2, longitude2): latitude...
  • ztf312
  • ztf312
  • 2015年08月12日 19:36
  • 3163

python3-经纬度的相关计算

一.计算两个点之间的距离(经纬度的计算)#from math import radians, cos, sin, asin, sqrt from math import * def haversine...
  • shursulei
  • shursulei
  • 2017年07月06日 17:21
  • 384

python利用地图两个点的经纬度计算两点间距离

这种文章本来网上一搜一大把,但有的计算结果是错的,遂找到个计算正确的,记录一下。 参考原文:LBS 球面距离公式 from math import sin, asin, cos, radians,...
  • u013401853
  • u013401853
  • 2017年06月17日 10:23
  • 1984

根据经纬度计算两点之间的距离的公式推导过程以及google.maps的测距函数

网上有很多关于谷歌地图计算两点距离函数的代码,却没有人解释这个算法由何依据而得,这是因为我要做毕业设计,刚好又是在高考期间,所以通过计算这道数学题来打赢这场仗吧。希望可以给后来人一点帮助。...
  • xiejm2333
  • xiejm2333
  • 2017年06月15日 18:28
  • 2949

如何通过经纬度粗略计算地球两点之间的距离?直接上代码

我们通过两点之间的经纬度,可以知道两点之间大致的夹角是多少度(相对地心来说)。这个可以通过勾股定理大致求得,当然这样求出来的角度不是很准,但足够用了。 可以通过下列式子计算两点之间的夹角。x1,y1为...
  • sinat_23079759
  • sinat_23079759
  • 2016年09月21日 14:21
  • 2341

Python 根据百度 API 获得经纬度,根据经纬度计算城市间距离

百度提供的查询经纬度的 api 为: 一个现成的 key 为:f247cdb592eb43ebac6ccd27f796e2d2// 返回 json http://api.map.baidu.com/...
  • lanchunhui
  • lanchunhui
  • 2016年04月21日 11:52
  • 3375

利用JS实现的根据经纬度计算地球上两点之间的距离

最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下。 计算地球表面两点间的距离大概有两种办法。 第一种是默认地球是一个光滑的球面,然后计算任意两点间的距离,这个距离叫做大圆距...
  • bbsyi
  • bbsyi
  • 2016年03月01日 15:30
  • 574

根据两点经纬度计算距离

根据两点经纬度计算距离 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距...
  • koryako
  • koryako
  • 2016年07月08日 21:57
  • 19405

根据两点经纬度坐标计算距离

问题提出目前手头的一个项目要用到GPS地理定位信息,很自然的就需要知道两个地点之间的距离,于是上网找了一下。背景知识这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地...
  • gatieme
  • gatieme
  • 2015年05月09日 11:23
  • 7976
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python实现根据两点经纬度计算实际距离
举报原因:
原因补充:

(最多只允许输入30个字)