我试图找出在纯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是我需要的多边形,就像
相交计数表
APN COUNT
100 3
101 87
...
...
我可以使用python循环并在WHERE子句中使用不同的值修改查询字符串,但是我认为这不会有很好的性能--有成千上万的包(多边形)。
发布于 2015-10-23 09:42:07
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
https://stackoverflow.com/questions/33307030
复制相似问题