精华内容
下载资源
问答
  • 2021-02-09 15:40:01

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

    from math import radians, cos, sin, asin, sqrt
    
    def haversine(lon1, lat1, lon2, lat2):
        lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
        dlon = lon2 - lon1
        dlat = lat2 - lat1
        a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2
        c = 2 * asin(sqrt(a))
        r = 6371
        return c * r
    

    参数说明

    lon1为第一个点的经度
    lat1为第一个点纬度
    lon2为第二个点经度
    lat2为第二个点纬度

    更多相关内容
  • 复制代码 代码如下:/** * 计算两点之间距离 * @param _lat1 – start纬度 * @param _lon1 – start经度 * @param _lat2 – end纬度 * @param _lon2 – end经度 * @return km(四舍五入) */public static ...
  • python 经纬度计算距离

    2018-07-15 16:52:04
    python 经纬度计算距离,输入经纬度即可计算亮点距离,导入即可调用。
  • 前些天由于工作中需求,要计算经纬度之间的距离,当我去网上搜索距离计算的方法时,发现很多文章中的方法乍一看都是很不同的,同是进行距离计算,为啥这么不一样呢?后来才发现问题在于很多文章没有进行相关的原理...
  • Python】根据经纬度计算距离

    千次阅读 2022-01-10 15:21:44
    km 方法二: #调用geopy包中的方法 from geopy.distance import geodesic # 输入的格式:纬度,经度 print(geodesic((30.28708,120.12802999999997), (28.7427,115.86572000000001)).m) #计算两个坐标直线距离 print...

    方法一:

    #调用haversine 包中的方法

    from haversine import haversine
    
    # 输入的格式:经度,纬度
    linfen = (111.5,36.08) 
    shanghai = (121.47,31.23)
    dis = haversine(linfen,shanghai)
    print(dis)
    
    # 结果
    1133.5471931316163 #单位 km
    

    方法二:

    #调用geopy包中的方法

    from geopy.distance import geodesic
    
     # 输入的格式:纬度,经度
    print(geodesic((30.28708,120.12802999999997), (28.7427,115.86572000000001)).m) #计算两个坐标直线距离
    print(geodesic((30.28708,120.12802999999997), (28.7427,115.86572000000001)).km) #计算两个坐标直线距离
    
    # 结果
    447.2497993542003  # 千米
    

    需要注意的是:

    geodesic((30.28708,120.12802999999997), (28.7427,115.86572000000001))
    结果:447.2497993542003 km
    
    geodesic((30.28708,120.12802999999997), (28.7427,115.86572000000001)).km
    结果:447.2497993542003
    
    展开全文
  • Python根据经纬度计算距离

    千次阅读 2020-05-16 17:07:27
    做房产数据分析的时候在数据集遇到有经纬度,好奇怎么用Python计算两地的距离。 先查查算距离的公式(地球是立体的是圆哒,算欧几里得距离是要做地鼠的哦) 在这个计算距离网站有,输入两点的经纬度可以给你算出来...

    做房产数据分析的时候在数据集遇到有经纬度,好奇怎么用Python计算两地的距离。
    先查查算距离的公式(地球是立体的是圆哒,算欧几里得距离是要做地鼠的哦)

    在这个计算距离网站有,输入两点的经纬度可以给你算出来距离,下面也有给出计算公式:
    Haversine公式:计算球面距离

    a = sin ⁡ 2 ( Δ φ / 2 ) + cos ⁡ φ 1 ⋅ cos ⁡ φ 2 ⋅ sin ⁡ 2 ( Δ λ / 2 ) c = 2 ⋅ atan 2 ( a , 1 − a ) d = R ⋅ c \begin{aligned}a &= \sin^2(\Delta\varphi/2)+\cos\varphi_1\cdot\cos\varphi_2\cdot\sin^2(\Delta\lambda/2)\\ c&=2\cdot \text{atan}2(\sqrt{a},\sqrt{1-a})\\ d&=R\cdot c \end{aligned} acd=sin2(Δφ/2)+cosφ1cosφ2sin2(Δλ/2)=2atan2(a ,1a )=Rc

    φ \varphi φ是纬度 (latitude), λ \lambda λ是经度 (longitude), R R R在这里就是地球的半径6,371km。atan2是一个三角函数,详情可以看这里,Python的 math.atan2 直接用,不怕不怕。
    需要注意:note that angles need to be in radians to pass to trig functions! 经纬度需要转换成弧度,用 math.radians 转换就行。

    def haversine(lat1, long1, lat2, long2):
        from math import radians, sin, cos, atan2, sqrt
        lat1, long1, lat2, long2 = map(radians, [lat1, long1, lat2, long2])
        a = sin((lat1-lat2)/2)**2 + cos(lat1)*cos(lat2)*(sin((long1-long2)/2)**2)
        c = 2 * atan2(sqrt(a), sqrt(1-a))
        return 6371 * c
    

    算出来的结果是以km为单位的~

    展开全文
  • 经纬度计算距离公式: 其中: 1、Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度; 2、a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度之差; 3、6378.137为地球半径,单位为千米; 4、计算出来的...

    要了解原理的,看这里:纬度计算距离公式原理.

    一、经纬度计算距离公式:

    在这里插入图片描述
    其中:
    1、Long1 Lat1表示A点经纬度, Long2 Lat2表示B点经纬度;

    2、a=Lat1 – Lat2 为两点纬度之差 b=Long1 -Long2 为两点经度之差;

    3、6378.137为地球半径,单位为千米;

    4、计算出来的结果单位为千米,若将半径改为米为单位则计算的结果单位为米;

    5、计算精度与谷歌地图的距离精度差不多,相差范围在0.2米以下。

    二、实战例子

    处理前的数据长这样:

    在这里插入图片描述
    接下来就使用pandas包处理,这里要注意:这里数据的纬度、经度使用的是“度分”表示的,也就是说前两位用的是度,后两位用的是分,所以需要变换成”度“,再换算成“弧度”计算才合适。

    import pandas as pd
    import math
    
    
    def read_file(filename):
        f = pd.read_excel(filename)
        print(f.iloc[:, [1, 3, 4]])
        station_number = f.iloc[:, [1]]  # 后面要加“[]”,不然就自动转换成了series类型,不能使用iloc函数了
        lat = f.iloc[:, [3]]
        long = f.iloc[:, [4]]
        return station_number, lat, long
    
    
    # 由经纬度计算节点之间的距离
    def jisuan_jiedian_juli(filename):
        station_number, lat, long = read_file(filename)
        stage = [] # 定义列表,存放每两个站点之间的距离
        for i in range(len(station_number)):
            for j in range(i+1, len(station_number)):
                lat1 = jiaodu_zhuanhuan_hudu(lat.iloc[i, 0])
                lat2 = jiaodu_zhuanhuan_hudu(lat.iloc[j, 0])
                long1 = jiaodu_zhuanhuan_hudu(long.iloc[i, 0])
                long2 = jiaodu_zhuanhuan_hudu(long.iloc[j, 0])
                a = lat1 - lat2  # 纬度差的绝对值
                b = long1 - long2  # 经度差的绝对值
                ant = pow(math.sin(a/2), 2) + math.cos(lat1)*math.cos(lat2)*pow(math.sin(b/2), 2)  # 公式
                s = 2*6378.137*math.asin(pow(ant, 0.5))
                stage.append([i, j, s])
        print(stage)
        f = pd.DataFrame(stage, columns=["from", "to", "cost"])
        f.to_csv("zhandian.csv", index=None)  # 保存成.csv文件
    
    
    # 将角度转换为弧度
    def jiaodu_zhuanhuan_hudu(degree_minute):
        degree = degree_minute // 100  # 度
        minute = degree_minute % 100  # 分
        degree = degree + minute / 60  # 将分转换为度,并相加
        degree = float("%.2f" % degree)  # 保留两位小数
    
        rad = degree * math.pi / 180
        return rad
    
    
    if __name__ == "__main__":
        jisuan_jiedian_juli(r"C:\Users\MSZ\Desktop\dataset\zhandian.xlsx")
        print("finish!")
    
    

    结果:

    在这里插入图片描述

    展开全文
  • python 计算经纬度距离,大地距离 最近做GPS轨迹挖掘,需要求两点间球面距离(大地距离)。网上没有很好的代码,于是写了这个。 先贴公式 对于点A 和 点B, 两点距离 D = arccos((sin北纬A×sin北纬B)+(cos北纬A×...
  • 比如A点经纬度(110.0123, 23.32435),B点经纬度(129.1344,25.5465),求AB两点之间的距离。我们可以用haversine()函数求出距离结果。Python版本的haversine()如下所示:from math import radians, cos, sin, asin, ...
  • python通过两点经纬度计算两点间直线距离
  • Python 优雅地利用两点经纬度计算地理空间距离

    千次阅读 多人点赞 2021-10-15 12:42:33
    比如 A 点经纬度(30.553949,114.357399),B点经纬度(129.1344,25.5465),求 AB 两点之间的距离。 已知地球上任意两点(lng1,lat1),(lng2, lat2)的经纬度坐标,求两点间的距离可以利用 haversine 公式: ...
  • python通过经纬度计算两点之间距离

    千次阅读 2019-07-03 23:02:34
    "用haversine公式计算球面两点间的距离。" # 经纬度转换成弧度 lat0 = radians(lat0) lat1 = radians(lat1) lng0 = radians(lng0) lng1 = radians(lng1) dlng = fabs(lng0 - lng1) dlat = fabs(lat0 - lat1...
  • python 根据经纬度计算两点距离

    千次阅读 2019-05-07 13:45:40
    def calcDistance(Lng_A, Lat_A, Lng_B, Lat_B): ... 根据两个点的经纬度求两点之间的距离 :param Lng_A: 经度1 :param Lat_A: 维度1 :param Lng_B: 经度2 :param Lat_B: 维度2 :return: 单位米 """ ...
  • def get_distance(lon1, lat1, lon2, lat2): lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # radians 角度转弧度 d_lon = lon2 - lon1 d_lat = lat2 - lat1 a = sin(d_lat / 2)**2 + cos...
  • python 经纬度计算相关

    2020-05-21 18:23:16
    1,高德接口返回地址经纬度 import requests def getcode(site): parameters = { 'address' : site, 'key': '******高德平台申请******'} base = 'http://restapi.amap.com/v3/geocode/geo' response = ...
  • from math import radians, cos, sin, asin, sqrt#公式计算两点间距离(m)def geodistance(lng1,lat1,lng2,lat2):#lng1,lat1,lng2,lat2 = (120.12802999999997,30.28708,115.86572000000001,28.7427)lng1, lat1, ...
  • 指定两点地理位置经纬度距离计算#coding=utf-8from math import *# input Lat_A 纬度A# input Lng_A 经度A# input Lat_B 纬度B# input Lng_B 经度B# output distance 距离(km)def calcDistance(Lat_A, Lng_A, Lat_...
  • 这只是将代码矢量化:def new_get_distances(loc1, loc2):earth_radius = 3958.75locs_1 = np.deg2rad(loc1)locs_2 = np.deg2rad(loc2)lat_dif = (locs_1[:,0][:,None]/2 - locs_2[:,0]/2)lon_dif = (locs_1[:,1][:,...
  • 最近项目上有这样的需求,需要依据设备的经纬度坐标计算距离及角度。经验证后效果较好,并分享。 1 经纬度转换距离代码 #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'Seven' import math # 计算...
  • 最近做有关GPS轨迹上有关的东西,花费心思较多,对两个常用的函数总结一下,求距离和求方位角,比较精确,欢迎交流!1. 求两个经纬点的方位角,P0(latA, lonA), P1(latB, lonB)(很多博客写的不是很好,这里总结一下)...
  • python根据经纬度计算两点之间距离

    千次阅读 2020-09-19 16:52:10
    两种方法,一个是利用python库,另一个利用math函数计算,最后和百度地图测量的做对比 计算结果 447.249799354 446.72072701 447.02 百度地图测量 # 1. Python 库 from geopy.distance import geodesic aa = ...
  • 2,Geopy 2.1 Geopy 库介绍 ...Geopy作为一个专注于地理处理包之外, 除了能实现上面地理编码、逆地理编码功能之外,还有一个其它令我经验的功能, 提供两个经纬度坐标,计算他们在地球上的最短距离 下面将介.
  • // 根据坐标计算距离 // 方法定义 lat,lng function GetDistance(lat1, lng1, lat2, lng2) { var radLat1 = lat1 * Math.PI / 180.0; var radLat2 =...
  • Python已知经纬度求两点距离 from geopy.distance import geodesic from haversine import haversine if __name__ == '__main__': Guangzhou = (23.129, 113.264) # (纬度,经度) Beijing = (39.904, 116.407) ...
  • 查询经纬度,python实现经纬度换算+计算两地距离+地理可视化
  • 通过Python计算经纬度点任意角度任意距离经纬度点 # -*- coding: utf-8 -*- # @Time : 2019/6/6 8:13 # @Author : WangPeng from sympy import * from math import radians, cos, sin, asin, sqrt class Get_...
  • 闵可夫斯基距离(Minkowski Distance)2.欧氏距离(Euclidean Distance)3.曼哈顿距离(Manhattan Distance)4.切比雪夫距离(Chebyshev Distance)5.夹角余弦(Cosine)6.汉明距离(Hamming distance)7.杰卡德相似系数(Jaccard...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,646
精华内容 1,058
关键字:

python经纬度距离计算