Schema
Owner
albenard
Descriptions
Cette fonction effectue un listing sur la qualité d'un objet géométrique au sein d'une table complète passée comme premier paramètre.
Afin que le listing soit exploitable par l'appellant elle s'appuie sur 2 parmaètres qui précise quel est le champ clé de la table (second paramètre)
et éventuellement quel autre champ l'opérateur désire récupérer dans le listing (3° paramètre).
L'appelant doit également préciser en 4° paramètre quel est le nom du champ qui contient l'objet géométrique à ananlyser.
Chaque ligne du listing contient donc un ensemble de colonne :
- clé de l'enregistment selon le paramètre en entrée.
- autre champs éventuel ou null
- les indicateurs qualitatifs que renseigne la fonction ps_ananlyse_geom à savoir :
- nb_geom nombre de géométries de l'objet
- nb_ring nombre d'anneaux présents dans l'objet
- nb_points nombre de point présents dans l'objet
- nb_geom_invalide nombre de géométries invalides de l'objet
- diffsurface différence de surface entre la géométrie initiale et la géométrie corrigée de manière automatique
- nb_ring_intersect nombre d'anneaux en auto-intersection.
- nb_ring_not_closed nombre d'anneaux non fermés dans l'objet
- nb_ring_fermeture_simple nombre d'anneaux ouverts qui peuvent être fermés sans doute sur la correction
- nb_ring_intersect_after_fermeture_ok nombre d'anneaux ouverts qui peuvent être fermés sans doute sur la correction même si la fermeture a engendré un autointersection
- nb_ring_intersect_after_fermeture_douteux nombre d'anneaux ouverts dont la fermeture engendre une autointersection dont le traitement est incertain (nécessite action humaine)
- nb_ring_not_closed_erreur nombre d'anneaux ouverts dont la fermeture est en erreur (nécessite action humaine)
- nb_geom_apres_correction nombre de géométries de l'objet corrige
- nb_ring_apres_correction nombre d'anneaux présents dans l'objet corrige
- nb_points_apres_correction nombre de point présents dans l'objet corrige
Options
Option | Value |
---|---|
Returns |
Set of record |
Language |
|
Parameters |
nom_table_concernee varchar nom_cle_table varchar nom_autre_champ varchar nom_champ_geom varchar out cle varchar out autre_champ varchar out is_null boolean out is_valid boolean out nb_geom integer out nb_ring integer out nb_points integer out nb_geom_invalide integer out diffsurface double precision out nb_ring_intersect integer out nb_ring_not_closed integer out nb_ring_fermeture_simple integer out nb_ring_intersect_after_fermeture_ok integer out nb_ring_intersect_after_fermeture_douteux integer out nb_ring_not_closed_erreur integer out nb_geom_apres_correction integer out nb_ring_apres_correction integer out nb_points_apres_correction integer |
Definition
CREATE OR REPLACE FUNCTION "analyse".ps_analyse_geom_table (
nom_table_concernee varchar,
nom_cle_table varchar,
nom_autre_champ varchar,
nom_champ_geom varchar,
out cle varchar,
out autre_champ varchar,
out is_null boolean,
out is_valid boolean,
out nb_geom integer,
out nb_ring integer,
out nb_points integer,
out nb_geom_invalide integer,
out diffsurface double precision,
out nb_ring_intersect integer,
out nb_ring_not_closed integer,
out nb_ring_fermeture_simple integer,
out nb_ring_intersect_after_fermeture_ok integer,
out nb_ring_intersect_after_fermeture_douteux integer,
out nb_ring_not_closed_erreur integer,
out nb_geom_apres_correction integer,
out nb_ring_apres_correction integer,
out nb_points_apres_correction integer
)
RETURNS SETOF record AS
$span$
DECLARE
curs_table refcursor; -- Curseur recevant les informations de la table à analyser
rec_table record; -- Enregistrement contenant la ligne en cours de traitement
rec_analyse record; -- Variable de type record pour contenir l'analyse de l'objet géométrique de la ligne courante
BEGIN
if nom_autre_champ is null then
open curs_table FOR EXECUTE('select ' || nom_cle_table || ' as cle,' || nom_champ_geom || ' as geom from ' || nom_table_concernee || ';') ;
else
open curs_table FOR EXECUTE('select ' || nom_cle_table || ' as cle,' || nom_autre_champ || ' as autre_champ,' || nom_champ_geom || ' as geom from ' || nom_table_concernee || ';') ;
end if;
LOOP
FETCH curs_table into rec_table;
if found then
cle = rec_table.cle;
if nom_autre_champ is not null then
autre_champ = rec_table.autre_champ;
end if;
select * from "analyse".ps_analyse_geom(rec_table.geom) into rec_analyse;
is_null = rec_analyse.is_null;
is_valid = rec_analyse.is_valid;
nb_geom = rec_analyse.nb_geom;
nb_ring = rec_analyse.nb_ring;
nb_points = rec_analyse.nb_points;
nb_geom_invalide = rec_analyse.nb_geom_invalide;
diffsurface = rec_analyse.diffsurface;
nb_ring_intersect = rec_analyse.nb_ring_intersect;
nb_ring_not_closed = rec_analyse.nb_ring_not_closed;
nb_ring_fermeture_simple = rec_analyse.nb_ring_fermeture_simple;
nb_ring_intersect_after_fermeture_ok = rec_analyse.nb_ring_intersect_after_fermeture_ok;
nb_ring_intersect_after_fermeture_douteux = rec_analyse.nb_ring_intersect_after_fermeture_douteux;
nb_ring_not_closed_erreur = rec_analyse.nb_ring_not_closed_erreur;
nb_geom_apres_correction = rec_analyse.nb_geom_apres_correction;
nb_ring_apres_correction = rec_analyse.nb_ring_apres_correction;
nb_points_apres_correction = rec_analyse.nb_points_apres_correction;
return next;
ELSE
EXIT;
end if;
end loop;
RETURN;
EXCEPTION
WHEN OTHERS THEN
raise notice 'Erreur ps_analyse_geom_table - table % : % %', nom_table_concernee,sqlstate, sqlerrm;
END;
$span$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100 ROWS 1000;
COMMENT ON FUNCTION "analyse".ps_analyse_geom_table(nom_table_concernee varchar, nom_cle_table varchar, nom_autre_champ varchar, nom_champ_geom varchar, out cle varchar, out autre_champ varchar, out is_null boolean, out is_valid boolean, out nb_geom integer, out nb_ring integer, out nb_points integer, out nb_geom_invalide integer, out diffsurface double precision, out nb_ring_intersect integer, out nb_ring_not_closed integer, out nb_ring_fermeture_simple integer, out nb_ring_intersect_after_fermeture_ok integer, out nb_ring_intersect_after_fermeture_douteux integer, out nb_ring_not_closed_erreur integer, out nb_geom_apres_correction integer, out nb_ring_apres_correction integer, out nb_points_apres_correction integer)
IS 'Cette fonction effectue un listing sur la qualité d''un objet géométrique au sein d''une table complète passée comme premier paramètre.
Afin que le listing soit exploitable par l''appellant elle s''appuie sur 2 parmaètres qui précise quel est le champ clé de la table (second paramètre)
et éventuellement quel autre champ l''opérateur désire récupérer dans le listing (3° paramètre).
L''appelant doit également préciser en 4° paramètre quel est le nom du champ qui contient l''objet géométrique à ananlyser.
Chaque ligne du listing contient donc un ensemble de colonne :
- clé de l''enregistment selon le paramètre en entrée.
- autre champs éventuel ou null
- les indicateurs qualitatifs que renseigne la fonction ps_ananlyse_geom à savoir :
- nb_geom nombre de géométries de l''objet
- nb_ring nombre d''anneaux présents dans l''objet
- nb_points nombre de point présents dans l''objet
- nb_geom_invalide nombre de géométries invalides de l''objet
- diffsurface différence de surface entre la géométrie initiale et la géométrie corrigée de manière automatique
- nb_ring_intersect nombre d''anneaux en auto-intersection.
- nb_ring_not_closed nombre d''anneaux non fermés dans l''objet
- nb_ring_fermeture_simple nombre d''anneaux ouverts qui peuvent être fermés sans doute sur la correction
- nb_ring_intersect_after_fermeture_ok nombre d''anneaux ouverts qui peuvent être fermés sans doute sur la correction même si la fermeture a engendré un autointersection
- nb_ring_intersect_after_fermeture_douteux nombre d''anneaux ouverts dont la fermeture engendre une autointersection dont le traitement est incertain (nécessite action humaine)
- nb_ring_not_closed_erreur nombre d''anneaux ouverts dont la fermeture est en erreur (nécessite action humaine)
- nb_geom_apres_correction nombre de géométries de l''objet corrige
- nb_ring_apres_correction nombre d''anneaux présents dans l''objet corrige
- nb_points_apres_correction nombre de point présents dans l''objet corrige
';
This file was generated with SQL Manager for PostgreSQL (www.pgsqlmanager.com) at 13/03/2014 13:23 |