我正在建立一个锚定表应用程序,我发现一些问题来计算一个GPS点(锚点位置称为B点),我所知道的是我的实际位置GPS坐标(点A),我的实际位置之间的距离(A )和锚点位置(B)以米为单位,磁角用数字罗盘计算,从000°到360°。
任何人都可以帮我这个吗?
谢谢!! 菲尔
答案 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之间会有细微差别。要么将草图中的偏角硬编码以供本地使用,要么调查模型和查找表以供全局使用。