圆相交 MySQL

Circle intersect MySQL

我在地图上有两个带有经度、纬度 (point()) 和半径的圆圈,现在我想知道是否有一个 SQL 函数如果这些圆圈相交则 return 为真?

感谢帮助。

尝试 MySQL 5.6 中可用的 ST_***() 函数。

更多信息。

https://dev.mysql.com/doc/refman/5.6/en/spatial-relation-functions-object-shapes.html

https://www.percona.com/blog/2013/10/21/using-the-new-mysql-spatial-functions-5-6-for-geo-enabled-applications/

尝试:

If(ST_Distance(POINT(Long1, Lat1),POINT(Long2, Lat2))<=Radius1+Radius2, "INTERSECT","NO INTERSECTION")

这基本上是在询问圆心之间的距离是否 <= 它们的半径之和。如果是 - 它们相交。

您确实需要使用 ST_*() 函数 空间运算符函数,但 Zamrony 的回答相当含糊。因此,您需要做的是将您的圆圈转换为几何数据类型,然后您可以使用 st_intersect() 来查看 2 个圆圈是否相交:

  1. 使用ST_Buffer()函数将点和半径转换为几何数据类型:

Returns a geometry that represents all points whose distance from the geometry value g is less than or equal to a distance of d, or NULL if any argument is NULL.

请阅读 ST_Buffer_Strategy() 的描述以及如何确定构成圆几何的点。

  1. 使用ST_Intersects()函数判断两个几何图形是否相交。