需要每个多边形与缓冲多边形邻居的多边形相交计数

Need polygon intersect counts with buffered polygon neighbors FOR EACH polygon

我试图找出是否有可能在纯粹的 SQL 中生成一个 table 层中每个多边形与其相应的相邻多边形(缓冲的)相交的数量层的缓冲版本。

一个粗糙且有缺陷的版本如下:

For each value in list:

SELECT 
    Count(*) 
INTO 
    intersectcounts
FROM
    parcels,parcelsbuffered
WHERE
    parcels.apn = value AND ST_INTERSECT(parcels.geom,parcelsbuffered.geom)

这里的geom是多边形 我需要这样的结果

交叉数table

APN COUNT
100   3
101  87
...
...

我可以使用 python 循环并在 WHERE 子句中使用不同的值修改查询字符串,但我认为这不会有很好的性能 - 有成千上万的包裹(多边形)

 SELECT parcels.apn, count(*) as intersectcounts
 FROM parcels 
 JOIN parcelsbuffered
   ON ST_INTERSECT(parcels.geom, parcelsbuffered.geom)
 GROUP BY parcels.apn

您可能想要包括一些验证以删除与他自己的缓冲版本相交的包裹,例如

(count(*) - 1) as intersectcounts

WHERE parcerls.apn <> parcelsbuffered.apn