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

问题描述 投票:0回答:1

我手边还有一个包含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)

现在,我要计算相对于真北的每个点的bearing变化。

但是我有这些问题尚未找到答案:

  1. 根据我的阅读,我遇到了公式(如this回答:]

    Bearing = atan(y,x)

其中xy是数量

y = sin(B -A )* cosB x = cosA > * sinB > -sinA > cosB * cos(B -A 分别针对点AB。然后从另一个来源公式 here编写公式:Bearing = atan2(y,x)

所以我很困惑,应该使用哪个公式?latlon在传递给数量xy之前应先从度数转换为弧度。由于我的数据集中lon的值为负,我应该取每个的绝对值吗?我手边还有一个包含GPS速度的GPS日志数据集。数据集如下所示:id | gpstime | lat | lon |速度-------- + ------------ + ------------ + -----...

我认为,对于GPS跟踪,这会太过分了。如果两点之间的距离不大(比如说几百米),我认为这种简化的计算就足够了。

纬度/经度差异是应用程序。 

delta_lat = 111km * (lat1 - lat2) delta_lon = 111km * cos(lat) * (lon1 - lon2)

    所以方位应该是
  1. bearing = atan(delta_lon / delta_lat) * 180/π = atan(cos(lat) * (lon1 - lon2) / (lat1 - lat2)) * 180/ACOS(-1)
  2. 对于经纬度,请使用lat1或lat2或中间的格式,如果您愿意。

lat = (lat1 + lat2)/2 * π/180 = (lat1 + lat2)/2 * ACOS(-1)/180
考虑delta_lat或delta_lat可以为0
geolocation geospatial latitude-longitude
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.