首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何计算pandas数据帧中两个站点的纬度和经度之间的距离

要计算pandas数据帧中两个站点的纬度和经度之间的距离,可以使用Haversine公式。Haversine公式用于计算地球表面两点之间的最短距离(大圆距离)。以下是详细的步骤和示例代码:

基础概念

Haversine公式基于球面三角学,适用于计算地球表面上两点之间的距离。公式如下:

[ a = \sin^2\left(\frac{\Delta \phi}{2}\right) + \cos(\phi_1) \cdot \cos(\phi_2) \cdot \sin^2\left(\frac{\Delta \lambda}{2}\right) ]

[ c = 2 \cdot \text{atan2}\left(\sqrt{a}, \sqrt{1-a}\right) ]

[ d = R \cdot c ]

其中:

  • (\phi_1) 和 (\phi_2) 是两点的纬度(以弧度表示)
  • (\lambda_1) 和 (\lambda_2) 是两点的经度(以弧度表示)
  • (\Delta \phi = \phi_2 - \phi_1)
  • (\Delta \lambda = \lambda_2 - \lambda_1)
  • (R) 是地球半径,约为6371公里

相关优势

  • 准确性:Haversine公式考虑了地球的球面形状,计算结果较为准确。
  • 适用性:适用于全球范围内的距离计算。

类型

  • 地理距离计算:用于计算地球上两点之间的最短距离。

应用场景

  • 地理信息系统(GIS):用于地图上的距离测量和分析。
  • 物流和运输:用于计算两个地点之间的运输距离。
  • 天气预报:用于计算不同气象站之间的距离。

示例代码

以下是一个使用Python和pandas计算两个站点之间距离的示例代码:

代码语言:txt
复制
import pandas as pd
import numpy as np

# 示例数据帧
data = {
    'site': ['A', 'B'],
    'latitude': [34.0522, 40.7128],
    'longitude': [-118.2437, -74.0060]
}
df = pd.DataFrame(data)

# 将纬度和经度转换为弧度
df['latitude'] = np.radians(df['latitude'])
df['longitude'] = np.radians(df['longitude'])

# 计算两个站点之间的距离
R = 6371  # 地球半径,单位为公里

def haversine(row):
    phi1, lon1 = row['latitude'], row['longitude']
    phi2, lon2 = df.loc[df['site'] != row['site'], 'latitude'].values[0], df.loc[df['site'] != row['site'], 'longitude'].values[0]
    
    dphi = phi2 - phi1
    dlon = lon2 - lon1
    
    a = np.sin(dphi / 2) ** 2 + np.cos(phi1) * np.cos(phi2) * np.sin(dlon / 2) ** 2
    c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1 - a))
    
    return R * c

df['distance'] = df.apply(haversine, axis=1)

print(df)

解决问题的步骤

  1. 数据准备:确保数据帧中包含站点的纬度和经度信息。
  2. 单位转换:将纬度和经度从度数转换为弧度。
  3. 计算距离:使用Haversine公式计算两个站点之间的距离。
  4. 结果存储:将计算结果存储在数据帧中。

参考链接

通过以上步骤和代码示例,你可以计算pandas数据帧中两个站点的纬度和经度之间的距离。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java计算两个经纬度之间的距离

实现方式还是比较简单的,首先用户在APP上开启定位权限,将自己的经纬度都存储到数据库,然后以此经纬度为基准,以特定距离为半径,查找此半径内的所有用户。...那么,如何java如何计算两个经纬度之间的距离呢?有两种方法,误差都在接受范围之内。 1、基于googleMap中的算法得到两经纬度之间的距离,计算精度与谷歌地图的距离精度差不多。...s = s * EARTH_RADIUS; s = Math.round(s * 10000) / 10000; return s; } 2、计算中心经纬度与目标经纬度的距离...(米) /** * 计算中心经纬度与目标经纬度的距离(米) * * @param centerLon * 中心精度 * @...两点相距:" + dist2 + " 米"); } 其中:1.两点相距:14.0 米 2.两点相距:15.924338550347233 米 由此可见,这两种方法误差都不算大,如此java就能计算出两个经纬度直接的距离

10.3K20
  • java计算两个经纬度之间的距离

    实现方式还是比较简单的,首先用户在APP上开启定位权限,将自己的经纬度都存储到数据库,然后以此经纬度为基准,以特定距离为半径,查找此半径内的所有用户。...那么,如何java如何计算两个经纬度之间的距离呢?有两种方法,误差都在接受范围之内。 1、基于googleMap中的算法得到两经纬度之间的距离,计算精度与谷歌地图的距离精度差不多。...s = s * EARTH_RADIUS; s = Math.round(s * 10000) / 10000; return s; } 2、计算中心经纬度与目标经纬度的距离...(米) /** * 计算中心经纬度与目标经纬度的距离(米) * * @param centerLon * 中心精度 * @param...两点相距:" + dist2 + " 米"); } 其中:1.两点相距:14.0 米 2.两点相距:15.924338550347233 米 由此可见,这两种方法误差都不算大,如此java就能计算出两个经纬度直接的距离

    3K93

    如何计算经纬度之间的距离_根据经纬度算距离

    大家好,又见面了,我是你们的朋友全栈君 用php计算两个指定的经纬度地点之间的距离,代码: /** *求两个已知经纬度之间的距离,单位为米 *@param lng1,lng2 经度 *@param lat1...,lat2 纬度 *@return float 距离,单位米 *@edit www.jbxue.com **/ function getdistance(lng1,lat1,lng2,lat2){ /...> 举例,“上海市延安西路2055弄”到“上海市静安寺”的距离: 上海市延安西路2055弄 经纬度:31.2014966,121.40233369999998 上海市静安寺 经纬度:31.22323799999999,121.44552099999998...几乎接近真实的距离了,看来用php计算两个经纬度地点之间的距离,还是靠谱的,呵呵。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    4.6K40

    两个经纬度之间的距离计算公式excel_excel经纬度坐标计算距离

    大家好,又见面了,我是你们的朋友全栈君。...已知AB列分别为起点经纬度,CD列分别终点经纬度,根据两点经纬度计算距离 在E2单元格里输入: =6371004*ACOS(1-(POWER((SIN((90-B2)*PI()/180)COS...SIN((90-D2)*PI()/180)SIN(C2PI()/180)),2)+POWER((COS((90-B2)*PI()/180)-COS((90-D2)*PI()/180)),2))/2) 计算出第二行两点的距离...: 点击E2单元格,将鼠标移动到右下角小正方形点上,此时鼠标变为+号,双击鼠标,计算出所有数据的距离: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.4K20

    你在小程序中怎么计算两个经纬度的距离?

    你还在为小程序中计算两个经纬度之间的距离发愁吗? 你还在为小程序中地址逆向解析发愁吗? 你还在为小程序中路线规划,地点搜索发愁吗? 好消息!好消息!...有了官方支持时的调用 1 没有官方支持时的调用 在没有官方支持时,小程序中的位置获取,可以采用腾讯地图,高德地图,百度地图都可以,但是你需要先通过小程序的wx.getLocation 获取当前的经纬度,...图1 腾讯地图的webservice api 接口 要想获得两个经纬度点时,你可以手动自己写一个获取经纬度距离的函数,代码如下: // 方法定义 lat,lng function GetDistance...API 实现自己的服务接口,如图2 腾讯地图webservice API 计算两个经纬度的距离。...如图2 腾讯地图webservice API 计算两个经纬度的距离 2 有了官方支持时的调用 最近需要做小程序的地址解析和计算距离,查看 腾讯地图开放平台时,发现平台已经支持小程序中的使用了,如图3。

    3K20

    Java 中,如何计算两个日期之间的差距?

    参考链接: Java程序计算两组之间的差异 今天继续分享一道Java面试题:  题目:Java 中,如何计算两个日期之间的差距? ...查阅相关资料得到这些知识,分享给大家:  java计算两个日期相差多少天小时分钟等    转载2016年08月25日 11:50:00  1、时间转换  data默认有toString() 输出格林威治时间...,比如说Date date = new Date(); String toStr = date.toString(); 输出的结果类似于: Wed Sep 16 19:02:36 CST 2012   ...1000* 24* 60* 60;     longnh = 1000* 60* 60;     longnm = 1000* 60;     // long ns = 1000;     // 获得两个时间的毫秒时间差异...计算差多少小时     longhour = diff % nd / nh;     // 计算差多少分钟     longmin = diff % nd % nh / nm;     // 计算差多少秒

    7.7K20

    特征工程:Kaggle刷榜必备技巧(附代码)!!!

    让我们将数据帧添加到其中。添加dataframe的顺序并不重要。要将数据帧添加到现有的实体集中,我们执行以下操作。 ? 因此,我们在这里做了一些将数据帧添加到空的实体集存储桶的事情。...以gzip格式提交Kaggle: 一小段代码可以帮助你节省无数小时的上传时间。请享用。 ? 使用纬度和经度特征 本部分将详细介绍如何很好地使用经纬度特征。 对于此任务,我将使用操场比赛的数据: ?...我们创建了以下特征: A.两个纬度/经度之间的半正矢距离: 根据其纬度和经度,半正矢公式确定了一个球面上两点之间的大圆距离。 ? 然后我们可以像这样使用函数: ?...B.两个纬度/经度之间的曼哈顿距离 ? 按直角轴测量两点间距离 ? 然后我们可以像这样使用函数: ? C.两个纬度/经度之间的方位 一个方位通常表示一个点相对于另一个点的方向。 ?...D.上下车点间的中心纬度和经度 这些是我们新创建的列: ? ? 原因一:结构化数据 ▍自动编码器 有时人们也使用自动编码器来创建自动特征。 什么是自动编码器?

    5.1K62

    基于Dijkstra算法的武汉地铁路径规划!

    1.数据爬取 首先是需要获得武汉各个地铁的地铁站信息,通过爬虫爬取武汉各个地铁站点的信息,并存储到xlsx文件中 武汉地铁线路图,2021最新武汉地铁线路图,武汉地铁地图-武汉本地宝wh.bendibao.com...这个时候高德地图就给你了一个key 3.得到地铁站的经度和纬度 配置一个get_location函数区访问高德地图的api 然后返回经度和纬度 def get_location(keyword,city.../subway.xlsx',index=False) 4.得到地铁站之间的距离并构建图 计算各个地铁站的信息,并生成地铁站网络 现在我们得到了地铁站的经度和纬度 可以通过geopy.distance这个包来计算...2点之间的距离 from geopy.distance import geodesic print(geodesic((纬度,经度), (纬度,经度)).m) #计算两个坐标直线距离 当然高德地图api...也同样提供了计算距离的接口 我们来配置计算距离的函数 输入经度和纬度就可以计算距离 def compute_distance(longitude1,latitude1,longitude2,latitude2

    1.2K20

    Python实践 | 亿级经纬度距离计算工具V2

    计算经纬度的代码网上一搜一大把,通常是单点距离的计算,无法实现批量计算,本文将利用pandas实现亿级经纬度距离代码的实现。 最短距离计算建议参考下文,mapinfo能够很好的实现。...MAPINFO 最小站间距统计 本文将实现两张表的任意点之间100、200、300、500、800、1000米范围内的距离计算。...由于地球是球形,不同纬度下,同一经度差值对应的距离不同,纬度相同且纬度越大时,同一经度对应的距离越小,中国经纬度跨度约为73°33′E至 135°05′E;纬度范围:3°51′N至53°33′N,此处为了计算最大经度差值...pandas分别导入源表和目标表,两个表关联得到原点与目标点的所有配对 1file_name = r'D:\python\geo\sTable.csv' 2df1=pd.read_csv(file_name...,我们选取纬度值54.0获取了最大的经度差值,随着纬度减小,此时计算的距离会大于该阈值,所以要对初次计算结果进行过滤,得出满足阈值的条目: 1distance = distance.append(nn[

    2.5K31

    Python实践 | 亿级经纬度距离计算代码实现

    计算经纬度的代码网上一搜一大把,通常是单点距离的计算,无法实现批量计算,本文将利用pandas实现亿级经纬度距离代码的实现。 最短距离计算建议参考下文,mapinfo能够很好的实现。...MAPINFO 最小站间距统计 本文将实现两张表的任意点之间100、200、300、500、800、1000米范围内的距离计算。...由于地球是球形,不同纬度下,同一经度差值对应的距离不同,纬度相同且纬度越大时,同一经度对应的距离越小,中国经纬度跨度约为73°33′E至 135°05′E;纬度范围:3°51′N至53°33′N,此处为了计算最大经度差值...,我们选取纬度为54.0;不同经度下,同一纬度差异对应的距离相同 ?...pandas分别导入源表和目标表,两个表关联得到原点与目标点的所有配对 1file_name = r'D:\python\geo\stable.csv' 2df1=pd.read_csv(file_name

    4.3K30

    从wrfout 提取站点数据

    数据准备是机器学习的基础,俗话说巧妇难为无米之炊,没有数据的机器学习就是耍流氓。...接下来将使用公众号其他成员分享的内容现学现卖一篇,文章中使用了我们公众号成员推荐的Xarray库、wrf-python库,目的是从WRF模式输出提取出站点在不同高度/等压面数据。...:',ind) print('距离站点最近格点的经度为:',XLONG_WRF2D[ind[0],ind[1]]) print('距离站点最近格点的纬度为:',XLAT_WRF2D[ind[0],ind...[1]]) 距离该站点最近的格点经纬度索引为: (96, 93) 第一个站点的经度为: 133.04703 第一个站点的纬度为: 18.168343 注:站点经纬度坐标是随便写的,以脱敏,如有雷同,...dataframe 表格文件,列名为 站点ID ,站点经度, 站点纬度, 最近格点经度索引,最近格点纬度索引 features_3D :wrfout中三维变量,如u,v,T features

    8.9K61

    如何在 Pandas 中创建一个空的数据帧并向其附加行和列?

    Pandas是一个用于数据操作和分析的Python库。它建立在 numpy 库之上,提供数据帧的有效实现。数据帧是一种二维数据结构。在数据帧中,数据以表格形式在行和列中对齐。...它类似于电子表格或SQL表或R中的data.frame。最常用的熊猫对象是数据帧。大多数情况下,数据是从其他数据源(如csv,excel,SQL等)导入到pandas数据帧中的。...在本教程中,我们将学习如何创建一个空数据帧,以及如何在 Pandas 中向其追加行和列。...Python 中的 Pandas 库创建一个空数据帧以及如何向其追加行和列。...我们还了解了一些 Pandas 方法、它们的语法以及它们接受的参数。这种学习对于那些开始使用 Python 中的 Pandas 库对数据帧进行操作的人来说非常有帮助。

    28030

    手把手教你用Python进行城市公交网络分析与可视化

    一、数据查看和预处理 数据获取自高德地图API,包含了天津市公交线路和站点名称及其经纬度数据。...字段说明: 线路名称:公交线路的名称 上下行:0表示上行;1表示下行 站序号:公交线路上行或下行依次经过站的序号 站名称:站点名称 经度(分):站点的经度 纬度(分):站点的纬度 数据字段少,结构也比较简单...,下面来充分了解我们的数据和进行预处理。...总的数据有 30396 条,站名称缺失了 5 条,纬度(分)缺失了 1 条,经度(分)缺失了 38 条,为了处理方便,直接把有缺失值的行删除。 ?...聚类系数是研究节点邻居之间的连接紧密程度,因此不必考虑边的方向。对于有向图,将其当成无向图来处理。网络聚类系数大,表明网络中节点与其附近节点之间的连接紧密度程度高,即与实际站点之间的公交线路连接密集。

    2.7K10

    20个超级实用的 Python 自动化办公技巧

    本文就给大家介绍几个我用到的办公室自动化技巧: 1、Word文档doc转docx 去年想参赛一个数据比赛, 里面的数据都是doc格式, 想用python-docx 读取word文件中的数据, 但是python-docx...pass print('转换文件%i个'%i) # 退出word word.Quit() 2、文字地址批量转经纬度 工作中地址转经纬度会用在做地图可视化或者计算距离方面...[i,3] = getlnglat(data.iloc[i,1])[1] # 纬度 except: pass #print(i) data 3、经纬度计算距离 安装工具包...('C:/Users/yyz/Desktop/python办公技巧/data/经纬度计算距离.xlsx') data 3.3 计算距离 # 将经纬度赋值给变量,简化 wd1 = data['纬度1']...lis1.append(j) #print(i) data['距离'] = lis1 data 4、百度经纬度转高德经纬度 公司有2个系统,用的坐标系不一样, 有时候需要转换一下 4.1

    6.9K20

    SQL SERVER 根据地图经纬度计算距离函数

    拿到这个请求后,不知道如何下手,静静地想了一下,在酒店的表中增加两个字段,用来存储酒店所在的经度和纬度,当订餐的时候,要求手机得到当前客户所在的经度和纬度传过来,再与数据库中酒店的经度和纬度计算一下,就查出来...为了在数据库中查询两点之间的距离,所以这个函数需要在数据库中定义。 我网上找了很久,却没有找到这个函数。...--计算地球上两个坐标点(经度,纬度)之间距离sql函数 --作者:lordbaby --整理:www.aspbc.com CREATE FUNCTION [dbo...5公里的数据 SELECT * FROM 商家表名 WHERE dbo.fnGetDistance(121.4625,31.220937,longitude,latitude) 的longitude,latitude分别是酒店的经度和纬度字段,而121.4625,31.220937是手机得到的当前客户所在的经度,后面的5表示5公里范围之内。

    1.1K30

    Redis高级篇之GEO搜索最近地铁口

    前言交友软件中附近的小姐姐、外卖软件中附近的美食店铺、地图附近的地铁等等,那附近各种形形色色的XXX地址位置选择是如何实现的?...哈希表用于存储地理位置的元数据,例如地点名称、地址等;有序集合用于存储地理位置的坐标信息,例如经度和纬度。坐标编码GEO数据结构使用经纬度表示地理位置的坐标信息。...经纬度是一种常用的地理坐标系统,它使用经度和纬度来表示地球上的位置。在GEO数据结构中,经度和纬度被编码为一个64位的整数,以便进行高效的计算和比较。...距离计算GEO数据结构使用Haversine公式来计算两个地理位置之间的距离。Haversine公式是一种常用的距离计算方法,它可以计算地球上两点之间的距离,考虑到地球的曲率。...在GEO数据结构中,Haversine公式被用于计算两个地理位置之间的距离,以便进行搜索和排序。搜索算法GEO数据结构使用了一种基于跳表的搜索算法来实现高效的地理位置搜索。

    59732

    Redis 实战篇:Geo 算法教你邂逅附近女神

    附近的人核心思想如下: 以 “我” 为中心,搜索附近的 Ta; 以 “我” 当前的地理位置为准,计算出别人和 “我” 之间的距离; 按 “我” 与别人距离的远近排序,筛选出离我最近的用户。...MySQL 实现 “计算「附近的人」,通过一个坐标计算这个坐标附近的其他数据,按照距离排序,如何下手呢?...” 我们可以通过区域来过滤出有限「女神」坐标数据,再对矩形区域内的数据进行全量距离计算再排序,这样计算量明显降低。 “如何划分矩形区域呢?...,距离靠近的二维坐标映射到一维后的点之间距离也会很接近。...在进行第一次二分区时,经度范围[-180,180]会被分成两个子区间:[-180,0) 和[0,180](我称之为左、右分区)。 此时,我们可以查看一下要编码的经度值落在了左分区还是右分区。

    1.7K10
    领券