如何找到所有以截取为中心的圆圈为主圆圈

时间:2017-04-22 15:33:02

标签: postgresql postgis

是否有一种干净的方法可以找到所有不仅与主圆相交,而且其中心位于与主圆相交的圆内。

enter image description here

2 个答案:

答案 0 :(得分:0)

当然很简单。您需要使用@@center来获取中心点,然后使用@>来使用包含。

SELECT
  x AS r_value,
  circle('0,0', x) @> @@ circle('2,3', 1) AS contains
FROM generate_series(1,5) AS gs(x);

-OR -

SELECT
  x AS r_value,
  circle('0,0', x) @> center(circle('2,3', 1)) AS contains
FROM generate_series(1,5) AS gs(x);

此蛮力测试圆的中心位于原点,半径为[1,5],无论它们是否包含circle('2,3',1)的中心。

有关详细信息,请参阅geometry functions上的文档。

答案 1 :(得分:0)

select * from circles a , circles b
 where st_intersects(a.geom,st_centroid(b.geom)) 

此外,您可以通过在where子句中添加条件来过滤结果。我假设主圈名称。

select * from circles a , circles b
 where st_intersects(a.geom,st_centroid(b.geom))  and a.circle_name = 'Main Circle';