如何在起点和终点之间计算并获取每10分钟的时间估计下一个纬度经度?

3

我需要帮助。在谷歌地图上,有两个标记点A(lat1/long1)和B(lat2/long2),并且我已经知道它们之间的距离、到达时间、方位角及速度。

有了这些数据,我如何获取从起点到终点,在10分钟、20分钟、30分钟和40分钟内下一个预估的纬度和经度(以谷歌地图格式为准)?

点A:lat1=37.78472,lon1=-122.39913

点B:lat2=37.78240,lon2=-121.23208

方位角: 270

距离:102公里

到达时间:50分钟

速度:122公里/小时

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

请您帮我计算出下一步的坐标,我将使用PHP,或者您能告诉我应该从哪里开始吗?

谢谢。

2个回答

4

有多种方法可以计算这个问题。其中一些相当复杂。

您可以使用文森蒂公式,该公式通常用于方位和距离计算。 该公式需要起点的经纬度、方位和距离。 我怀疑您是否想要重新实现此算法,所以请参考:在PHP中实现文森蒂公式

另一个解决方案是使用向量来计算沿着大圆给定距离和方位的目标点。这种方法可能比使用球面三角学更容易。http://www.movable-type.co.uk/scripts/latlong-vectors.htmlhttps://dev59.com/QErSa4cB1Zd3GeqPVVS1#1739066

另一个方法是计算大圆上的中间点。 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)。

换句话说,如果给定速度为122公里/小时和89度方位角,则您的下一个点距起点10分钟。

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

您的新公式数据:

  • 起始点,这里是:A点 lat1=37.78472; lon1=-122.39913;
  • 方位角:约89度
  • 距离:20,333 km

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


这可能会有帮助:

感谢您的回复并使用Vincenty公式。首先,我需要您将度数(Google地图格式)转换为GPS坐标(如何在PHP中执行?),或者我可以直接使用度数格式(Google地图)。非常感谢。 - user4131013
1
这可能会有所帮助:http://stackoverflow.com/a/2548996/1163786,格式转换器也包含在PHP库中。 - Jens A. Koch
非常感谢,感激你的帮助。 - user4131013
很高兴我能帮忙 :) - Jens A. Koch

1
你有:速度=122公里/小时 => 你可以计算10分钟走的距离(n_km)
你可以用两点距离来计算距离。
sqrt((lat1 - lat2)^2 + (lng1-lng2)^2);

如果你知道距离和lat1,如何计算lat2

Read more in picture :)


感谢HoangHieu的回复。 - user4131013

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接