db.silva.inrae.fr/db_biljou_param - db_biljou_param on db.silva.inrae.fr
Previous topic Chapter index Next topic

Function: ps_preparation_ondine

 

 

Schema

public

 

Owner

albenard

 

Descriptions

Cette procedure prepare les fichiers pour un usage en parallélisation d'ondine avec météo SAFRAN passé et sol GSM.

 

Options

Option

Value

Returns

boolean

Language

plpgsql

Parameters

There are no parameters for function ps_preparation_ondine

 

Definition

CREATE OR REPLACE FUNCTION public.ps_preparation_ondine (
)
RETURNS boolean LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
PARALLEL UNSAFE
COST
100
AS
$span$
DECLARE
 nom_maille_meteo VARCHAR; -- variable pour stocker le nom de la maille en cours de traitement
 requete VARCHAR; -- variable permettant de stocker le texte d'une requête
 chemin_fichier VARCHAR; --dossier dans lequel créer les fichiers cle;x;y
BEGIN
 DROP TABLE IF EXISTS croisement_safran_gsm;
 create temporary table croisement_safran_gsm(
     maille_sol bigint,
     maille_meteo bigint,
     x_2154 double precision,
     y_2154 double precision,
     x_27572 double precision,
     y_27572 double precision
 );
 raise notice 'table cree';
 SET client_min_messages = 'warning';
 with point_sol as
       (SELECT val as maille_sol, st_x(geom)as x_2154, st_y(geom)as y_2154,st_transform(geom,27572)as geom_sol
       FROM (SELECT dp.* FROM geo_raster_france_90m_gsm, LATERAL ST_PixelAsCentroids(rast, 1) AS dp) foo)

   insert into croisement_safran_gsm(maille_sol,maille_meteo,x_2154,y_2154,x_27572,y_27572)
   select maille_sol,
       st_value(rast,geom_sol) as maille_meteo ,
       x_2154,
       y_2154,
       st_x(geom_sol)as x_27572,
       st_y(geom_sol) as y_27572
       from point_sol, geo_raster_france_8km_safran
       where st_intersects(rast,geom_sol);
 SET client_min_messages = 'notice';
 raise notice 'table alimentée';
 CREATE INDEX croisement_safran_gsm__maille_meteo_idx ON croisement_safran_gsm USING btree (maille_meteo);
 --vacuum analyse croisement_safran_gsm;
 
   for nom_maille_meteo in select distinct maille_meteo from croisement_safran_gsm
   loop
    if nom_maille_meteo is not NULL THEN
         
raise notice 'maille : %',nom_maille_meteo;
         requete = 'COPY (select maille_sol as cle, x_2154 as x, y_2154 as y from croisement_safran_gsm  where maille_meteo = ' || nom_maille_meteo || ')  TO ' || quote_literal('/data/pgsql/ondine/' || nom_maille_meteo || '.csv') || ' DELIMITER ' || quote_literal(';');
         execute requete;
       end if;
   end loop;
   return TRUE;
EXCEPTION
WHEN
OTHERS THEN
raise notice '% % - % ', sqlstate, sqlerrm, requete;
   return FALSE;
END;
$span$;

COMMENT ON FUNCTION public.ps_preparation_ondine()
IS 'Cette procedure prepare les fichiers pour un usage en parallélisation d''ondine avec météo SAFRAN passé et sol GSM.';

This file was generated with SQL Manager for PostgreSQL (www.pgsqlmanager.com) at 07/12/2018 13:23
Previous topic Chapter index Next topic