圆相交 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
尝试:
If(ST_Distance(POINT(Long1, Lat1),POINT(Long2, Lat2))<=Radius1+Radius2, "INTERSECT","NO INTERSECTION")
这基本上是在询问圆心之间的距离是否 <= 它们的半径之和。如果是 - 它们相交。
您确实需要使用 ST_*() 函数 和 空间运算符函数,但 Zamrony 的回答相当含糊。因此,您需要做的是将您的圆圈转换为几何数据类型,然后您可以使用 st_intersect() 来查看 2 个圆圈是否相交:
- 使用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() 的描述以及如何确定构成圆几何的点。
- 使用ST_Intersects()函数判断两个几何图形是否相交。
我在地图上有两个带有经度、纬度 (point()) 和半径的圆圈,现在我想知道是否有一个 SQL 函数如果这些圆圈相交则 return 为真?
感谢帮助。
尝试 MySQL 5.6 中可用的 ST_***() 函数。
更多信息。
https://dev.mysql.com/doc/refman/5.6/en/spatial-relation-functions-object-shapes.html
尝试:
If(ST_Distance(POINT(Long1, Lat1),POINT(Long2, Lat2))<=Radius1+Radius2, "INTERSECT","NO INTERSECTION")
这基本上是在询问圆心之间的距离是否 <= 它们的半径之和。如果是 - 它们相交。
您确实需要使用 ST_*() 函数 和 空间运算符函数,但 Zamrony 的回答相当含糊。因此,您需要做的是将您的圆圈转换为几何数据类型,然后您可以使用 st_intersect() 来查看 2 个圆圈是否相交:
- 使用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() 的描述以及如何确定构成圆几何的点。
- 使用ST_Intersects()函数判断两个几何图形是否相交。