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



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

有人可以帮助我吗?

谢谢!! 菲尔

非常简单的trig不是真正的编程,但作为答案,这里有一个程序来做到这一点,代码是不言自明的。

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))

如果您像标签建议的那样使用 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"

在此处的示例程序中使用。

顺便说一句,磁北和真北之间会略有不同。 对草图中的偏角进行硬编码以供本地使用,或者调查模型和查找表以供全局使用。

最新更新