Schema
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 |
|
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 |