CLC Join: ticket#56fin.sql

File ticket#56fin.sql, 4.8 KB (added by cedric, 15 years ago)
Line 
1ALTER TABLE clc.surf_area RENAME TO surf_area_bretagne;
2ALTER TABLE clc.surf_area1 RENAME TO surf_area1_bretagne;
3DROP TABLE IF EXISTS clc.clipped1;
4CREATE TABLE clc.clipped1 AS (
5SELECT gid,code_00,
6           ST_Multi(ST_Collect(f.the_geom)) as the_geom
7         FROM (SELECT gid, code_00,(ST_Dump(the_geom)).geom As the_geom
8                                FROM
9                                 clc.clipped
10                                ) As f
11GROUP BY gid,code_00); -- 5s
12ALTER TABLE clc.clipped1 add column id serial PRIMARY KEY;
13alter table clc.clipped1 add CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2);
14alter table clc.clipped1 add  CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL);
15alter table clc.clipped1 add  CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 3035);
16CREATE INDEX indexclc00clipped1 ON clc.clipped1
17  USING GIST ( the_geom GIST_GEOMETRY_OPS );
18ALTER TABLE clc.clipped1 add constraint c_ck_ukclipped1  UNIQUE(gid,code_00); -- contrainte d'unicité OK !
19
20
21ALTER TABLE clc.clipped1 add column area numeric;
22UPDATE clc.clipped1 set area=ST_Area(the_geom); -- 9s
23
24DROP TABLE IF EXISTS clc.surf_area;
25CREATE TABLE clc.surf_area AS (
26SELECT DISTINCT ON (init.gid) init.gid,
27        artificial_surfaces_11_13,
28        artificial_vegetated_14,
29         arable_land_21,
30         permanent_crops_22,
31         pastures_23,
32         heterogeneous_agricultural_24,
33         forest_31,
34         natural_32_33,
35         wetlands_4,
36         inland_waterbodies_51 ,
37         marine_water_52
38        -- SELECT *
39         FROM (
40        SELECT  gid from clc.clipped1  ) as init       
41        FULL OUTER JOIN (SELECT gid,sum(area) AS artificial_surfaces_11_13 FROM clc.clipped1 WHERE 
42                        substring(code_00 from 1 for 2)='11' 
43                        OR  substring(code_00 from 1 for 2)='12'
44                        OR substring(code_00 from 1 for 2)='13' 
45                        GROUP BY gid) AS artificial_surfaces
46                       on (init.gid) =(artificial_surfaces.gid)         
47        FULL OUTER JOIN (SELECT gid,sum(area) AS artificial_vegetated_14 FROM clc.clipped1 WHERE 
48                        substring(code_00 from 1 for 2)='14'
49                        GROUP BY gid) AS artificial_vegetated
50                        on artificial_vegetated.gid =init.gid
51        FULL OUTER JOIN (SELECT gid,sum(area) AS arable_land_21 FROM clc.clipped1 WHERE 
52                        substring(code_00 from 1 for 2)='21'
53                        GROUP BY gid) AS arable_land
54                        on arable_land.gid =init.gid
55        FULL OUTER JOIN (SELECT gid, sum(area) AS permanent_crops_22 FROM clc.clipped1 WHERE 
56                        substring(code_00 from 1 for 2)='22'
57                        GROUP BY gid) AS permanent_crops
58                        on permanent_crops.gid =init.gid
59        FULL OUTER JOIN (SELECT gid,sum(area) AS pastures_23 FROM clc.clipped1 WHERE 
60                        substring(code_00 from 1 for 2)='23'
61                        GROUP BY gid) AS pastures
62                        on pastures.gid =init.gid
63        FULL OUTER JOIN (SELECT gid, sum(area) AS heterogeneous_agricultural_24 FROM clc.clipped1 WHERE 
64                        substring(code_00 from 1 for 2)='24'
65                        GROUP BY gid) AS heterogeneous_agricultural
66                        on heterogeneous_agricultural.gid =init.gid
67        FULL OUTER JOIN (SELECT gid,sum(area) AS forest_31 FROM clc.clipped1 WHERE 
68                        substring(code_00 from 1 for 2)='31'
69                        GROUP BY gid) AS forest
70                        ON forest.gid =init.gid
71        FULL OUTER JOIN (SELECT gid,sum(area) AS natural_32_33 FROM clc.clipped1 WHERE 
72                        substring(code_00 from 1 for 2)='32'
73                        OR  substring(code_00 from 1 for 2)='33'
74                        GROUP BY gid) AS nature
75                        ON nature.gid =init.gid
76        FULL OUTER JOIN (SELECT gid, sum(area) AS wetlands_4  FROM clc.clipped1 WHERE 
77                        substring(code_00 from 1 for 1)='4'
78                        GROUP BY gid) AS wetlands
79                        on wetlands.gid =init.gid
80        FULL OUTER JOIN (SELECT gid,sum(area) AS inland_waterbodies_51 FROM clc.clipped1 WHERE 
81                        substring(code_00 from 1 for 2)='51'
82                        GROUP BY gid) AS waterbodies
83                        on waterbodies.gid =init.gid
84        FULL OUTER JOIN (SELECT gid,sum(area) AS marine_water_52 FROM clc.clipped1 WHERE 
85                        substring(code_00 from 1 for 2)='52'
86                        GROUP BY gid) AS marine_water
87                        on marine_water.gid =init.gid); --375 ms
88ALTER TABLE clc.surf_area ADD CONSTRAINT c_pk_gid_surf_area_ PRIMARY KEY (gid); -- both 36 min