我试图找出它是否可以在纯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子句中使用不同的值修改查询字符串,但我不认为这会有很好的性能 - 有数千个包(多边形)
答案 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