需要每个多边形与缓冲多边形邻居的多边形相交计数
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
我试图找出是否有可能在纯粹的 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