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