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

Printemps des cartes 2024

#1 Tue 20 March 2012 17:40

ramon
Participant occasionnel
Lieu: Angouleme
Date d'inscription: 29 Jan 2008
Messages: 23

[POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger

Bonjour,

J'utilise QGIS pour remplir une table de ponctuel, et compléter les champs de ces ponctuels.
Ma table est sous Postgres/Postgis pas de soucis tout fonctionne correctement.

Mon problème survient dans le cadre de l'affichage des coordonnées de ce point dans l'affichage des champs.
Actuellement la géométrie de ce point est stockée dans un champ "the_geom" non visible lors de l'édition des données.
A la main avec PgAdmin, pas de soucis, je retrouve mes coordonnées "POINT ( X Y)".

Mon idée est de créer 2 champs : coord_x et coord_y se remplissant tout seul.

En effectuant un "SELECT ST_x(the_geom), ST_y(the_geom) from ma_table" dans PgAdmin, j'obtiens bien mes valeurs X et Y séparément.

Mon problème est que je ne sais pas comment faire une insertion automatique de ces 2 champs ?

Merci d'avance

Hors ligne

 

#2 Tue 20 March 2012 18:10

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger

ramon a écrit:

Bonjour,

J'utilise QGIS pour remplir une table de ponctuel, et compléter les champs de ces ponctuels.
Ma table est sous Postgres/Postgis pas de soucis tout fonctionne correctement.

Mon problème survient dans le cadre de l'affichage des coordonnées de ce point dans l'affichage des champs.
Actuellement la géométrie de ce point est stockée dans un champ "the_geom" non visible lors de l'édition des données.
A la main avec PgAdmin, pas de soucis, je retrouve mes coordonnées "POINT ( X Y)".

Mon idée est de créer 2 champs : coord_x et coord_y se remplissant tout seul.

En effectuant un "SELECT ST_x(the_geom), ST_y(the_geom) from ma_table" dans PgAdmin, j'obtiens bien mes valeurs X et Y séparément.

Mon problème est que je ne sais pas comment faire une insertion automatique de ces 2 champs ?

Merci d'avance


Un trigger permettrait de faire ca.
je ne comprends pas tres bien pourquoi vous voulez avec les champs X et Y en plus du point. Vous en avez vraiment besoin ?

Nicolas

Hors ligne

 

#3 Wed 21 March 2012 08:49

ramon
Participant occasionnel
Lieu: Angouleme
Date d'inscription: 29 Jan 2008
Messages: 23

Re: [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger

Merci de l’intérêt que vous portez à ma question.

J'ai vu sur le forum d'autres de vos réponses concernant un sujet similaire, remplissage d'un champ via une fonction mis en place par un trigger. Mais je n'ai pas réussi à le mettre en place.

Effectivement, j'ai besoin d'avoir les coordonnées visibles. Pour mettre la donnée dans son contexte. Il s'agit d'une cartographie des nids de frelons asiatiques.
Il me semble intéressant de faire apparaitre dans la fiche d'information du ponctuel, les coordonnées X et Y du nid, ce qui permet à l'utilisateur (non-géomaticien) de communiquer la position plus précisément aux personnes devant intervenir.

Hors ligne

 

#4 Sun 25 March 2012 10:44

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

Re: [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger

Bonjour Ramon,

Si je comprend bien votre question, vous voulez lors de la création d'un point dans QGis que les coordonnées x et y du point s'affiche dans le formulaire de renseignement de l'objet. C'est ça ?

Un trigger renseignera ces valeurs, mais apprès que la donnée ait été créée. Les case seront remplies quand vous afficherez les attributs du point "la fois suivante".

Je ne sais pas comment si QGis vous permettra de faire cela (pré-remplir tes attributs de coordonnées avant validation du formulaire).

Dernière modification par Mathieu BOSSAERT (Sun 25 March 2012 10:45)


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#5 Mon 26 March 2012 18:16

ramon
Participant occasionnel
Lieu: Angouleme
Date d'inscription: 29 Jan 2008
Messages: 23

Re: [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger

Bonjour Mathieu,

Vous avez bien compris ce que je souhaite faire, que l'affichage de la coordonnées X et Y ne s'affiche qu'apres validation ne me dérange pas. Au contraire. La finalité serait de pouvoir enregistrer/exporter par la suite le contenu de la table sur "Excel" pour donner la liste aux personnes devant intervenir sur ces points avec l'emplacement en coordonnées X Y.

Mon problème est la mise en place de ce trigger en utilisant le champ "the_geom". J'avais effectuer un test entre midi et deux heure, mais je n'ai pas garder le script de mon trigger, celui-ci ne fonctionnait pas. Dès que je 5 minutes je me repenche sur mon problème afin de vous définir plus précisément où ça cloche...

Merci

Hors ligne

 

#6 Mon 26 March 2012 19:07

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger

Bonjour,

Si ces informations ne sont utiles qu'à l'export, vous pourrez créer ces colonnes a ce moment-là.
En prenant l'exemple d'un export avec la commande Postgresql COPY:

Code:

COPY (select st_X(the_geom), set_Y(the_geom) from matble)
to '/tmp/ma_table.csv'
WITH (FORMAT CSV);

Sinon, le trigger pourrait etre:

Code:

-------- La fonction du trigger

create or replace function setXY() returns trigger as $$
    DECLARE
    
    BEGIN
        NEW.x_coord := st_X(NEW.the_geom);
        NEW.y_coord := st_Y(NEW.the_geom);
        RETURN NEW;
    END;
$$ LANGUAGE PLPGSQL;


--------- puis la creation du trigger
drop trigger if exists setXY_trigger on matable;

create trigger setXY_trigger 
    BEFORE UPDATE OR INSERT
    ON matable 
    FOR EACH ROW
    EXECUTE PROCEDURE setXY();

(en considerant que la table cible s'appelle "matable", et les colonnes stockant les X-Y "x_coord", "y_coord")

Nico

Dernière modification par Nicolas Ribot (Mon 26 March 2012 19:08)

Hors ligne

 

#7 Mon 26 March 2012 19:42

vincentp
Participant actif
Lieu: Paris
Date d'inscription: 18 Jul 2006
Messages: 127

Re: [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger

Nicolas Ribot a écrit:

Bonjour,

Si ces informations ne sont utiles qu'à l'export, vous pourrez créer ces colonnes a ce moment-là.
Nico


Ou bien simplement utiliser une vue :

Code:

CREATE OR REPLACE VIEW matablexy AS SELECT *, st_x(the_geom) as x, st_y(the_geom) as y FROM matable;

Vous pouvez alors être en mode d'écriture sur la table d'origine et de lecture sur la vue, y compris pour l'export.

Il y a aussi la possibilité de rendre cette vue éditable avec des «rules» afin de ne travailler que sur celle ci en lecture/écriture.

Hors ligne

 

#8 Fri 15 June 2012 14:18

ramon
Participant occasionnel
Lieu: Angouleme
Date d'inscription: 29 Jan 2008
Messages: 23

Re: [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger

Bonjour,

Je reviens sur ce post avec beaucoup de retard.J'ai pris le temps de faire ce que vous m'avez indiqué.

Le résultat produit et tout à fait ce que je cherchais à faire.

Merci pour ces scripts qui ont bien éclairci mes connaissances sur la mise en place de fonctions et de triggers.

Hors ligne

 

#9 Tue 08 October 2013 11:21

Francesc Chanel
Juste Inscrit !
Date d'inscription: 8 Oct 2013
Messages: 1

Re: [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger

ramon a écrit:

Merci de l’intérêt que vous portez à ma question.

J'ai vu sur le forum d'autres de vos réponses concernant un sujet similaire, remplissage d'un champ via une fonction mis en place par un trigger. Mais je n'ai pas réussi à le mettre en place.

Effectivement, j'ai besoin d'avoir les coordonnées visibles. Pour mettre la donnée dans son contexte. Il s'agit d'une cartographie des nids de frelons asiatiques.
Il me semble intéressant de faire apparaitre dans la fiche d'information du ponctuel, les coordonnées X et Y du nid, ce qui permet à l'utilisateur (non-géomaticien) de communiquer la position plus précisément aux personnes devant intervenir.


Bonjour,
je suis membre du Groupement de Défense Sanitaire Apicole, et j'aimerai en savoir plus sur votre cartographie des nids de frelons asiatiques. Est-ce que vous répertoriez uniquement les nids vues par des personnes "hasardeusement", ou aviez-vous une méthode de détection des nids ? Les ruchers souffrent de la pression apporter par le frelon asiatique et nous cherchons des solutions pour le combattre.

Par avance, merci,
Cordialement,

Francesc

Hors ligne

 

Pied de page des forums

Powered by FluxBB