gpt4 book ai didi

mysql - SQL 中点与线的空间交集

转载 作者:行者123 更新时间:2023-11-29 12:02:36 25 4
gpt4 key购买 nike

我正在尝试在 SQL 中连接两个空间表。

一张表的点信息如下 - (点表)

enter image description here

另一个表的线路信息如下 - (线路表)

enter image description here

我想要做的是将点表中的点与线表上的线进行匹配(基于点和线的交集),然后连接两个表以获得与每个 station_id 对应的 hwy_link_id/hwycov_id 。

我对 SQL 中的空间数据非常陌生,如果有人能建议我一种方法,我将非常感激。

非常感谢。

最佳答案

在 SQL Server 中,您可以仅使用地理/几何类型的 STIntersects 方法作为连接的一部分。假设您也可以在 MySQL 中执行此操作(我不使用 MySQL,因此无法测试),查询将如下所示:

SELECT
points.station_id,
lines.hwy_link_id,
lines.hwycov_id
FROM
points
LEFT JOIN
lines ON (STIntersects(points.Shape, lines.Shape) = 1);

也就是说,除非您的数据非常准确,否则线和点可能不会在您期望的情况下相交。因此,建议在点或线周围添加一个小的缓冲区,以便为交点提供一个小的可玩距离(满足坐标值类型舍入等)。

因此,查询将更改为:

SELECT
points.station_id,
lines.hwy_link_id,
lines.hwycov_id
FROM
points
LEFT JOIN
lines ON (ST_Intersects(ST_Buffer(points.Shape, 10), lines.Shape) = 1);

我不确定 MySQL 的地理/几何单位,但我希望它们是米。

引用文献:

ST_相交:https://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html#function_st-intersects

ST_缓冲区:https://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html#function_st-buffer

关于mysql - SQL 中点与线的空间交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32126075/

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