#1 Sun 10 February 2013 21:42
- Ludo04
- Juste Inscrit !
- Date d'inscription: 10 Feb 2013
- Messages: 4
QGIS: Remplissage automatique de champs
Bonjour,
Cela fait quelques heures que je cherche une réponse sans succès.
Dans QGis, lorsque je créé un objet sur une couche vecteur, je souhaite qu'un des champs soit rempli automatiquement en fonction de l'attribut de l'objet correspondant sur une autre couche. Plus simplement, j'ai une couche polygones avec les communes et je souhaite que le nom de la commune soit automatiquement saisi dans le champ commune d'une autre couche de points. J'ai cherché du côté de l'onglet Joins ou Jointure mais ça ne donne pas ça (a moins que je ne l'utilise mal...).
Merci de votre aide.
Hors ligne
#2 Sat 16 February 2013 11:27
- Squid
- Participant actif
- Date d'inscription: 2 Apr 2010
- Messages: 109
Re: QGIS: Remplissage automatique de champs
Hors ligne
#3 Fri 01 March 2013 15:17
- Ludo04
- Juste Inscrit !
- Date d'inscription: 10 Feb 2013
- Messages: 4
Re: QGIS: Remplissage automatique de champs
Merci Mihaël,
Cependant cela ne correspond pas à mon besoin me semble t'il.
Peut être me suis-je mal exprimé, je souhaite que lorsque je créer un point sur une zone recouverte par un polygone (commune), le champ "commune" de la couche de points s'incrémente automatiquement avec le champ "nom_commune" de la couche "commune".
J'ai testé la Jointure mais cela ne me donne pas la même chose, si je lie mes deux couches par le champ "commune", tous les autres attributs sont associés à la première couche. Je pense que c'est utilisable à posteriori mais pas lors de la création de la couche.
Donc, deux solutions: soit je suis un boulet (fort possible! ;-)), soit ça ne correspond pas à ce que je veux faire.
Merci
Hors ligne
#4 Fri 01 March 2013 16:11
Re: QGIS: Remplissage automatique de champs
Bonjour,
ce que vous cherchez correspond à ce qu'on peut faire avec une base de données en créant un trigger.
Par exemple, j'ai une table d'observation ponctuelles d'espèces, je veux que le champ "commune" de cette table soit renseigné automatiquement par interrogation de ma table commune, lors de la création de mon observation.
A ma connaissance, sauf à programmer la chose, on ne peut pas faire cela avec un SIG "fichier".
Par contre, si vous stockez vos données dans une base PostGIS ou SpatiaLite c'est possible.
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#5 Fri 01 March 2013 18:06
- Ludo04
- Juste Inscrit !
- Date d'inscription: 10 Feb 2013
- Messages: 4
Re: QGIS: Remplissage automatique de champs
Merci Mathieu,
C'est tout à fait ce que je souhaite faire. Malheureusement, je n'utilise pour le moment que des couches shp dans qgis, je ne me suis pas encore penché sur postgis, je ne sais même pas à quoi ça sert pour tout vous dire et encore moins comment ça fonctionne. Mais je vais m'y intéresser.
Bonne continuation.
Merci encore.
Hors ligne
#6 Thu 27 February 2020 09:49
- bro24
- Juste Inscrit !
- Date d'inscription: 9 Nov 2018
- Messages: 6
Re: QGIS: Remplissage automatique de champs
Bonjour,
J'aurai le même besoin que ludo04. Auriez vous des pistes pour se former à la création de BdD PostGIS ou Spatialite ?
Merci d'avance,
Alexandre
Hors ligne
#7 Thu 27 February 2020 10:25
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1088
Re: QGIS: Remplissage automatique de champs
A tester :
[% aggregate( 'commune','concatenate',"nom_commune",contains( $geometry, @map_extent_center),', ')%]
Hors ligne
#8 Sat 29 February 2020 22:56
- Julien81
- Participant assidu
- Lieu: Giroussens
- Date d'inscription: 14 Jan 2019
- Messages: 181
Re: QGIS: Remplissage automatique de champs
Si vous adaptez la formule de GlaDal et que vous l'utilisez en valeur par défaut pour le champ de votre couche à éditer via l'édition du formulaire, vous devriez arriver à vos fins .
Je fais ainsi sur QGIS 3.4 pour recupérer les codes insee depuis mes communes, sur les couches métiers en édition/création, ainsi avec la jointure qui me lie les autres infos de façon dynamique, en créant des nouvelles entités ou en mettant à jour les géom/attributs il ré-extrait le bon code.
Chez moi : [% aggregate( 'COMMUNE','concatenate',"INSEE_COM",max(intersection($geometry, geometry(@parent))))%]
coté couche mon champ code_insee est visible mais non éditable, avec cette formule en valeur par défaut (en cochant appliquer lors de l'édition)
Hors ligne
#9 Mon 23 March 2020 13:49
- Auxane52
- Juste Inscrit !
- Date d'inscription: 23 Mar 2020
- Messages: 1
Re: QGIS: Remplissage automatique de champs
Bonjour Julien81,
ce que vous décrivez dans votre dernier message correspond exactement à ce que je souhaiterai faire mais malheureusement ça ne fonctionne pas de mon côté. Voici ce que je renseigne dans le champ valeur par défaut (calculateur d'expression):
aggregate( 'TABLES_RESEAU_CHALEUR_COMMUNES_GEOM_4ec19f38_e8ee_4517_9f52_331bfc55e1cd','concatenate',"INSEE_COM",max(intersection($geometry, geometry(@parent))))
Avec :
TABLES_RESEAU_CHALEUR_COMMUNES_GEOM_4ec19f38_e8ee_4517_9f52_331bfc55e1cd = couche DES COMMUNES (dans un Geopackage)
INSEE_COM = Champ contenant les codes INSEE
Côté table des commune le champ INSEE_COM est en QString (200) et côté tables à mettre à jour, le champ INSEE est en QString (5) est-ce-que cela peut contribuer au dysfonctionnement ?
Dans votre post il y a en début et fin d'expression [% & %] or si je les laisse, QGIS me retourne une expression invalide.
Merci !
Hors ligne
#10 Mon 23 March 2020 20:00
- Julien81
- Participant assidu
- Lieu: Giroussens
- Date d'inscription: 14 Jan 2019
- Messages: 181
Re: QGIS: Remplissage automatique de champs
Bonjour,
en me relisant je note une erreur, d'une part oui il ne faut pas reporter les [%%], mais il manque un area(), parce que le max d'une géométrie il connait pas^^ apparemment
Donc avec : aggregate( 'COMMUNE','concatenate',"INSEE_COM",max(area(intersection($geometry, geometry(@parent)))))
que se soit en valeur par défaut lors de mise à jours attributaires ou création de géom dans la couche, ou bien en mise à jour du champ via la calculatrice d'expression.
De plus ce n'est valide qu'à partir QGIS 3.10 si je ne m'abuse!
Salutations
Hors ligne
#11 Mon 15 June 2020 11:09
- ljrox
- Participant occasionnel
- Date d'inscription: 21 Aug 2014
- Messages: 15
Re: QGIS: Remplissage automatique de champs
Bonjour,
en me relisant je note une erreur, d'une part oui il ne faut pas reporter les [%%], mais il manque un area(), parce que le max d'une géométrie il connait pas^^ apparemment
Donc avec : aggregate( 'COMMUNE','concatenate',"INSEE_COM",max(area(intersection($geometry, geometry(@parent)))))
que se soit en valeur par défaut lors de mise à jours attributaires ou création de géom dans la couche, ou bien en mise à jour du champ via la calculatrice d'expression.
De plus ce n'est valide qu'à partir QGIS 3.10 si je ne m'abuse!
Salutations
Bonjour,
Pour ma part, j'ai une couche "pei" de type points et une couche "commune" de type polygones contenant des informations comme le nom, le code postal, le code insee, etc. Mon souhait était qu'en ajoutant un point "pei" sur une commune précise, le point récupère dans un champs dédié le code insee de cette commune.
J'ai donc testé la formule de Julien81
Code:
aggregate( 'commune','concatenate',"insee_com",max(area(intersection($geometry, geometry(@parent)))))
Malheureusement cela n'a pas fonctionné.
J'ai réussi à la faire fonctionner en la modifiant comme cela :
Code:
aggregate('commune' ,'concatenate', "code_insee", intersects( $geometry, geometry(@parent)))
En espérant que cela puisse aider. (Et merci à GlaDal et Julien81)
Bonne journée à tous.
Dernière modification par ljrox (Mon 15 June 2020 11:18)
Hors ligne
#12 Tue 22 June 2021 14:44
- Nico_E3D_Comergy
- Juste Inscrit !
- Date d'inscription: 12 Feb 2021
- Messages: 1
Re: QGIS: Remplissage automatique de champs
Bonjour à tous,
Débutant sous Qgis je me forme tout seul grâce notamment à ce forum et à vous donc merci car j'apprends beaucoup!
Il y a quelque chose que je n'arrive pas à faire (pour un remplissage de champ automatique)alors que je pense que ça ne me semble pas hyper compliqué mais je me perds encore dans "l'organisation des expressions".
J'ai un champ qui se rempli automatiquement selon un nommage (BT dans l'exemple joint) mais pas pour certains nommages (FA dans l'exemple joint).
Pour essayer d'être plus clair:
- si mon champ "Nom" = 'BT2963' => mon champ "Classe" se rempli automatiquement grâce à d'autres champs.
- si mon champ "Nom" = 'FA2487' => mon champ "Classe" ne se rempli automatiquement grâce à d'autres champs. Je pensais faire une expression si dans le champ nom les 2 premières lettres commencent par 'FA' alors le champ "Classe" = 'FA' (avec l'expression left par exemple) mais je n'y arrive pas ... est-ce que quelqu'un pourrait m'aider s'il vous plaît?
Cordialement, Nicolas
Hors ligne