150 | | |
| 150 | = CLC = |
| 151 | {{{ |
| 152 | -------------------------------------------- |
| 153 | --------------------------------------------- |
| 154 | -- Corinne Landcover |
| 155 | --------------------------------------------- |
| 156 | --------------------------------------------- |
| 157 | -------------------------------------- |
| 158 | -------------------------------------- |
| 159 | --SURFACE CUT |
| 160 | -------------------------------------- |
| 161 | -------------------------------------- |
| 162 | DROP TABLE IF EXISTS clc.clipped_spain; |
| 163 | CREATE TABLE clc.clipped_spain AS |
| 164 | SELECT intersected.clcgid, intersected.gid, code_00,the_geom |
| 165 | FROM (SELECT clc.gid as clcgid, c.gid,code_00, ST_Multi(ST_Intersection(clc.the_geom, c.the_geom)) the_geom |
| 166 | FROM clc.clc00_v2_europe clc INNER JOIN |
| 167 | (select * from ccm21.catchments c WHERE c.wso_id IN (SELECT wso_id FROM europe.wso WHERE area='Spain_Atl')) as c |
| 168 | ON ST_Intersects (c.the_geom,clc.the_geom) |
| 169 | |
| 170 | -- AND substring(code_00 from 1 for 1)='1' |
| 171 | ) AS intersected; --2h30 min |
| 172 | ALTER TABLE clc.clipped_spain ADD column id serial PRIMARY KEY; |
| 173 | alter table clc.clipped_spain add CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2); |
| 174 | alter table clc.clipped_spain add CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL); |
| 175 | alter table clc.clipped_spain add CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 3035); |
| 176 | CREATE INDEX indexclc00clipped_spain ON clc.clipped_spain |
| 177 | USING GIST ( the_geom GIST_GEOMETRY_OPS ); |
| 178 | -------------------------------------- |
| 179 | -------------------------------------- |
| 180 | --MERGING |
| 181 | -------------------------------------- |
| 182 | -------------------------------------- |
| 183 | DROP TABLE IF EXISTS clc.clipped_spain1; |
| 184 | CREATE TABLE clc.clipped_spain1 AS ( |
| 185 | SELECT gid,code_00, |
| 186 | ST_Multi(ST_Collect(f.the_geom)) as the_geom |
| 187 | FROM (SELECT gid, code_00,(ST_Dump(the_geom)).geom As the_geom |
| 188 | FROM |
| 189 | clc.clipped_spain |
| 190 | ) As f |
| 191 | GROUP BY gid,code_00);--171 s |
| 192 | ALTER TABLE clc.clipped_spain1 add column id serial PRIMARY KEY; |
| 193 | alter table clc.clipped_spain1 add CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2); |
| 194 | alter table clc.clipped_spain1 add CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL); |
| 195 | alter table clc.clipped_spain1 add CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 3035); |
| 196 | CREATE INDEX indexclc00clipped_spain1 ON clc.clipped_spain1 |
| 197 | USING GIST ( the_geom GIST_GEOMETRY_OPS ); |
| 198 | ALTER TABLE clc.clipped_spain1 add constraint c_ck_uk_spain UNIQUE(gid,code_00); -- contrainte d'unicité |
| 199 | -------------------------------------- |
| 200 | -------------------------------------- |
| 201 | --AREA |
| 202 | -------------------------------------- |
| 203 | -------------------------------------- |
| 204 | ALTER TABLE clc.clipped_spain1 add column area numeric; |
| 205 | UPDATE clc.clipped_spain1 set area=ST_Area(the_geom); |
| 206 | -------------------------------------- |
| 207 | -------------------------------------- |
| 208 | --AREA PER COLUMN FOR CLC TYPE (agregation) |
| 209 | -------------------------------------- |
| 210 | -------------------------------------- |
| 211 | SELECT gid,code_00, id,round(area) as area FROM clc.clipped_spain1 order by gid, code_00 limit 10; |
| 212 | DROP TABLE IF EXISTS clc.surf_area; |
| 213 | CREATE TABLE clc.surf_area AS ( |
| 214 | SELECT DISTINCT ON (init.gid) init.gid, |
| 215 | artificial_surfaces_11_13, |
| 216 | artificial_vegetated_14, |
| 217 | arable_land_21, |
| 218 | permanent_crops_22, |
| 219 | pastures_23, |
| 220 | heterogeneous_agricultural_24, |
| 221 | forest_31, |
| 222 | natural_32_33, |
| 223 | wetlands_4, |
| 224 | inland_waterbodies_51 , |
| 225 | marine_water_52 |
| 226 | -- SELECT * |
| 227 | FROM ( |
| 228 | SELECT gid from clc.clipped_spain1 ) as init |
| 229 | FULL OUTER JOIN (SELECT gid,sum(area) AS artificial_surfaces_11_13 FROM clc.clipped_spain1 WHERE |
| 230 | substring(code_00 from 1 for 2)='11' |
| 231 | OR substring(code_00 from 1 for 2)='12' |
| 232 | OR substring(code_00 from 1 for 2)='13' |
| 233 | GROUP BY gid) AS artificial_surfaces |
| 234 | on (init.gid) =(artificial_surfaces.gid) |
| 235 | FULL OUTER JOIN (SELECT gid,sum(area) AS artificial_vegetated_14 FROM clc.clipped_spain1 WHERE |
| 236 | substring(code_00 from 1 for 2)='14' |
| 237 | GROUP BY gid) AS artificial_vegetated |
| 238 | on artificial_vegetated.gid =init.gid |
| 239 | FULL OUTER JOIN (SELECT gid,sum(area) AS arable_land_21 FROM clc.clipped_spain1 WHERE |
| 240 | substring(code_00 from 1 for 2)='21' |
| 241 | GROUP BY gid) AS arable_land |
| 242 | on arable_land.gid =init.gid |
| 243 | FULL OUTER JOIN (SELECT gid, sum(area) AS permanent_crops_22 FROM clc.clipped_spain1 WHERE |
| 244 | substring(code_00 from 1 for 2)='22' |
| 245 | GROUP BY gid) AS permanent_crops |
| 246 | on permanent_crops.gid =init.gid |
| 247 | FULL OUTER JOIN (SELECT gid,sum(area) AS pastures_23 FROM clc.clipped_spain1 WHERE |
| 248 | substring(code_00 from 1 for 2)='23' |
| 249 | GROUP BY gid) AS pastures |
| 250 | on pastures.gid =init.gid |
| 251 | FULL OUTER JOIN (SELECT gid, sum(area) AS heterogeneous_agricultural_24 FROM clc.clipped_spain1 WHERE |
| 252 | substring(code_00 from 1 for 2)='24' |
| 253 | GROUP BY gid) AS heterogeneous_agricultural |
| 254 | on heterogeneous_agricultural.gid =init.gid |
| 255 | FULL OUTER JOIN (SELECT gid,sum(area) AS forest_31 FROM clc.clipped_spain1 WHERE |
| 256 | substring(code_00 from 1 for 2)='31' |
| 257 | GROUP BY gid) AS forest |
| 258 | ON forest.gid =init.gid |
| 259 | FULL OUTER JOIN (SELECT gid,sum(area) AS natural_32_33 FROM clc.clipped_spain1 WHERE |
| 260 | substring(code_00 from 1 for 2)='32' |
| 261 | OR substring(code_00 from 1 for 2)='33' |
| 262 | GROUP BY gid) AS nature |
| 263 | ON nature.gid =init.gid |
| 264 | FULL OUTER JOIN (SELECT gid, sum(area) AS wetlands_4 FROM clc.clipped_spain1 WHERE |
| 265 | substring(code_00 from 1 for 1)='4' |
| 266 | GROUP BY gid) AS wetlands |
| 267 | on wetlands.gid =init.gid |
| 268 | FULL OUTER JOIN (SELECT gid,sum(area) AS inland_waterbodies_51 FROM clc.clipped_spain1 WHERE |
| 269 | substring(code_00 from 1 for 2)='51' |
| 270 | GROUP BY gid) AS waterbodies |
| 271 | on waterbodies.gid =init.gid |
| 272 | FULL OUTER JOIN (SELECT gid,sum(area) AS marine_water_52 FROM clc.clipped_spain1 WHERE |
| 273 | substring(code_00 from 1 for 2)='52' |
| 274 | GROUP BY gid) AS marine_water |
| 275 | on marine_water.gid =init.gid); --375 ms |
| 276 | ALTER TABLE clc.surf_area ADD CONSTRAINT c_pk_gid_surf_area_spain PRIMARY KEY (gid); |
| 277 | SELECT * FROM clc.surf_area; |
| 278 | -------------------------------------- |
| 279 | -------------------------------------- |
| 280 | --REMOVING ZEROS AND JOINING RIVERSEGMENTS AND CATCHMENTS TABLES |
| 281 | -------------------------------------- |
| 282 | -------------------------------------- |
| 283 | DROP TABLE IF EXISTS clc.surf_area1; |
| 284 | CREATE TABLE clc.surf_area1 AS( |
| 285 | SELECT |
| 286 | r.gid, |
| 287 | C.area/1e6 as catchment_area, |
| 288 | CASE WHEN p.artificial_surfaces_11_13 IS NOT NULL THEN p.artificial_surfaces_11_13/1e6 |
| 289 | ELSE 0 |
| 290 | END AS artificial_surfaces_11_13, |
| 291 | CASE WHEN p.artificial_vegetated_14 IS NOT NULL THEN p.artificial_vegetated_14/1e6 |
| 292 | ELSE 0 |
| 293 | END AS artificial_vegetated_14, |
| 294 | CASE WHEN p.arable_land_21 IS NOT NULL THEN p.arable_land_21/1e6 |
| 295 | ELSE 0 |
| 296 | END AS arable_land_21, |
| 297 | CASE WHEN p.permanent_crops_22 IS NOT NULL THEN p.permanent_crops_22/1e6 |
| 298 | ELSE 0 |
| 299 | END AS permanent_crops_22, |
| 300 | CASE WHEN p.pastures_23 IS NOT NULL THEN p.pastures_23/1e6 |
| 301 | ELSE 0 |
| 302 | END AS pastures_23, |
| 303 | CASE WHEN p.heterogeneous_agricultural_24 IS NOT NULL THEN p.heterogeneous_agricultural_24/1e6 |
| 304 | ELSE 0 |
| 305 | END AS heterogeneous_agricultural_24, |
| 306 | CASE WHEN p.forest_31 IS NOT NULL THEN p.forest_31/1e6 |
| 307 | ELSE 0 |
| 308 | END AS forest_31, |
| 309 | CASE WHEN p.natural_32_33 IS NOT NULL THEN p.natural_32_33/1e6 |
| 310 | ELSE 0 |
| 311 | END AS natural_32_33, |
| 312 | CASE WHEN p.wetlands_4 IS NOT NULL THEN p.wetlands_4/1e6 |
| 313 | ELSE 0 |
| 314 | END AS wetlands_4, |
| 315 | CASE WHEN p.inland_waterbodies_51 IS NOT NULL THEN p.inland_waterbodies_51 /1e6 |
| 316 | ELSE 0 |
| 317 | END AS inland_waterbodies_51, |
| 318 | CASE WHEN p.marine_water_52 IS NOT NULL THEN p.marine_water_52/1e6 |
| 319 | ELSE 0 |
| 320 | END AS marine_water_52, |
| 321 | c.wso1_id, |
| 322 | c.the_geom |
| 323 | FROM clc.surf_area p |
| 324 | JOIN ccm21.catchments c ON c.gid=p.gid |
| 325 | JOIN ccm21.riversegments r on r.wso1_id=c.wso1_id |
| 326 | ); |
| 327 | }}} |