1

我需要根据旧的经度和纬度计算经度和纬度,以及距该点的距离和方向。

从这个链接:http ://www.movable-type.co.uk/scripts/latlong.html

我得到了这些公式:

newLatitude = Math.Asin(Math.Sin(oldLatitude) * Math.Cos(distanceTravelled / earthRadius) + Math.Cos(oldLatitude) * Math.Sin(distanceTravelled / earthRadius) * Math.Cos(currentDirection));

newLongitude = oldLongitude + Math.Atan2(Math.Sin(currentDirection) * Math.Sin(distanceTravelled / earthRadius) * Math.Cos(oldLatitude), Math.Cos(distanceTravelled / earthRadius) - Math.Sin(oldLatitude) * Math.Sin(oldLatitude));

我有加速度,例如 0.1 m/sec2

时间旅行:从当前时间 - 开始时间计算。

然后我计算行驶距离:

 distanceTravelled = distanceTravelled/1000;

我也有以度数为单位的方向运动:例如 90 度。(东方)

但是我在新的纬度看到图像中遇到错误:

在此处输入图像描述

我必须在弧度中输入方向吗?

以公里而不是米为单位的距离?

请帮助我获得正确的纬度?

4

1 回答 1

1

我在解决方案中找到了。我在上面的公式中使用了纬度和经度的度数和小数。我们必须使用弧度

所以将纬度、经度和方向转换为弧度:

    oldLatitude = Math.PI * oldLatitude / 180;
    oldLongitude = Math.PI * oldLongitude / 180;
    currentDirection = Math.PI * currentDirection / 180.0;

然后再次将新的经度和纬度从弧度转换为度

            newLatitude = 180 * newLatitude / Math.PI;
            newLongitude = 180 * newLongitude / Math.PI;
于 2013-08-25T19:41:23.760 回答