Pages: 1
- Sujet précédent - QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale) - Sujet suivant
#1 Tue 13 December 2022 15:13
- image95
- Participant assidu
- Date d'inscription: 6 Sep 2014
- Messages: 249
QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale)
Bonjour,
Avec qgis 3.28, j'ai une couche ponctuelle d'ouvrages. Et j'ai une couche polygonale des departements. Mon souhait serait via le formulaire qgis (clic droit couche ponctuelle des ouvrages -> formulaire attributs) de remplir automatiquement le champ "departement" de cette table ponctuel des ouvrages. Le remplissage se ferait via intersection spatiale. Le champ de la table departements que j'aimerais récupéré se nomme "nom_dep".
Je joins une capture ecran de mes parametres.
Pour le parametre "couche", j'ai renseigné la couche des departements
Pour le paramètre "colonne clef", j'ai renseigné la clef primaire (gid) de la colonne des departements
POur le parametre colonne des valeurs , j'ai mis le fameux champ "nom_dep" de la table des departements
Je n'ai rien renseigné pour le paramètre "Description de la colonne".
Dans la section "Expression du filtre" j'ai renseigné :
Code:
aggregate( layer:='AdminExpressDept_AOI_Po_20210331', aggregate:='concatenate_unique', expression:=attribute('nom_dep'), concatenator:=',', filter:=intersects(geometry(@parent), $geometry))
Je n'ai pas de message d'erreur. Mais ca ne fonctionne pas. Je ne vois pas les valeurs de departements renseignées dans le champ de la table des ouvrages. ESt ce que j'ai fait une erreur ? Faut il utiliser une autre expression ?
Merci .
Hors ligne
#2 Tue 13 December 2022 15:37
- Joseph Jacquet
- Participant actif
- Date d'inscription: 19 Feb 2020
- Messages: 92
Re: QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale)
Bonjour,
Tu n'as pas besoin de passer par une valeur relationnelle. Tu peux laisser ton champ en 'Edition de texte' mais tu dois insérer une expression dans valeur par défaut :
array_to_string(overlay_intersects('nomdetacouche',"nomduchamp"))
Cela récupérera la valeur du champ de la couche intersectée pour l'insérer dans une liste avec la (ou les valeurs) pour chaque nouveau point créé. Il est très peu probable que ton point soit à cheval sur deux départements donc ce n'est pas un problème.
Tu peux aussi utiliser cette expression : aggregate('couche_jointe','concatenate_unique', "attribut_joint", filter:=intersects(geometry(@parent), $geometry)) et il en existe surement d'autres pour le même résultat.
JJ
Dernière modification par Joseph Jacquet (Tue 13 December 2022 15:39)
Hors ligne
#3 Tue 13 December 2022 16:04
- image95
- Participant assidu
- Date d'inscription: 6 Sep 2014
- Messages: 249
Re: QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale)
Merci. Je viens de faire des tests avec vos propositions. Mais j'ai le meme resultat. Pas de message d'erreur. Mais je n'arrive toujours pas à voir le champ se remplir automatiquement. Les valeurs restent vides.
Hors ligne
#4 Tue 13 December 2022 16:16
- Joseph Jacquet
- Participant actif
- Date d'inscription: 19 Feb 2020
- Messages: 92
Re: QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale)
Par hasard, les champs sont de type identique ? Le champ censé se remplir automatiquement est de type texte ?
Tu as bien respecté les guillemets simples et doubles ?
Tu as bien coché "Appliquer la valeur par défaut sur la mise à jour" ?
Je n'avais pas vu que ton expression se basait sur la même chose que la deuxième expression sur ma réponse..
Dernière modification par Joseph Jacquet (Tue 13 December 2022 16:24)
Hors ligne
#5 Tue 13 December 2022 16:38
- image95
- Participant assidu
- Date d'inscription: 6 Sep 2014
- Messages: 249
Re: QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale)
Oui, les champs sont bien de type varchar. Oui j'ai bien "appliqué la valeur par defaut sur la mise à jour". Le plus étonnant c'est que l'aperçu semble bon. Le nom de la commune s'affiche dans l'aperçu. Mais pas dans la table attributaire. Les valeurs de la table attributaire sont censées s'actualiser uniquement lors de mise à jour des objets ? Faut il actualiser/recharger le fichier ?
Dernière modification par image95 (Tue 13 December 2022 16:39)
Hors ligne
#6 Tue 13 December 2022 16:57
- Joseph Jacquet
- Participant actif
- Date d'inscription: 19 Feb 2020
- Messages: 92
Re: QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale)
Si tu as déjà des points, tu devras utiliser la calculette de champs en copiant collant l'expression qui est dans ton formulaire et bien mettre à jour le champ voulu.
Pour le formulaire, cela ne fonctionnera que pour les nouvelles entités créées
Hors ligne
#7 Tue 13 December 2022 17:05
- image95
- Participant assidu
- Date d'inscription: 6 Sep 2014
- Messages: 249
Re: QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale)
Ah ok, c'est probablement la raison. Sans vouloir multiplier les questions, je travaille en fait avec des tables postgresql/postgis. Si je dis pas de betises, les paramétrages que vous proposez sont définis au niveau du projet qgis. A mon avis, j'aurais intéret à definir des trigger/declencheurs au niveau de la BDD postgis plutot que d'essayer de definir ce genre de parametres au niveau des tables via qgis.
Hors ligne
#8 Wed 14 December 2022 22:11
- Julien81
- Participant assidu
- Lieu: Giroussens
- Date d'inscription: 14 Jan 2019
- Messages: 177
Re: QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale)
Vos deux source de données ont bien des projections équivalentes et le même SCR??
Sinon il faut faire un transform d'une des geometrie au niveau de votre filtre intersects.
Hors ligne
Pages: 1
- Sujet précédent - QGIS 3.28: Formulaire valeur relationnelle (intersection spatiale) - Sujet suivant