Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 21 May 2014 15:00

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

[Spatialite] Trigger creation centroide à partir de polygone

Bonjour,
Je souhaiterai créer un trigger qui met à jour une couche point(centroide) depuis une couche polygone.

Je pensais à ce sql :

CREATE TRIGGER Centroides_AUTO
AFTER INSERT ON POLY
BEGIN UPDATE POINT SET Geometry = (select st_centroid(POLY.geometry) from POLY));
END


Mais ça ne marche pas alors qu'un simple Select fonctionne ?

select st_centroid(POLY.geometry) from POLY


Je ne comprend pas bien...
D'avance merci de votre aide
Dd

Dernière modification par mich (Wed 21 May 2014 15:08)

Hors ligne

 

#2 Thu 19 June 2014 14:46

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

Re: [Spatialite] Trigger creation centroide à partir de polygone

re
Bonjour,
malgré mes recherches je n'ai pas trouvé de piste..
une idée???
D'avance merci
Dd

Dernière modification par mich (Thu 19 June 2014 14:46)

Hors ligne

 

#3 Thu 19 June 2014 15:11

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1159

Re: [Spatialite] Trigger creation centroide à partir de polygone

Hors ligne

 

#4 Thu 19 June 2014 16:06

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

Re: [Spatialite] Trigger creation centroide à partir de polygone

merci je vais regarder ça

Hors ligne

 

#5 Mon 23 June 2014 15:29

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

Re: [Spatialite] Trigger creation centroide à partir de polygone

Bonjour,
Re, d'autres pistes...
Je n'arrive pas à obtenir mes centroides en fonction de ma table POLY ???

Dernière modification par mich (Mon 23 June 2014 15:29)

Hors ligne

 

#6 Tue 24 June 2014 11:38

Dof
Participant assidu
Lieu: Grenoble
Date d'inscription: 28 Oct 2009
Messages: 317
Site web

Re: [Spatialite] Trigger creation centroide à partir de polygone

Bonjour, essaye cela:

CREATE TRIGGER Centroides_AUTO
AFTER INSERT ON POLY
BEGIN UPDATE POINT SET Geometry = st_centroid(new.geometry) WHERE id=new.id;
END;

Hors ligne

 

#7 Tue 24 June 2014 14:50

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3945

Re: [Spatialite] Trigger creation centroide à partir de polygone

Bonjour,

Mich, quand tu dis mettre à jour ta table des points lors de l'insertion de polygones, en réalité, tu ne mets pas à jour dans le sens UPDATE mais plutôt tu veux insérer un nouveau point dans la table point qui sera au centroïde de POLYGONE, non? Si oui, n'est-ce donc pas plutôt une commande INSERT qu'il te faudrait sur la table POINT?

Hors ligne

 

#8 Tue 24 June 2014 16:06

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

Re: [Spatialite] Trigger creation centroide à partir de polygone

Santana, Merci c'est exactement ça.
Je vais chercher de ce côté, c'est vrai que ça parait plus logique...

Dernière modification par mich (Tue 24 June 2014 16:54)

Hors ligne

 

#9 Tue 24 June 2014 16:36

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: [Spatialite] Trigger creation centroide à partir de polygone

Je suis sûrement HS mais pourquoi ne pas utiliser un vue plutôt qu un trigger ?

Hors ligne

 

#10 Wed 25 June 2014 11:22

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

Re: [Spatialite] Trigger creation centroide à partir de polygone

Non pas HS, mais trigger ou vue ça ne fonctionne pas ?

Hors ligne

 

#11 Thu 26 June 2014 10:37

Stych
Participant occasionnel
Date d'inscription: 24 Mar 2014
Messages: 15

Re: [Spatialite] Trigger creation centroide à partir de polygone

Salut,

Peut être quelque chose du style :

Code:

CREATE OR REPLACE FUNCTION centroid()
  RETURNS trigger AS
$BODY$       
    BEGIN
       IF (TG_OP = 'INSERT') THEN
    execute 'insert into point select st_centroid('||new.geometry||') from POLY;';
        RETURN NEW;
    END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION centroid()
  OWNER TO postgres;


CREATE TRIGGER centroid
  AFTER INSERT OR UPDATE OR DELETE
  ON POLY
  FOR EACH ROW
  EXECUTE PROCEDURE centroid();

Je ne l'ai as essayé.

Hors ligne

 

#12 Thu 26 June 2014 11:44

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1233
Site web

Re: [Spatialite] Trigger creation centroide à partir de polygone

Quelque chose du style mais pour spatialite ;-)


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#13 Thu 26 June 2014 13:02

Stych
Participant occasionnel
Date d'inscription: 24 Mar 2014
Messages: 15

Re: [Spatialite] Trigger creation centroide à partir de polygone

Effectivement, je n'avais pas vus l'intitulé du post -__-

Hors ligne

 

#14 Thu 26 June 2014 13:51

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1233
Site web

Re: [Spatialite] Trigger creation centroide à partir de polygone

Et voici. J'ai trouvé ceci http://northredoubt.com/n/2012/10/19/sp … date-data/

Et ce code fonctionne (une table point et une poly, toutes les deux 2 colonnes : pkuid et geometry) :

Code:

CREATE TRIGGER crea_centroid AFTER INSERT ON poly
BEGIN
INSERT INTO point(pkuid, geometry)
SELECT pkuid, st_centroid(geometry)
FROM poly WHERE pkuid = NEW.pkuid;
END

Et pour la mise à jour :

Code:

CREATE TRIGGER update_centroid AFTER UPDATE ON poly
BEGIN
UPDATE point SET geometry = st_centroid(NEW.geometry)
WHERE pkuid = old.pkuid;
END

Dernière modification par MathieuB (Thu 07 August 2014 13:13)


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#15 Thu 26 June 2014 15:24

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

Re: [Spatialite] Trigger creation centroide à partir de polygone

Merci à tous pour votre aide.
Trop fort Mathieu, c'est exactement ce qu'il me fallait... Tip Top
@ bientôt
Dd

Hors ligne

 

#16 Thu 26 June 2014 15:37

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1233
Site web

Re: [Spatialite] Trigger creation centroide à partir de polygone

Bon il te reste à gérer le DELETE.


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#17 Fri 27 June 2014 11:22

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: [Spatialite] Trigger creation centroide à partir de polygone

mich a écrit:

Non pas HS, mais trigger ou vue ça ne fonctionne pas ?


L utilisation d une vue devrait normalement être réalisable facilement sous spatialite :

CREATE VIEW Centro AS
SELECT pk_uid, ST_CENTROID(geometry) as geometry FROM Poly ;

Si tu utilises spatialite gui tu n as rien d autre à faire.

En revanche si tu ne l utilises pas, il faut que tu enregistres ta vue dans la table views_geometry_columns pour rendre ta vue spatiale. Il y a de la doc sur le site de spatialite.

A défaut la table ne pourra pas être chargée dans qgis par ex.

Hors ligne

 

#18 Tue 01 July 2014 13:28

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

Re: [Spatialite] Trigger creation centroide à partir de polygone

Effectivement,
merci pour cette autre solution.

Dernière modification par mich (Tue 01 July 2014 16:51)

Hors ligne

 

Pied de page des forums

Powered by FluxBB