Pages: 1
- Sujet précédent - [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger - Sujet suivant
#1 mar. 20 mars 2012 17:40
- ramon
- Membre
- Lieu: Angouleme
- Date d'inscription: 29 janv. 2008
- Messages: 10
[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 mar. 20 mars 2012 18:10
- Nicolas Ribot
- Moderateur
- Lieu: Toulouse
- Date d'inscription: 9 sept. 2005
- Messages: 548
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 mer. 21 mars 2012 08:49
- ramon
- Membre
- Lieu: Angouleme
- Date d'inscription: 29 janv. 2008
- Messages: 10
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 dim. 25 mars 2012 10:44
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 (dim. 25 mars 2012 10:45)
Mathieu BOSSAERT
Montpellier
Hors ligne
#5 lun. 26 mars 2012 18:16
- ramon
- Membre
- Lieu: Angouleme
- Date d'inscription: 29 janv. 2008
- Messages: 10
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 lun. 26 mars 2012 19:07
- Nicolas Ribot
- Moderateur
- Lieu: Toulouse
- Date d'inscription: 9 sept. 2005
- Messages: 548
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 (lun. 26 mars 2012 19:08)
Hors ligne
#7 lun. 26 mars 2012 19:42
- vincentp
- Membre
- Lieu: Paris
- Date d'inscription: 18 juil. 2006
- Messages: 102
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 ven. 15 juin 2012 14:18
- ramon
- Membre
- Lieu: Angouleme
- Date d'inscription: 29 janv. 2008
- Messages: 10
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
Pages: 1
- Sujet précédent - [POSTGIS] Remplissage de Champ X et Y par fonction et/ou trigger - Sujet suivant

