[postgis-users] How to improve query with repeated spatial joinquery

Hugues François hugues.francois at irstea.fr
Fri May 3 03:32:58 PDT 2013


Hello,
 
I think over() can help you. You should try something like the query below :
 
select b.gid, volume / sum(volume) over(partition by p.gid) asvol_per, p.bgrill as bgrill, b.geom
from buildings as b, 
join stat_parcels as p on st_contains(p.geom, st_centroid(b.geom))
 
Hugues.
 

--

 

Hugues FRANÇOIS

 

________________________________

From: postgis-users-bounces at lists.osgeo.org [mailto:postgis-users-bounces at lists.osgeo.org] On Behalf Of Alexandre Neto
Sent: Friday, May 03, 2013 12:25 PM
To: PostGIS Users Discussion
Subject: [postgis-users] How to improve query with repeated spatial joinquery


Hello all,


My goal is to calculate for each building it's volume percentage relatively to the total buildings volume inside the statistical parcel he is in.

I have written the SQL code below (that works), but I think it might be improved, since I see repeated proceedings in it. 

I would greatly appreciate if someone give me some advice about it.

Thanks,

Alexandre Neto

-----------

SELECT 
b.gid,
b.volume / t.total_volume as vol_per,
b.geom,
p.bgri11 as bgri11,
FROM
buildings as b,
stat_parcels as p,
(SELECT 
sum(b.volume) as total_volume,
p.bgri11 as bgri11
FROM
buildings as b,
stat_parcels as p
WHERE
ST_CONTAINS(p.geom, St_centroid(b.geom))
GROUP BY
p.bgri11) as t
WHERE
ST_CONTAINS(g.geom, St_centroid(f.geom))
AND p.bgri11 = t.bgri11;


My tables look like this: 

CREATE TABLE buildings
  gid serial NOT NULL,
  volume double precision,
  geom geometry(MultiPolygon,27493),
  CONSTRAINT edificios_habitacao_pkey PRIMARY KEY (gid);

CREATE TABLE stat_parcels
  gid serial NOT NULL,
  bgri11 character varying(11),
  geom geometry(MultiPolygon,27493),
  CONSTRAINT bgri11_cascais_pkey PRIMARY KEY (gid)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20130503/51912ba3/attachment.html>


More information about the postgis-users mailing list