Mysql 获取与给定点周围的圆相交的所有多边形
我发现了很多关于如何在MySQL中找到围绕某个位置绘制的圆中包含的所有点(使用Haversine公式) 我的函数应该返回至少与圆部分相交的所有多边形Mysql 获取与给定点周围的圆相交的所有多边形,mysql,spatial,Mysql,Spatial,我发现了很多关于如何在MySQL中找到围绕某个位置绘制的圆中包含的所有点(使用Haversine公式) 我的函数应该返回至少与圆部分相交的所有多边形 如何创建该圆 如何检查多边形是否与该圆相交 你忘了提到你的工作是2D还是3D。既然你说的是圆而不是球体,我想你指的是2D 要查找与圆相交的所有多边形,您需要知道: a) 每个多边形的原点(更具体地说,是多边形的中心) b) 圆的原点 c) 圆的直径(或半径) 使用这些值,可以确定圆心与每个多边形中心之间的距离。如果圆心和多边形中心之间的距离的大小小
你忘了提到你的工作是2D还是3D。既然你说的是圆而不是球体,我想你指的是2D 要查找与圆相交的所有多边形,您需要知道: a) 每个多边形的原点(更具体地说,是多边形的中心) b) 圆的原点 c) 圆的直径(或半径) 使用这些值,可以确定圆心与每个多边形中心之间的距离。如果圆心和多边形中心之间的距离的大小小于圆的半径,则多边形相交 我不太确定如何将其插入SQL查询,因为首先需要计算每个多边形相对于圆的大小,然后根据圆的半径对其进行评估。我已经有一段时间没有编写SQL和SQL了,但我想它应该是沿着以下路线的某个地方:
- 聚集多边形中心与圆心之间的距离大于半径的所有项目
希望有帮助 你忘了提到你的工作是2D还是3D。既然你说的是圆而不是球体,我想你指的是2D 要查找与圆相交的所有多边形,您需要知道: a) 每个多边形的原点(更具体地说,是多边形的中心) b) 圆的原点 c) 圆的直径(或半径) 使用这些值,可以确定圆心与每个多边形中心之间的距离。如果圆心和多边形中心之间的距离的大小小于圆的半径,则多边形相交 我不太确定如何将其插入SQL查询,因为首先需要计算每个多边形相对于圆的大小,然后根据圆的半径对其进行评估。我已经有一段时间没有编写SQL和SQL了,但我想它应该是沿着以下路线的某个地方:
- 聚集多边形中心与圆心之间的距离大于半径的所有项目
希望有帮助 这本书很古老,但它仍然是谷歌搜索这本书时最热门的点击量之一。现有的答案是没有用的,因为它不能合理地实现在MySQL中使用——至少不能以任何具有远程可接受性能的方式实现 解决方案是在点/半径上使用ST_缓冲区:
ST_Buffer(point, radius)
对于包含包含多边形数据的列“polygon”的表,返回圆心位于点mypoint且半径为9的圆相交的行的示例查询:
SELECT * FROM mytable WHERE ST_Intersects(polygon, ST_Buffer(mypoint, 9))
这是一个很老的问题,但它仍然是谷歌搜索这一问题时点击率最高的问题之一。现有的答案是没有用的,因为它不能合理地实现在MySQL中使用——至少不能以任何具有远程可接受性能的方式实现 解决方案是在点/半径上使用ST_缓冲区:
ST_Buffer(point, radius)
对于包含包含多边形数据的列“polygon”的表,返回圆心位于点mypoint且半径为9的圆相交的行的示例查询:
SELECT * FROM mytable WHERE ST_Intersects(polygon, ST_Buffer(mypoint, 9))