Annonce
Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.
Vous allez recevoir un message pour effectuer ce changement de mot de passe.
Merci de bien respecter les règles préconisées.
Pages: 1
- Sujet précédent - Postgis / trigger et fonction sommer un nombre de points sur une zone - Sujet suivant
#1 Tue 20 February 2018 18:08
- pgilbert
- Juste Inscrit !
- Lieu: Noisy-le-Grand
- Date d'inscription: 20 Feb 2012
- Messages: 5
Postgis / trigger et fonction sommer un nombre de points sur une zone
Bonjour à tous,
Je débute avec les fonctions et les triggers sur postgresql et postgis. J'ai besoin d'aide. Je voudrais mettre à jour automatiquement un attribut d'une couche polygone à la création d'une nouvelle entité (ou sa modification) avec la somme d'un attribut d'entités ponctuels intersectant cette nouvelle entité.
Pour mon exemple, il s'agit d'électeurs suivant un zonage. j'ai 2 couches:
- electeur(ponctuelle)
- id
- electeurs (nombre_electeurs)
- geom
- zonages
- id
- nb_elec (champs à mettre à jour automatiquement)
- geom
J'ai testé à la création de la fonction suivante
Code:
CREATE OR REPLACE FUNCTION public.nb_elec() RETURNS trigger AS $BODY$ BEGIN NEW.nb_elec = tot_elect as (select sum(electeurs) from public.zonages join public.electeur on st_intersects(electeur.geom, NEW.geom) group by new.geom) RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100;
et la création du trigger suivant
Code:
CREATE TRIGGER t_nbelec AFTER INSERT OR UPDATE ON zonages FOR EACH ROW EXECUTE PROCEDURE public.nb_elec();
merci pour votre aide
Hors ligne
#2 Tue 20 February 2018 22:59
- Rémi F
- Juste Inscrit !
- Date d'inscription: 18 Nov 2016
- Messages: 6
Re: Postgis / trigger et fonction sommer un nombre de points sur une zone
Bonjour, essayez directement ceci :
Code:
CREATE OR REPLACE FUNCTION public.nb_elec() RETURNS trigger AS $BODY$ BEGIN NEW.nb_elec := (select sum(a.electeurs) from public.electeur a where st_intersects(new.geom, a.geom)); RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; CREATE TRIGGER t_nbelec BEFORE INSERT OR UPDATE ON public.zonages FOR EACH ROW EXECUTE PROCEDURE public.nb_elec();
Hors ligne
#3 Mon 12 November 2018 15:45
- pgilbert
- Juste Inscrit !
- Lieu: Noisy-le-Grand
- Date d'inscription: 20 Feb 2012
- Messages: 5
Re: Postgis / trigger et fonction sommer un nombre de points sur une zone
merci pour votre réponse
Hors ligne
Pages: 1
- Sujet précédent - Postgis / trigger et fonction sommer un nombre de points sur une zone - Sujet suivant