查找下一个现在的位置是知道经/纬度/航向/速度(find next postion knowing

2019-07-29 17:03发布

知道一个数字纬度经度小数速度(公里/小时), 标题如何找到汽车的下一个位置 60秒后? 是否有任何的算法来做到这一点?

Answer 1:

这可能帮助:

distance_traveled = speed * time

然后,使用计算航向作为角度(三角)x和速度的y分量:

speed_x=distance_traveled * Math.Cos(heading/180*Math.PI)
speed_y=distance_traveled * Math.Sin(heading/180*Math.PI)

接下来,看经/纬度如何映射到某种形式的x / y坐标,加speed_x和speed_y,并转换为纬度/长试。

这最后一个是一个棘手的,请看这里: http://www.movable-type.co.uk/scripts/latlong.html

事实上,你会发现,文章内的一切!



Answer 2:


我发现更准确的公式
这对我来说代码的工作:
1.首先,我们要算的距离(速度*时间)。
2.在我的计划,我的距离转换成知识,因为我在KM使用地球半径过。
常量双radiusEarthKilometres = 6371.01f;

            kmDistance = kmSpeed * (timer1.Interval / 1000f) / 3600f;

            var distRatio = kmDistance / radiusEarthKilometres;
            var distRatioSine = Math.Sin(distRatio);
            var distRatioCosine = Math.Cos(distRatio);

            var startLatRad = deg2rad(lat0);
            var startLonRad = deg2rad(lon0);

            var startLatCos = Math.Cos(startLatRad);
            var startLatSin = Math.Sin(startLatRad);

            var endLatRads = Math.Asin((startLatSin * distRatioCosine) + (startLatCos * distRatioSine * Math.Cos(angleRadHeading)));

            var endLonRads = startLonRad
                + Math.Atan2(Math.Sin(angleRadHeading) * distRatioSine * startLatCos,
                    distRatioCosine - startLatSin * Math.Sin(endLatRads));

            newLat = rad2deg(endLatRads);
            newLong = rad2deg(endLonRads);


文章来源: find next postion knowing lat/lon/heading/speed
标签: c# algorithm gps