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

Postgresql 如何计算PostGIS中有多少缓冲区相交,postgresql,buffer,postgis,points,Postgresql,Buffer,Postgis,Points,如何计算有多少缓冲区相交,并仅选择那些与其他缓冲区相交在2和6之间的缓冲区?我可以用下面的查询创建一个缓冲区,但我不知道如何计算交叉点 SELECT ST_Buffer(geom::geography, 400) FROM mytable; 谢谢你的帮助。谢谢。在这种情况下使用缓冲区是错误的,因为缓冲区只是一个近似值。相反,请使用与索引兼容的st_dwithin()函数 其思想是选择距离两倍以内的所有点(多边形或其他点),对结果进行分组,并保持这些点至少有6个附近的特征 下面的示例使用两个表,

如何计算有多少缓冲区相交,并仅选择那些与其他缓冲区相交在2和6之间的缓冲区?我可以用下面的查询创建一个缓冲区,但我不知道如何计算交叉点

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

谢谢你的帮助。谢谢。

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

其思想是选择距离两倍以内的所有点(多边形或其他点),对结果进行分组,并保持这些点至少有6个附近的特征

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

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, 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;

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

其思想是选择距离两倍以内的所有点(多边形或其他点),对结果进行分组,并保持这些点至少有6个附近的特征

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

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, 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;

感谢您的帮助。我尝试将其原样用于一个表,但收到错误:
多次指定了表名“mytable”
。我怎样才能接受您对一个表的查询?谢谢,太好了。非常感谢。感谢您的帮助。我尝试将其原样用于一个表,但收到错误:
多次指定了表名“mytable”
。我怎样才能接受您对一个表的查询?谢谢,太好了。非常感谢你。