【问题标题】:Mysql: ST_Contains with borders to detect if multipolygon contains pointMysql:带边框的ST_Contains检测多面体是否包含点
【发布时间】:2018-11-24 09:34:37
【问题描述】:

我使用mysql空间函数。

我必须了解点是否位于多面体中。
最初我使用MBRContains,但它的工作方式很奇怪,所以我遇到了以下错误:Mysql function MBRContains is not accurate

我的下一步是切换到函数ST_Contains。但我发现如果我使用多边形(来自多面体)顶点作为参数 - 函数返回 false 但我想排除所有多面体边界。

附言

我发现函数在哪里:

ST_Touches(g1, g2)

如果内部不相交,则两个几何图形在空间上相接触, 但是其中一个几何图形的边界与 边界或对方的内部

看起来它像我想要的那样工作(在OR 条件下与ST_contains)但文档对我来说不清楚。你能解释一下两个条件如何一起成为真理
1. 内部不相交
2.边界与内部相交。

?

问题:

我怎样才能实现我想要的行为?

【问题讨论】:

  • 你的问题到底是什么。数据是什么样的?
  • @Salman A,很抱歉,我无法添加更多信息。您能否具体说明您的问题?
  • 我的意思是我无法将图片提供给 MySQL。数据究竟是什么样的?
  • @Salman A,根据保密协议,我无法提供具体数据。但是你可以创建类似于图片的多边形
  • 所以你有一个多边形和一个点,你想检查点是否存在/不在多边形内?

标签: mysql spatial spatial-query point-in-polygon mysql-spatial


【解决方案1】:

看起来可行的解决方案:

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

【讨论】:

    【解决方案2】:

    看起来ST_Distance(AREA, @point)) = 0 包含边框

    【讨论】:

      猜你喜欢
      • 2015-03-07
      • 2018-11-12
      • 2012-11-29
      • 2019-12-26
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      相关资源
      最近更新 更多