如何计算 PostGIS 中有多少个缓冲区相交

how to count how many buffers intersects in PostGIS

我如何计算有多少缓冲区相交并且 select 仅那些与其他缓冲区有 between 2 AND 6 相交的缓冲区?我可以使用以下查询创建缓冲区,但我不知道如何计算交叉点

SELECT ST_Buffer(geom::geography, 400)
FROM mytable;

感谢您的帮助。谢谢

在这种情况下使用缓冲区是错误的,因为缓冲区只是一个近似值。相反,使用索引兼容 st_dwithin() 函数。

想法是 select 所有点(多边形或其他)在距离的两倍以内,对结果进行分组并保持至少具有 6 个附近特征的点。

下面的示例使用了 2 个 table,但您可以使用相同的 table 两次。

SELECT myTable.ID, count(*), array_agg(myOtherTable.ID) as nearby_ids  
FROM mytable 
 JOIN myOtherTable ON st_Dwithin(mytable.geom::geography, myOtherTable.geom::geography, 800)
GROUP BY myTable.ID
HAVING count(*) >= 6;

要使用相同的 table 两次,您可以为它们起别名:

SELECT a.ID, count(*), array_agg(b.ID) as nearby_ids  
FROM mytable a
 JOIN mytable b ON st_Dwithin(a.geom::geography, b.geom::geography, 800)
GROUP BY a.ID
HAVING count(*) >= 6;