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

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

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

感谢您的帮助。谢谢。

iCMS 回答:如何计算PostGIS中有多少个缓冲区相交

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

想法是选择距离在两倍以内的所有点(多边形或其他点),以对结果进行分组,并使那些至少具有6个附近要素的点保持不变。

下面的示例使用2个表,但是您可以使用同一张表两次。

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;

要使用同一张表两次,可以给它们起别名:

SELECT a.ID,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;
本文链接:https://www.f2er.com/2080122.html

大家都在问