Geolocation 根据纬度/经度计算方位变化

Geolocation 根据纬度/经度计算方位变化,geolocation,geospatial,latitude-longitude,Geolocation,Geospatial,Latitude Longitude,我手头有一个包含GPS速度的GPS日志数据集。以下是数据集的外观: id | gpstime | lat | lon | speed --------+------------+------------+------------+--------- 157934 | 1530099776 | 41.1825026 | -8.5996864 | 3.40901 157934 | 1530099777 | 41.1825114 | -8.59972

我手头有一个包含GPS速度的GPS日志数据集。以下是数据集的外观:

 id   |  gpstime   |    lat     |    lon     |  speed  
--------+------------+------------+------------+---------
 157934 | 1530099776 | 41.1825026 | -8.5996864 | 3.40901
 157934 | 1530099777 | 41.1825114 |  -8.599722 | 3.43062
 157934 | 1530099778 | 41.1825233 | -8.5997594 | 3.45739
 157934 | 1530099779 | 41.1825374 | -8.5997959 | 3.40025
 157934 | 1530099780 | 41.1825519 | -8.5998337 | 3.41673
(5 rows)
现在我想计算相对于正北的每个点的
方位变化

但我有这些问题还没有找到答案:

  • 根据我的阅读,我发现了以下公式(如答案所示):

    轴承=atan(y,x)

  • 其中
    x
    y
    是数量

    y=sin(Blon Alon)*cosBlat

    x=cosAlat*sinBlat-sinAlat*cosBlat*cos(Blon-Alon)

    分别用于点
    A
    B
    。然后从另一个来源,这个公式,这个公式是这样写的:

    Bearing = atan2(y,x)
    
    所以我很困惑,我应该使用哪一个公式

  • lat
    lon
    在传递到数量
    x
    y
    之前,应将其从度转换为弧度。由于我的数据集中
    lon
    的值是负数,我应该取每个值的绝对值吗

  • 我认为对于GPS轨道来说,这是一种过度的杀伤力。如果两点之间的距离不是很大(比如几百米),我认为这个简化的计算就足够了

    纬度/经度差异在应用程序中显示

    Δlat=111km*(lat1-lat2)

    Δlon=111km*cos(纬度)*(lon1-lon2)

    因此,轴承将是

    轴承=atan(Δlon/Δlat)*180/π

    轴承=atan(cos(lat)*(lon1-lon2)/(lat1-lat2))*180/ACOS(-1)

    对于lat,请使用lat1或lat2或中间位置(如果您愿意)

    lat=(lat1+lat2)/2*π/180=(lat1+lat2)/2*ACOS(-1)/180


    考虑Δlat或Δlat可能为0

    谢谢您的这篇文章。然而,我打算在问题中使用公式,其中轴承是根据
    lat/lon
    (不需要距离)计算的。我打算在差值为0的地方搜索点。在问题中,第二行点与第一行点的方位角应仅使用点
    lat/lon
    。这可以在postgres中完成吗(通过运行一些SQL)?它不使用距离。随着
    Δlon/Δlat
    由于分数减少,111km(1°纬度的距离)消失了。啊,好的,我明白了。这可以在postgres中完成吗(通过运行一些SQL),这样我就可以添加另一个列
    bearing
    ?这是一个简单的数学问题,所以应该没有问题。我从未使用过postgres,但您应该在文档中找到语法-这绝对是错误的(除非你现在的位置在赤道上)。