php – 我如何计算并获得下一个纬度 – 经度,估计每10分钟两个点之间的时间有开始和结束点?

我需要帮助我在地图上有以下2点在谷歌地图上有一个lat1 / long1和B点lat2 / long2我有距离,到达时间,轴承距离和速度.

使用这些数据,如何在10分钟,20,30和40分钟的时间内获得估计纬度经度(谷歌地图格式)到下一个点?具有起点和终点.

A点
LAT1 = 37.78472
lon1 = -122.39913

B点
LAT2 = 37.78240
lon2 = -121.23208

bearingradians = 270

距离= 102公里

到达时间= 50分钟

速度= 122公里/小时

例:
http://hmarina.sytes.net/mapagoogle.jpg

我需要你计算nexts点,我将使用PHP,或者我应该从哪里开始

谢谢

解决方法:

有多种方法可以计算出来.其中一些非常复杂.

您可以使用Vincenty’s formula,它通常用于轴承和距离计算.
该公式需要起点,轴承和距离的长/纬.
我怀疑,你想重新实现这个算法,所以在这里你去:Implementing Vincenty’s Formula in PHP

另一种解决方案可以是使用矢量来计算沿着给定距离的大圆的目标点并从起点开始计算.这种方法可能更容易一些,然后使用球面三角法. http://www.movable-type.co.uk/scripts/latlong-vectors.htmlhttps://*.com/a/1739066/1163786

另一个是计算大圆上的中间点.
http://williams.best.vwh.net/avform.htm#Intermediate

让我们在这里使用Vincenty并重新计算你的终点,给出一个起点,方位和距离:

>一个起点:A点lat1 = 37.78472; lon1 = -122.39913;
>轴承:约. 89
>距离:102公里

结果:纬度:37°47’42“N 37.79506902,经度:121°14’28”W -121.24119021

这点非常接近你的B点.

现在,您希望通过根据当前速度和已知时间间隔计算行程距离来确定未来位置(lang / lat).
换句话说,你的下一个点是从起点开始的10分钟,速度为122公里/小时和89轴承.

计算新距离:122 km / h = 2033.33 m / min,因此在10分钟内:20333.33 m =约20,333 km.

您公式的新数据:

>一个起点,这里:A点lat1 = 37.78472; lon1 = -122.39913;
>轴承:约. 89
>距离:20,333公里

并使用这些值重新运行vincenty以获得Lat / Long …

这可能有所帮助:

> PHP library for geo/nav calculations
> Google Maps API v3 provides Navigation Helper methods

上一篇:MYSQL使用空间索引


下一篇:python – 将复杂的SQL查询转换为SQLAlchemy