2016-12-29 18 views
1

У меня есть таблица полигонов postgis (zipcode1) и таблица с двумя точками (pm253, blockpop). Я хотел бы пересечь таблицу многоугольников против двухточечной таблицы и подсчитать, сколько точек у меня есть для каждой таблицы точек, суммировать некоторые другие атрибуты для вычисления отношения. Я могу сделать это против одного стола, как вы видите здесь:PostGIS Intersection multiple geometry

SELECT zipcode1.gid, count(*) as totpm, sum(pm) as totsum, sum(pm)/count(*) as res 
FROM pm253, zipcode1 
WHERE st_intersects(st_buffer(zipcode1.geom, 100),pm253.geom) 
GROUP BY zipcode1.gid 

Любые предложения? Спасибо.

ответ

0

Try union;

SELECT 'zipcode1<->pm253' as tables, zipcode1.gid, count(*) as totpm, sum(pm) as totsum, sum(pm)/count(*) as res 
FROM pm253, zipcode1 
WHERE st_intersects(st_buffer(zipcode1.geom, 100),pm253.geom) and zipcode1.geom&&pm253.geom -- to accelerate query 
GROUP BY zipcode1.gid 

union 

SELECT 'zipcode1<->blockpop' as tables, zipcode1.gid, count(*) as totpm, sum(pm) as totsum, sum(pm)/count(*) as res 
FROM blockpop, zipcode1 
WHERE st_intersects(st_buffer(zipcode1.geom, 100),blockpop.geom) and zipcode1.geom && blockpop.geom -- to accelerate query 
GROUP BY zipcode1.gid