需要多边形交叉计数与缓冲的多边形邻居FOR EACH polygon

时间:2015-10-23 16:15:14

标签: sql postgis

我试图找出它是否可以在纯SQL中生成一个表,其中一个图层中每个多边形的相交数与其对应的相邻相邻多边形(缓冲)在图层的缓冲版本中。

粗略且有缺陷的版本如下:

For each value in list:

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

这里的geom是多边形 我需要像

那样的结果

intersectscount表

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

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

1 个答案:

答案 0 :(得分:2)

 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