gpt4 book ai didi

php - gps 位置在两个位置之间吗

转载 作者:可可西里 更新时间:2023-10-31 23:33:17 26 4
gpt4 key购买 nike

我正在从事一个项目,该项目将在车辆行驶时对其进行跟踪。车辆位置取自Geoloqi API并显示在自动更新的 map 上。坐标被传递给 Drupal 中的 AHAH 函数,该函数将通过其他一些 API:s 加载更多关于位置的信息。 Geonames.org 就是其中之一。

我不想过于频繁地从远程服务器加载数据,因为这会增加负载并过快地使用我们的积分。然而。我确实希望它尽可能实时,因为这对项目至关重要。所以我想到了这样做:

Geonames 为当前街道提供一串 GPS 位置,以便可以将其绘制在 map 上。 “线”被赋予下一个十字路口。如果每次位置改变时我们都询问当前的街道名称,我们会吃得太快,但在每个十字路口又如何呢?

是否可以在 PHP 中检查给定的 gps 坐标是否位于其他两个坐标之间的线上?如果这条线可以向各个方向延伸几米以清除任何偏移,那也很好。

非常感谢您的所有建议。

最佳答案

您的原始问题归结为一个简单的数学问题:给定一条直线经过两个点,求出该直线的方程。这部分很简单:比如说,你有两个点,坐标分别是 (lat1, lon1) 和 (lat2, lon2),那么直线方程就是

(lon2 - lon1) * X + (lat1 - lat2) * Y + (lat1 * lon2 + lat2 * lon1) = 0

现在,当您得到任何其他点 (lat, lon) 时,只需将这些坐标分别作为 (X, Y) 代入方程式即可。如果得到0,那么点就在线上了。然后检查您的 lat 是否在 lat1lat2 之间,您的 lon 是否在 lon1 之间> 和 lon2。如果是,则新点位于两个现有点之间的线上。

更复杂的部分来自两件事:

  1. GPS 错误。为了解决这个问题,您可以做一些近似,例如,不要与 0 进行比较,而是给它一些余地,例如将 -err+err 进行比较,其中 err 是您定义的某个值。

  2. 事实上,大多数街道都不是直的。下图显示了问题。如果您查看顶部街道两端之间的线,垂直街道的顶部将在那条线上 - 但这不是您想要的。
    enter image description here .

也许更好的方法是使用距离变化。如果 GPS 报告的距离变化小于某个预定义值,则不要重新查询位置。

关于php - gps 位置在两个位置之间吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com