gpt4 book ai didi

mysql - 在 MySQL 中获取接近经纬度的多边形

转载 作者:可可西里 更新时间:2023-11-01 06:47:28 27 4
gpt4 key购买 nike

有谁知道从一个点到给定距离内获取 MySQL 数据库中所有多边形的方法吗?实际距离并不那么重要,因为它是稍后为每个找到的多边形计算的,但是仅对“接近”的多边形进行计算将是一个巨大的优化。

我看过 MBR 并包含函数,但问题是一些多边形没有包含在围绕该点绘制的边界框内,因为它们非常大,但它们的一些顶点仍然很近。

有什么建议吗?

最佳答案

慢速版本(没有空间索引):

SELECT  *
FROM mytable
WHERE MBRIntersects(mypolygon, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))

要使用空间索引,您需要对表进行非规范化,以便每个多边形顶点都存储在自己的记录中。

然后在包含顶点坐标的字段上创建 SPATIAL INDEX 并发出此查询:

SELECT  DISTINCT polygon_id
FROM vertices
WHERE MBRContains(vertex, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))

如果在数据库中存储 UTM 坐标而不是纬度和经度,事​​情会容易得多。

关于mysql - 在 MySQL 中获取接近经纬度的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1902287/

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