找一个知道起点距离和指南针方向的gps点

时间:2018-01-19 21:43:58

标签: c# arduino gps distance coordinate

我正在建立一个锚定表应用程序,我发现一些问题来计算一个GPS点(锚点位置称为B点),我所知道的是我的实际位置GPS坐标(点A),我的实际位置之间的距离(A )和锚点位置(B)以米为单位,磁角用数字罗盘计算,从000°到360°。

任何人都可以帮我这个吗?

谢谢!! 菲尔

2 个答案:

答案 0 :(得分:0)

非常简单的触发不是真正的编程,但作为一个答案,这是一个程序,代码是自我解释。

Dim Distance, Bearing As Double
Dim Radius As Double = 6372.795477598

Distance = (Distance /Radius)
LatB = ASinD(SinD(LatA) * Cos(Distance/Radius) + CosD(LatA) * Sin(Distance/Radius) * CosD(Bearing))
LonB = LonA + ATan2D(SinD(Bearing) * Sin(Distance / Radius) * CosD(LatA), Cos(Distance / Radius) - SinD(LatA) * SinD(LatB))

答案 1 :(得分:0)

如果您使用的是像您的代码建议的Arduino,NeoGPS库有这种“偏移”操作的简单方法:

if (gps.available( gpsPort )) {
 gps_fix = gps.read(); // get the current location

 Location_t B( fix.location );  // start at "A"
 B.OffsetBy( distanceKm / Location_t::EARTH_RADIUS_KM, northAngleRadians ); // step to "B"

用于示例程序here

顺便说一下,Magnetic North和True North之间会有细微差别。要么将草图中的偏角硬编码以供本地使用,要么调查模型和查找表以供全局使用。