Update 8. Automatisations rédigé par Antoine RIVIERE's avatar Antoine RIVIERE
...@@ -6,12 +6,162 @@ Les données nécessaires sont encore fortement dépendantes de l'étude préala ...@@ -6,12 +6,162 @@ Les données nécessaires sont encore fortement dépendantes de l'étude préala
Lorsque l'étude n'a pas été faite avec les outils de l'EPTBSN, il faudra intégrer les données suivantes en base. Lorsque l'étude n'a pas été faite avec les outils de l'EPTBSN, il faudra intégrer les données suivantes en base.
### 1.1.1) MNT 5x5 (Non surcreusé) => Convertir le raster en polygons. Table geom polygons + champs alti (geom indexées et typage fort des champs pour réduire la taille des données en base). ### 1.1.1) MNT 5x5 (Non surcreusé) => Convertir le raster en polygons. Table geom polygons + champs alti (geom indexées et typage fort des champs pour réduire la taille des données en base).
cf. [private] : https://gitlab.com/atelier-cartographique1/forum-des-marais-atlantique/-/wikis/3-Caract%C3%A9risation-des-TBV#pr%C3%A9paration-des-donn%C3%A9es-mnt-rasters-n%C3%A9cessaires-aux-calculs-indicateurs-de-sensibilit%C3%A9 Méthodo :
1. cf. [private] : https://gitlab.com/atelier-cartographique1/forum-des-marais-atlantique/-/wikis/3-Caract%C3%A9risation-des-TBV#pr%C3%A9paration-des-donn%C3%A9es-mnt-rasters-n%C3%A9cessaires-aux-calculs-indicateurs-de-sensibilit%C3%A9
2. SQL Pgrast2PgVect :
```
/*
Création de la table à partir du raster pg
MAJ 2020/10 v02:
- optimisation de la durée du traitement (<> 1 heure pour vie et jaunay)
*/
set work_mem ='32GB';
SET client_min_messages = ERROR;
/*
alti temp
*/
drop table if exists r020_territoire_physique.t_mnt_rge_r1_alti_temp ;
Create table r020_territoire_physique.t_mnt_rge_r1_alti_temp as (
with
gv as (
SELECT r.rid, ST_PixelAsPolygons(r.rast,1) gv
FROM "r020_territoire_physique"."r_topo_alti_aspect_slope_percent_grass" r -- A modifier
)
select
rid
, (gv).x
, (gv).y
, (gv).val::real as alti
, (gv).geom::geometry(polygon,2154) as geom
from gv
)
;
/*
aspect temp
*/
set work_mem ='32GB';
drop table if exists r020_territoire_physique.t_mnt_rge_r2_aspect_temp;
Create table r020_territoire_physique.t_mnt_rge_r2_aspect_temp as (
with gv as (
SELECT r.rid, ST_PixelAsPolygons(r.rast,2) gv
FROM "r020_territoire_physique"."r_topo_alti_aspect_slope_percent_grass" r -- A modifier
)
select rid,(gv).val::real as aspect, (gv).x, (gv).y
from gv
)
;
set work_mem ='32GB';
CREATE INDEX idx_t_mnt_rge_r2_aspect_temp
ON r020_territoire_physique.t_mnt_rge_r2_aspect_temp
USING btree
(rid, x, y);
/*
slope temp
*/
set work_mem ='32GB';
DROP table IF EXISTS r020_territoire_physique.t_mnt_rge_r3_slope_temp ;
Create table r020_territoire_physique.t_mnt_rge_r3_slope_temp as (
with gv as (
SELECT r.rid, ST_PixelAsPolygons(r.rast,3) gv
FROM "r020_territoire_physique"."r_topo_alti_aspect_slope_percent_grass" r -- A modifier
)
select rid,(gv).val::real as slope_percent, (gv).x, (gv).y from gv
)
;
set work_mem ='32GB';
CREATE INDEX idx_t_mnt_rge_r3_slope_temp
ON r020_territoire_physique.t_mnt_rge_r3_slope_temp
USING btree
(rid, x, y);
/*
Assemblage :
*/
set work_mem ='32GB';
drop table if exists r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass ;
Create table r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass as (
select row_number() over() ::bigint as gid
, r1.alti::real
, r2.aspect::real
, r3.slope_percent::real
, r1.geom::geometry(polygon,2154) as geom
FROM r020_territoire_physique.t_mnt_rge_r1_alti_temp r1
LEFT JOIN r020_territoire_physique.t_mnt_rge_r2_aspect_temp r2 on (r1.rid=r2.rid and r1.x=r2.x AND r1.y=r2.y)
LEFT JOIN r020_territoire_physique.t_mnt_rge_r3_slope_temp r3 on (r1.rid=r3.rid and r1.x=r3.x AND r1.y=r3.y)
);
/*
AJOUT des commentaires
*/
COMMENT ON TABLE r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass
IS 'Données du RGE alti de l''IGN (5mx5m)
date de création : 07/2022
Méthode de calcul et de création de la couche :
http://wiki.sevre-nantaise.com/index.php/Localisation_et_caract%C3%A9risation_des_t%C3%AAtes_de_bassin_versant#Pr.C3.A9paration_des_donn.C3.A9es_rasters_n.C3.A9cessaires_aux_calculs
Référence grass :
https://grass.osgeo.org/grass70/manuals/r.slope.aspect.html
';
COMMENT ON COLUMN r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass.alti IS 'altitude en m';
COMMENT ON COLUMN r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass.slope_percent IS 'pente en poucentage (calcul grass https://grass.osgeo.org/grass70/manuals/r.slope.aspect.html)';
COMMENT ON COLUMN r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass.aspect IS 'Direction de pente = orientation (calcul grass : https://grass.osgeo.org/grass70/manuals/r.slope.aspect.html)
Description des valeurs :
The aspect output raster map indicates the direction that slopes are facing. The aspect categories represent the number degrees of east. Category and color table files are also generated for the aspect raster map. The aspect categories represent the number degrees of east and they increase counterclockwise: 90 degrees is North, 180 is West, 270 is South 360 is East.
90 : Nord
180 : Ouest
270 : Sud
360 : Est';
/*
AJOUT pk et index geom
*/
set work_mem ='32GB';
ALTER TABLE r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass
ADD CONSTRAINT t_mnt_alti_aspect_slope_percent_grass_pkey PRIMARY KEY(gid);
CREATE INDEX sidx_t_mnt_alti_aspect_slope_percent_grass_geom
ON r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass
USING gist
(geom);
/*
Supression des tables temporaires
*/
drop table if exists r020_territoire_physique.t_mnt_rge_r1_alti_temp ;
drop table if exists r020_territoire_physique.t_mnt_rge_r2_aspect_temp;
DROP table IF EXISTS r020_territoire_physique.t_mnt_rge_r3_slope_temp ;
```
* chemin de la table en base : r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass * chemin de la table en base : r020_territoire_physique.t_mnt_alti_aspect_slope_percent_grass
* Champs nécessaires : * Champs nécessaires :
* geom : geometry(polygon, 2154) + index GIST ! * geom : geometry(polygon, 2154) + index GIST !
* alti : numeric (5,2) * alti : real
> Note TODO AR : implémenter l'utilisation directe du raster PG. > Note TODO AR : implémenter l'utilisation directe du raster PG.
### 1.1.2) Segments théoriques calculés à partir d'un MNT surcreusé par réseau hydro réel (idéalement calculés avec GRASS) avec différents threshold : ### 1.1.2) Segments théoriques calculés à partir d'un MNT surcreusé par réseau hydro réel (idéalement calculés avec GRASS) avec différents threshold :
... ...
......