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 Mon 15 November 2021 12:55

Loomis64
Participant occasionnel
Date d'inscription: 17 Nov 2017
Messages: 13

QGIS 3.10: Remplissage automatique d'un champ lors de la creation

Bonjour,

J'ai fouillé un peu ici et là pour avoir réponse à ma question, et la seule piste qui se rapproche de ma recherche se trouve ici https://georezo.net/forum/viewtopic.php?id=88000 , sans grand succès après essais.

Voilà ma requête :

Je possède une couche Communes64, avec toutes mes communes dans un champ nom. Couche Polygone, délimitation des communes.

J'ai une autre couche Projet, avec mon champ commune vide dont j'aimerais qu'il se remplisse automatiquement lors de la création de mon polygone projet. Pour ce faire, je suppose que ma requête doit s'intéresser sur le fait que ce polygone est situé dans le polygone de ma couche Communes64.

J'ai bien cerné que je devais inscrire une expression dans les propriétés de ma couche Projet > Formulaire d'attributs > champ commune > Valeur par défaut (expression à inscrire ici et cocher "Appliquer la valeur par défaut lors de la mise à jour" pour que lorsque je créé mon polygone, mon champ se remplisse automatiquement du nom de la commune.)

Merci à vous par avance, si vous avez des pistes, je suis preneur !

Hors ligne

 

#2 Wed 17 November 2021 10:19

romainbh
Participant assidu
Date d'inscription: 20 Aug 2013
Messages: 355

Re: QGIS 3.10: Remplissage automatique d'un champ lors de la creation

Bonjour,

Il vous faut une fonction d'agrégat car fondamentalement un polygone de projet pourra se superposer à plusieurs communes (même si on veillera à ce que ce ne soit pas le cas, dans la pratique c'est tout à fait possible que ça arrive, d'où la fonction d'agrégat qui est obligatoire si plusieurs résultats sont possibles).

L'emplacement où saisir la formule que vous donnez est correct :

propriétés de ma couche Projet > Formulaire d'attributs > champ commune > Valeur par défaut (expression à inscrire ici et cocher "Appliquer la valeur par défaut lors de la mise à jour" pour que lorsque je créé mon polygone, mon champ se remplisse automatiquement du nom de la commune.)


À noter que la case "Appliquer...lors de la mise à jour" fait en sorte que la valeur soit actualisée si vous modifiez votre polygone ou ses attributs.

Code à tester :

Code:

array_to_string(overlay_intersects( 'Communes64',nom))

Explications :
- overlay_intersects : va récupérer l'attribut nom de la couche Communes64 dans le ou les polygones intersectés. Renvoie un résultat sous la forme d'une liste (array), p.ex. ['Ville1','Ville2','Ville3']
- array_to_string : convertit l'array en format texte plus aisément utilisable -> Ville1,Ville2,Ville3

Limitations : si un de vos polygones Projet se situe en limite de plusieurs polygones, tous seront pris en compte, ce qui est peu pratique. On peut feinter en appliquant un tampon négatif sur le polygone du projet pour qu'il ne se situe plus pile sur la limite. Pour cela, il faut utiliser une fonction d'agrégat un peu plus avancée :

Code:

aggregate('Communes64','concatenate',"nom",intersects(buffer($geometry,-0.1),geometry(@parent)),' - ')

Explications :
- aggregate : fonction d'agrégat de base, utilisée avec l'option intersects sur la couche Commune64 et le champ nom, qui va regrouper les résultats obtenus (concatenate)
- buffer : tampon de rayon -0.1 mètre pour éloigner juste ce qu'il faut le polygone de la limite. le -0.1 est à adapter en cas de géométries pas super bien numérisées et donc de superpositions non souhaitées

Bon courage !

Hors ligne

 

#3 Wed 17 November 2021 14:30

Loomis64
Participant occasionnel
Date d'inscription: 17 Nov 2017
Messages: 13

Re: QGIS 3.10: Remplissage automatique d'un champ lors de la creation

Bonjour romainbh,

Merci pour votre réponse !

Code à tester :

Code:
array_to_string(overlay_intersects( 'Communes64',nom))


Ce code ne fonctionne pas, même après une petite modification qui pour moi est un oubli de votre part :


Code:

array_to_string(overlay_intersects( 'Communes64',"nom"))

Concernant le dernier qui prend en compte le fait que mon polygone intersecte plusieurs polygones de ma couche Communes64, à savoir donc plusieurs communes, il me renvoie un résultat NULL. C'est à dire que lorsque je créé un polygone dans ma couche Projet, il ne me remplit pas automatiquement le nom de ma ville dans le champ commune.

Voilà une capture d'écran de la commande recopiée, et de l'emplacement où je l'ai placée :

https://zupimages.net/up/21/46/bmmc.jpeg

Dernière modification par Loomis64 (Wed 17 November 2021 14:37)

Hors ligne

 

#4 Wed 17 November 2021 14:54

romainbh
Participant assidu
Date d'inscription: 20 Aug 2013
Messages: 355

Re: QGIS 3.10: Remplissage automatique d'un champ lors de la creation

Bonjour,
Alors c'est peut-être dû à la version 3.10 qui ne supporte pas ces formules, chez moi tout fonctionne (sans la correction des guillemets qui n'est pas nécessaire chez moi ;-)
Voici un projet QGIS d'exemple, avec deux couches temporaires : dessinez 2-3 polygones de communes puis ensuite des polygones de projets, les champs devraient se mettre à jour : https://www.swisstransfer.com/d/3ba940a … 3afefc2e6d

Hors ligne

 

#5 Wed 17 November 2021 15:05

GlaDal
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 1043

Re: QGIS 3.10: Remplissage automatique d'un champ lors de la creation

Bonjour,

Les fonctions Overlay sont "apparues" dans la version 3.16 de Qgis (https://hfcqgis.opendatasicilia.it/release/novita_316/)

Hors ligne

 

#6 Wed 17 November 2021 16:48

Loomis64
Participant occasionnel
Date d'inscription: 17 Nov 2017
Messages: 13

Re: QGIS 3.10: Remplissage automatique d'un champ lors de la creation

@Romainbh : Merci beaucoup. J'ai essayé sur un autre poste avec QGIS 3.16. Avec votre projet, j'ai essayé ca fonctionne sans soucis. La même formule appliquée sur mon projet qgis ne fonctionne pas. Je ne comprends pas ..

@GlaDal : Merci pour les logs des mises à jours !

Hors ligne

 

#7 Fri 26 November 2021 15:04

Loomis64
Participant occasionnel
Date d'inscription: 17 Nov 2017
Messages: 13

Re: QGIS 3.10: Remplissage automatique d'un champ lors de la creation

Bonjour,

Petit retour, ca a bien fonctionné, le problème ne venait pas de ma version de QGIS mais du système de coordonnées de mes deux couches qui étaient différents.

Merci à vous

Ce récent sujet  en parle également : https://georezo.net/forum/viewtopic.php?id=125655

Hors ligne

 

Pied de page des forums

Powered by FluxBB