路由"/>
mysql查询以获取问题中解释的2个Latlng之间的路由
我正在寻找一个查询来获取两点之间的路线,这很难解释,但是,
我有这个链接可以说
example/any? lat1 = 31.0000 & lng1 = 31.0000 & lat2 = 31.0000 & lng2 = 31.0000
所以在函数内部,我想编写一个查询到表示例的内容,
id | lat1 | lng1 | lat2 | lng2 | time | distance_between_inKm
1 | 31.0000 | 31.0000 | 31.0000 | 31.0000 | 30 | 20
所以现在我想转到链接并获取最近的||。最近*路线或行
我从链接lat1&lng1和lat2&lng2中获取这些信息,所以我想最接近2。很抱歉,很难解释我尽了最大的帮助吗?
所以我想要的是我有一个表,其中包含折线的静态数据和2点的信息,所以我想像谷歌矩阵API一样使用它们,但从我的服务器说起。。
更新:
我尝试了此查询,但是它忽略了AND的任何帮助?
SELECT id,distance_between,time_between,start_latitude, start_longitude,end_latitude,end_longitude, SQRT(
POW(69.1 * (start_latitude - 31.908482676577364), 2) +
POW(69.1 * (35.1666776731924 - start_longitude) * COS(start_latitude / 57.3), 2))
AND
SQRT(
POW(69.1 * (end_latitude - 31.966051), 2) +
POW(69.1 * (35.894587 - end_longitude) * COS(end_latitude / 57.3), 2))
AS distance
FROM matrix_api USE INDEX (start_latitude,start_longitude,end_latitude,end_longitude,distance_between,time_between) HAVING distance < 0.2 ORDER BY distance LIMIT 1;
所以我想要这样的输入1和2,并给我包含2的行
同时关闭开头和结尾的语言
我也尝试过此更新:
SELECT id,distance_between,time_between,start_latitude, start_longitude,end_latitude,end_longitude,
SQRT(
POW(69.1 * (start_latitude - 32.016659), 2) +
POW(69.1 * (35.727839 - start_longitude) * COS(start_latitude / 57.3), 2) AND
POW(69.1 * (end_latitude - 31.966051), 2) +
POW(69.1 * (35.894587 - end_longitude) * COS(end_latitude / 57.3), 2)
)
AS distance
FROM matrix_api USE INDEX (start_latitude,start_longitude,end_latitude,end_longitude,distance_between,time_between) HAVING distance < 0.2 ORDER BY distance LIMIT 1;
回答如下:{
"destination_addresses" : [ "New York, NY, USA" ],
"origin_addresses" : [ "Washington, DC, USA" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "225 mi",
"value" : 361715
},
"duration" : {
"text" : "3 hours 49 mins",
"value" : 13725
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
这是从Google Matrix API获得的响应,为了提供距离,您将使用我在评论中谈到的方法(我将在下面链接)。
对于持续时间,您将使用距离/速度=持续时间。
[如果您想知道如何获得speed
,我会使用该国家/地区的平均速度限制,甚至是国家速度限制。对于我的国家/地区来说,国民时速通常为60英里/小时。
因此,如果我的点之间的距离是225英里,并且我以每小时60英里的速度行驶,则持续时间是3.75或3小时45分钟。
我想为您提供从哪里开始的至少一些指导,我强烈建议您研究解决位置问题,因为这将为您提供解决方案。
- https://stackoverflow/a/24372831/2932298
- https://medium/maatwebsite/the-best-way-to-locate-in-mysql-8-e47a59892443
我建议阅读第二个链接,我快速浏览了一下,但是它提供了相当深入的解释来解决您的问题。
忽略使用PHP的事实,因为MySQL提供的大多数功能都可以用任何一种语言重新实现。
忽略使用MySQL的事实,您可以使用任何一种语言重新实现它,因为MySQL中的大多数功能都以编程语言(尤其是数学函数)存在。
有很多方法可以解决此问题。希望这会帮助您入门。
更多推荐
mysql查询以获取问题中解释的2个Latlng之间的路由
发布评论