使用Haversine的距离公式获得经度和纬度的距​​离

我正在使用 Pandas 数据框,我试图从每个标识符的每个点的经度和纬度获取距离。


这是当前的数据框:


    Identifier       num_pts        latitude          longitude

0   AL011851            3              28.0              -94.8

1   AL011851            3              28.0              -95.4

2   AL011851            3              28.1              -96.0

3   AL021851            2              22.2              -97.6

4   AL021851            2              12.0              -60.0

我知道我必须使用Haversine 的距离公式,但我不确定如何使用我的数据合并它。


import numpy as np

def haversine(lon1, lat1, lon2, lat2, earth_radius=6367):

    """

    Calculate the great circle distance between two points

    on the earth (specified in decimal degrees)


    All args must be of equal length.


    """

    lon1, lat1, lon2, lat2 = map(np.radians, [lon1, lat1, lon2, lat2])


    dlon = lon2 - lon1

    dlat = lat2 - lat1


    a = np.sin(dlat/2.0)**2 + np.cos(lat1) * np.cos(lat2) * np.sin(dlon/2.0)**2


    c = 2 * np.arcsin(np.sqrt(a))

    km = earth_radius * c

    return km

这应该是我在纸上仅使用纬度和经度计算的最终结果:


 Identifier       num_pts        latitude          longitude            distance

0   AL011851            3              28.0              -94.8            NaN

1   AL011851            3              28.0              -95.4            58.870532

2   AL011851            3              28.1              -96.0            58.870532

3   AL021851            2              22.2              -97.6

4   AL021851            2              12.0              -60.0

编辑:我需要计算 0 和 1 和 2 等连续点之间的距离,并且必须按标识符对其进行分组以确保这些点不来自不同的标识符,因此当有新标识符(如 AL021851)时,它会重置并且只计算该标识符中的点


慕码人8056858
浏览 212回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python