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

Function: ps_informations_geometrie

 

 

Schema

public

 

Owner

biljou_param

 

Descriptions

Procédure permettant d'obtenir des informations sur les géométries notamment le nom de la table contenant la géometrie, le système de projection, le type de géométrie (raster, point ou polygone) et le nombre de pixels disposant d'une valeur non null (cas des rasters) ou le nombre de géométries pour les vecteurs. Cette procédure sera utilisée par Ondine pour proposer la créaion du ficheir XY lorsque la taille reste raisonnable (paramétré coté Ondine).

 

Options

Option

Value

Returns

Set of record

Language

plpgsql

Parameters

nb_max_element integer

out nom_geometrie varchar

out nom_table varchar

out srid_projection varchar

out srid_epsg integer

out type_geometrie varchar

out nb_valeur integer

 

Definition

CREATE OR REPLACE FUNCTION public.ps_informations_geometrie (
 nb_max_element integer,
 out nom_geometrie varchar,
 out nom_table varchar,
 out srid_projection varchar,
 out srid_epsg integer,
 out type_geometrie varchar,
 out nb_valeur integer
)
RETURNS SETOF record LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
PARALLEL UNSAFE
COST
100 ROWS 1000
AS
$span$
DECLARE
 curs_geom refcursor; -- Curseur recevant les informations de geometrie
 rec_geom record; -- Enregistrement contenant la ligne (champ) en cours de traitement
 requete varchar; -- Chaine pour la construction des requetes

BEGIN
 requete = 'SELECT
     public.tr_geometrie_geo.geo_id,
     public.tr_geometrie_geo.geo_nom,
     public.tr_geometrie_geo.geo_table,
     public.tr_srid_sri.sri_nom,
     public.tr_srid_sri.sri_code_epsg,
     public.tr_type_typ.typ_code
   FROM
     public.tr_geometrie_geo
     INNER JOIN public.tr_type_typ ON (public.tr_geometrie_geo.geo_typ_id = public.tr_type_typ.typ_id)
     INNER JOIN public.tr_srid_sri ON (public.tr_geometrie_geo.geo_sri_id = public.tr_srid_sri.sri_id)'
 ||';';
 open curs_geom FOR EXECUTE(requete) ;
   LOOP
     FETCH curs_geom into rec_geom;
         if found then
          nom_geometrie = rec_geom.geo_nom;
          nom_table = rec_geom.geo_table;
           srid_projection=rec_geom.sri_nom;
           srid_epsg = rec_geom.sri_code_epsg;
           type_geometrie = rec_geom.typ_code;
  CASE type_geometrie
            WHEN 'raster' THEN
                requete ='select st_countagg(rast,true) from '  || rec_geom.geo_table;
               WHEN 'point', 'polygone' THEN
                requete='select count(*) from '  || rec_geom.geo_table;
          ELSE
                type_geometrie = 'erreur';
                   return next;
           END CASE;
           execute requete into nb_valeur;
           IF (nb_valeur<nb_max_element) and (nb_valeur>1) THEN
            return next
;
           end if;
         ELSE
          exit
;
         end if;
   end loop;
 
 
EXCEPTION
WHEN
OTHERS THEN
  
raise exception 'Erreur ps_informations_geometrie - %', sqlstate;
END;
$span$;

COMMENT ON FUNCTION public.ps_informations_geometrie(nb_max_element integer, out nom_geometrie varchar, out nom_table varchar, out srid_projection varchar, out srid_epsg integer, out type_geometrie varchar, out nb_valeur integer)
IS 'Procédure permettant d''obtenir des informations sur les géométries notamment le nom de la table contenant la géometrie, le système de projection, le type de géométrie (raster, point ou polygone) et le nombre de pixels disposant d''une valeur non null (cas des rasters) ou le nombre de géométries pour les vecteurs. Cette procédure sera utilisée par Ondine pour proposer la créaion du ficheir XY lorsque la taille reste raisonnable (paramétré coté Ondine).';

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