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é ?

#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 .


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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 smile

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

 

Pied de page des forums

Powered by FluxBB