【问题标题】:Postgresql geometry circle instersectionPostgresql 几何圆相交
【发布时间】:2015-02-26 10:24:19
【问题描述】:

我想知道一个圆圈是否在 postgreSQL 中“交叉”了另一个圆圈(即:2 个圆圈在 2 个点上相遇)。我正在尝试交叉路口,但不起作用:

select circle '((0,0),2)' ?# circle '((1,1),2)';

结果:

Error in query: ERROR: operator does not exist: circle ?# circle

不知道为什么...我该怎么办?

【问题讨论】:

    标签: postgresql geometry intersection overlap


    【解决方案1】:

    ?# 运算符不适用于圆形,但您可以使用 && 运算符(来自文档:重叠?有一个共同点使这一点成为现实)。

    您也可以将 && 运算符与圆形一起使用,而无需转换为多边形:

    select circle '((0,0),2)' && circle '((0,4),2)'; -- true
    select circle '((0,0),2)' && circle '((0,4),2.0001)'; -- true, 
    select circle '((0,0),2)' && circle '((0,4),1.99999)'; -- false 
    

    另见http://www.postgresql.org/docs/9.1/static/functions-geometry.html

    【讨论】:

      【解决方案2】:

      好的,我找到了:

      select polygon(circle '((0,0),2)') && polygon(circle '((1,1),2)'); 
      

      我“只”必须将两个圆转换为 12 点多边形,然后使用 &&(重叠)运算符。

      【讨论】:

      • 您也可以将 && 运算符与 circle 一起使用:select circle '((0,0),2)' && circle '((0,4),2.0001)'; = true, select circle '((0,0),2)' && circle '((0,4),1.99999)'; = false
      • 哈哈!谢谢 !我不知道为什么我没有尝试这个:/...我想我在尝试了很多事情后感到困惑。您可以将其发布为答案,我会接受。
      猜你喜欢
      • 2015-08-30
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 2012-02-13
      • 2016-05-11
      • 1970-01-01
      相关资源
      最近更新 更多