MySQL:使用边界的ST_Contains函数来判断多边形是否包含点

5

我使用mysql空间函数。

我需要确定点是否在多边形内。
最初我使用了MBRContains,但它的工作方式很奇怪,所以我遇到了以下错误:Mysql function MBRContains is not accurate

enter image description here

我的下一步是切换到ST_Contains函数。但我发现,如果我将多边形(从多边形)顶点用作参数-函数返回false,但我想包括所有多边形边界。

P.S.

我发现这里有一个函数:

ST_Touches(g1, g2)

如果两个几何体的内部不相交,但其中一个几何体的边界与另一个几何体的边界或内部相交,则它们在空间上相接触

看起来它像我想要的那样工作(在与ST_containsOR条件中),但对我来说文档不清楚。您能解释一下如何同时满足两个条件吗?
1. 内部不相交
2. 边界与内部相交。

问题:

我该如何实现我想要的行为?


你的问题是什么?数据长什么样? - Salman A
@ Salman A,非常抱歉,我无法添加更多信息。您可以具体说明您的问题吗? - gstackoverflow
我的意思是我无法将图片传输到MySQL。数据具体是什么样子? - Salman A
@Salman A,根据保密协议,我无法提供具体数据。但是你可以创建类似图片的多边形。 - gstackoverflow
@Salmam,是的,我想检查点是否位于多边形内部。如果点位于多边形边界上,则答案必须为真。 - gstackoverflow
显示剩余2条评论
2个回答

1
这看起来像是一个可行的解决方案:

ST_Contains(g1,g2) || ST_Touches(g1, g2)

它解决了我的问题。你为什么认为这是误报? - gstackoverflow
可能是我的数据! - Lee Goddard

-1

看起来 ST_Distance(AREA, @point)) = 0 包括边界


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接