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实现两个经纬度点之间的距离和方位角

最近做有关GPS轨迹上有关的东西,花费心思较多,对两个常用的函数总结一下,求距离和求方位角,比较精确,欢迎交流! 另欢迎关注:https://github.com/1zzzzzzzzz      ...

Python爬取全国主要城市经纬度坐标

1、首先注册百度或高德地图的开发密钥。 2、在Python搞爬虫,你可能需要这几个库,json,urllib,直接pip就行。 import json from urllib.request im...

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

处理地图数据时,经常需要用到两个地理位置间的距离。比如A点经纬度(110.0123, 23.32435),B点经纬度(129.1344,25.5465),求AB两点之间的距离。我们可以用haversi...

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

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

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

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

python 各类距离公式实现

所列的距离公式列表和代码如下: 闵可夫斯基距离(Minkowski Distance) 欧氏距离(Euclidean Distance) 曼哈顿距离(Manhattan Distan...

由“warning: no newline at end of file”引申而来

公司有一个服务器软件,是跨平台的,一般我们在Windows下用VC6这个古老的IDE编辑,同时编译出Windows下的可执行文件。编译Linux平台下的可执行文件,则启动VMWare,通过Share ...

利用matplotlib在python上绘制3D散点图

参考官方演示文档 首先,需要导入第三包: import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D 然后绘图: a...

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

百度提供的查询经纬度的 api 为: 一个现成的 key 为:f247cdb592eb43ebac6ccd27f796e2d2// 返回 json http://api.map.baidu.com/...

在百度地图API开发中已知两个点之间的经纬度坐标计算其距离

以往网上给出了计算方法,但是double类型的数后面有很多位小数,现在给出一个函数,其值跟百度地图APP软件的距离一样
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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