gpt4 book ai didi

mysql - 如何查找某个点附近的路线

转载 作者:行者123 更新时间:2023-11-29 23:18:59 25 4
gpt4 key购买 nike

我有一个地点的经纬度坐标以及我想要搜索停靠点的半径,然后我执行谷歌地图中的一个函数来使用这些变量查询我的 GTFS 数据库,但我不知道如何查询应该看起来。我可以仅使用 sql 查询来选择所需的路线吗?如果是这样,我该怎么做?如果仅使用 sql 无法完成,我的选择是什么?

*抱歉,问题很宽泛,没有代码示例,但我对此很陌生,有时需要一些基本概念指导。

无论如何,感谢您的帮助。

最佳答案

(警告:我对 MySQL 不太熟悉,这些查询未经测试。)

首先在 MySQL 中定义一个函数来计算经纬度点对之间的距离。参见例如this answer 。然后,选择给定点附近的停靠点:

SELECT stop_id
FROM stops
WHERE getDistanceBetweenPointsNew(stop_lat, stop_lon, my_lat, my_lon) < my_dist;

在 GTFS 规范中没有非常自然的方法来查找与停靠点相关的路线。为此,您需要根据 stop_times 加入行程,如果您的 stop_times 表很大和/或未建立索引,这会很慢。我建议预先计算一个关联站点和路线的表格:

CREATE TABLE route_stop AS
SELECT DISTINCT route_id, stop_id
FROM trips
JOIN stop_times
ON trips.trip_id = stop_times.trip_id;

假设此表已创建,您可以找到在给定点附近停靠的路线列表,如下所示:

SELECT route_id
FROM stops
JOIN route_stop
ON stops.stop_id = route_stop.stop_id
WHERE getDistanceBetweenPointsNew(stop_lat, stop_lon, my_lat, my_lon) < my_dist;

关于mysql - 如何查找某个点附近的路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512021/

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