Pages: 1
- Sujet précédent - [Spatialite] Trigger creation centroide à partir de polygone - Sujet suivant
#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
Salut,
ce lien devrait t'aider :
http://stackoverflow.com/questions/9356 … -in-sqlite
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
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
#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
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
#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
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
Pages: 1
- Sujet précédent - [Spatialite] Trigger creation centroide à partir de polygone - Sujet suivant