首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏又见苍岚

    半正矢公式(Haversine公式)

    hav 函数 定义 hav(半正失 Haversine 的缩写)函数: \mathrm{hav}(\theta)=\sin^2\left(\frac{\theta}{2}\right)=\frac{1- 向量 Oa≡(cos(φ₁), 0, sin(φ₁)) cos(Θ)≡Oa·Ob/(∥Oa∥∥Ob∥)=\cos(φ₁)\cos(φ₂)\cos(λ)+\sin(φ₁)\sin(φ₂) 代入 haversine 6252208NFZouNS https://zh.wikipedia.org/wiki/半正矢公式 文章链接: https://www.zywvvd.com/notes/study/math/distance/haversine /haversine/

    3.1K21编辑于 2024-05-22
  • 来自专栏编程教程

    Python计算经纬度坐标点距离:从原理到实战

    (毫米级精度)★★★★实践建议:99%场景使用Haversine公式足够,需要毫米级精度时再考虑Vincenty公式。 二、Haversine公式的Python实现1. 公式解析Haversine公式通过半正矢函数解决球面距离计算,核心步骤:将经纬度转换为弧度计算经纬度差值应用Haversine函数通过反余弦得到中心角乘以地球半径得到距离数学表达式:a = sin²(Δφ 函数支持不同单位def haversine_extended(lon1, lat1, lon2, lat2, unit='km'): distance_km = haversine(lon1, lat1 对于大多数应用场景,Haversine公式在精度和性能之间取得了最佳平衡。当需要处理超大规模数据时,记得使用向量化计算和空间索引优化性能。

    78410编辑于 2025-10-28
  • 来自专栏Python进阶之路

    Python 优雅地利用两点经纬度计算地理空间距离

    已知地球上任意两点(lng1,lat1),(lng2, lat2)的经纬度坐标,求两点间的距离可以利用 haversine 公式: 首先先将经纬度坐标的角度化成弧度(rlng1,rlat1),(rlng2 更多有关 geopy 的使用可以学习官方文档: https://www.osgeo.cn/geopy/ 五、利用 haversine 库 pypi地址:https://pypi.org/project/ 用经纬度计算地球上两点之间的距离(以不同单位表示),pip install安装即可: Python代码如下: import haversine print(tuple(haversine.Unit) ) # 查看所有可用的单位 from haversine import haversine, Unit # 两点的经纬度 point1 = (39.995304, 116.308264) point2 ) print("距离:{:.3f}m".format(result2)) 结果如下: 利用 haversine 库计算距离的结果与手写 haversine 计算的结果一致!

    13.9K10编辑于 2021-12-07
  • 来自专栏SQL 周周练

    【SQL周周练】:利用行车轨迹分析犯罪分子作案地点

    而且此题目本意也是为了练习 Hive 三角函数,根据搜索,推荐使用 Haversine公式 来处理。 我还尝试了类似平面坐标系中计算欧式距离和曼哈顿距离的方法:在 Python 中我验证了后两者的 Haversine 的差距,因为这些坐标之间本身就很近,使用欧式距离也可以处理。 haversine_distance(gps1, gps2): lat1, lon1 = gps1 lat2, lon2 = gps2 R = 6371 * 1000 # 地球半径 , haversine_distance / (ts - lastts) as speed from calc_haversine_distance), classify_speed_table , haversine_distance / (ts - lastts) as speed from calc_haversine_distance), classify_speed_table

    23000编辑于 2025-05-17
  • 外卖配送系统搭建方法核心:调度算法与任务分配机制实现思路

    距离计算(Haversine公式)import mathdef haversine(lat1, lng1, lat2, lng2): R = 6371 # 地球半径 km dlat = math.radians riders: if rider.status == "idle" and rider.current_load < rider.max_load: distance = haversine * 当前负载权重 + γ * 历史效率权重 + δ * 区域优先级示例实现:def calculate_score(order, rider): distance = haversine batch_assign(orders, rider): # 简单示意:按距离排序 sorted_orders = sorted( orders, key=lambda o: haversine

    24810编辑于 2026-03-30
  • 来自专栏小冷coding

    你印象最深刻的两个bug是什么?

    我们查看了客户端的代码,发现在计算两个经纬度之间的距离时,我们使用了Haversine公式。然而,这个公式假设地球是一个完美的球体,而实际上地球是一个椭球体。 Vincenty公式是一种基于地球椭球体的测地线长度计算公式,相对于Haversine公式具有更高的精度。我们将客户端的代码进行了修改,使用Vincenty公式替换了原来的Haversine公式。

    48610编辑于 2023-11-22
  • 来自专栏水击三千

    经纬度转换-----度分秒以及经纬度和米

    Great-circle distance Haversine formula 值得一提的是,维基百科推荐使用Haversine公式,理由是Great-circle distance公式用到了大量余弦函数 而Haversine公式采用了正弦函数,即使距离很小,也能保持足够的有效数字。 以前采用三角函数表计算时的确会有这个问题,但经过实际验证,采用计算机来计算时,两个公式的区别不大。 稳妥起见,这里还是采用Haversine公式。 其中 R为地球半径,可取平均值 6371km; φ1, φ2 表示两点的纬度; Δλ 表示两点经度的差值。

    14.5K70发布于 2018-02-27
  • 来自专栏雨过天晴

    原 PHP下的经纬度求距离

    lat2 = ($lat2 * pi() ) / 180;      $lng2 = ($lng2 * pi() ) / 180;        /*        Using the        Haversine  formula        http://en.wikipedia.org/wiki/Haversine_formula        calculate the distance      */

    1.1K31发布于 2018-06-04
  • 来自专栏大数据杂货铺

    从 CPU 切换到 GPU 进行纽约出租车票价预测

    这是该函数以及如何将其应用于Pandas 中的数据帧 ( taxi_df ),从而生成一个新列 ( hav_distance ): def haversine_distance(x_1, y_1, x_ 2, y_2): haversine_distance(x_1, y_1, x_2, y_2): x_1 = pi/180 * x_1= pi/180 * x_1 y_1 = pi/180 * y_1= (row['pickup_latitude'],['hav_distance'] = taxi_df.apply(lambda row:haversine_distance(row['pickup_latitude '], row['pickup_longitude'],['pickup_longitude'], 相比之下,这里是cuDF中应用的haversine函数: def haversine_distance ,= taxi_df.apply_rows(haversine_distance, incols=['pickup_latitude',=['pickup_latitude', 'pickup_longitude

    2.8K20编辑于 2021-12-08
  • 来自专栏Datawhale专栏

    常见距离度量方法优缺点对比!

    也许Haversine距离会是一个更好的选择! 知道何时使用哪种距离测量方法可以帮助你从一个差的分类器变成一个准确的模型。 在本文中,我们将介绍不同的距离测量方法,并探索如何以及何时最好地使用它们。 Haversine距离 Haversine距离是指球面上两点之间的经度和纬度距离。 ? 它与欧几里得距离非常相似,因为它计算的是两点之间的最短线。 两点间的Haversine距离公式为: 缺点 这种距离测量方法的一个缺点是,它假定各点位于一个球体上。在实践中,这种情况很少发生,例如,地球并不是完全的圆形,这可能会使计算在某些情况下变得困难。 用例 正如你所期望的那样,Haversine距离经常用于导航。例如,当你在两个国家之间飞行时,你可以用它来计算它们之间的距离。需要注意的是,如果本身距离已经不大,它就不太适合了。

    9.7K30发布于 2021-03-11
  • 来自专栏Python深度学习

    使用Python实现深度学习模型:智能旅游路线规划

    这里使用Haversine公式来计算地理坐标之间的距离。 import numpy as npdef haversine(lat1, lon1, lat2, lon2): R = 6371 # 地球半径,单位为公里 dlat = np.radians num_spots))for i in range(num_spots): for j in range(num_spots): distance_matrix[i, j] = haversine

    2.4K11编辑于 2024-09-20
  • 来自专栏Zeusro

    贪婪搜索是P=NP之TSP问题的近似解

    nextCity v1.City minDistance := math.MaxFloat64 for _, city := range s.TodoCity { distance := local.Haversine len(s.TodoCity) == 0 && len(s.Plan) == (len(city)+1) { s.Truth = true } return s.Truth } 辅助方法 // haversine Haversine 公式:计算地球上两点的距离 // 传入两点的经纬度,返回两点之间的距离(单位:公里) func Haversine(lat1, lon1, lat2, lon2 float64)

    28410编辑于 2025-06-21
  • 来自专栏DeepHub IMBA

    9个数据科学中常见距离度量总结以及优缺点概述

    也许haversine 距离是更好的选择! 知道何时使用哪种距离量度可以帮助您从分类不正确的模型转变为准确的模型。 在本文中,我们将研究许多距离度量方法,并探讨如何以及何时最佳地使用它们。 半正矢距离(haversine) ? Haversine距离是指球面上两个点之间的经度和纬度。它与欧几里得距离非常相似,因为它可以计算两点之间的最短线。 用例 如您所料,Haversine距离通常用于导航。例如,您可以使用它来计算两个国家之间的飞行距离。请注意,如果距离本身不那么大,则不太适合。曲率不会产生太大的影响。

    2.1K10发布于 2021-02-12
  • 来自专栏小明说Java

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

    距离计算GEO数据结构使用Haversine公式来计算两个地理位置之间的距离。Haversine公式是一种常用的距离计算方法,它可以计算地球上两点之间的距离,考虑到地球的曲率。 在GEO数据结构中,Haversine公式被用于计算两个地理位置之间的距离,以便进行搜索和排序。搜索算法GEO数据结构使用了一种基于跳表的搜索算法来实现高效的地理位置搜索。

    1.9K32编辑于 2024-01-24
  • 来自专栏数据科学CLUB

    用遗传算法解决TSP问题

    for j in range(population.shape[] - ): total_distance = total_distance + self.haversine fitness_score = np.exp(/(total_distances + 1e-4)) return fitness_score, total_distances def haversine 将十进制度数转化为弧度 lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # haversine

    84720发布于 2020-06-12
  • 来自专栏EmoryHuang's Blog

    【论文阅读】DynaPosGNN:Dynamic-Positional GNN for Next POI Recommendation

    dhav(vc,vpk)=Haversine(vc,vpk)d_{hav}(v_c, v_{p_k}) = Haversine(v_c, v_{p_k})dhav​(vc​,vpk​​)=Haversine 半正矢公式(Haversine)是一种根据两点的_经度_和_纬度_来确定_大圆上两点之间距离_的计算方法。

    78510编辑于 2022-10-31
  • 来自专栏气象学家

    气象编程 | Python反距离权重(IDW)插值计算及可视化绘制

    小伙伴们对上述计算结果有疑惑的地方可以详细阅读之前的插值文章(文前链接),或者等我将这系列做完会推出详细的源码及解释文档(目前在整理中) 定义IDW计算函数 这里主要涉及两个计算函数,计算经纬度点转实际距离(km)的haversine 方法和计算IDW的函数,定义函数如下: haversine方法: import math import numpy as np #更换求距离的函数 from math import radians, cos , sin, asin, sqrt def haversine(lon1, lat1, lon2, lat2): R = 6372.8 dLon = radians(lon2 - lon1 for p in range(len(xi)): lstdist = [] for s in range(len(x)): d = (haversine

    14.8K78发布于 2020-12-18
  • 来自专栏站长的编程笔记

    PHP 经纬度坐标相关计算方法

    = ($lng1 * pi()) / 180;    $lat2 = ($lat2 * pi()) / 180;    $lng2 = ($lng2 * pi()) / 180;    // 使用 Haversine 公示计算距离    // http://en.wikipedia.org/wiki/Haversine_formula    $calcLongitude = $lng2 - $lng1;    $calcLatitude

    95940编辑于 2022-12-04
  • Geo-fencing算法

    点在多边形内 return x_intersections % 2 == 1函数实现计算两点间的距离from math import radians, cos, sin, asin, sqrtdef haversine lon2, lat2): # 将十进制度数转化为弧度 lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # haversine

    1.1K20编辑于 2024-09-14
  • 来自专栏DeepHub IMBA

    10个机器学习中常用的距离度量方法

    6、半正矢距离 Haversine distance 半正矢距离测量的是球面上两点之间的最短距离。因此常用于导航,其中经度和纬度和曲率对计算都有影响。 Python代码如下 from sklearn.metrics.pairwise import haversine_distances haversine_distances([vector_1,

    1.9K30编辑于 2022-11-11
领券