Pages: 1
- Sujet précédent - QGIS 3.10: Remplissage automatique d'un champ lors de la creation - Sujet suivant
#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: 1085
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
Pages: 1
- Sujet précédent - QGIS 3.10: Remplissage automatique d'un champ lors de la creation - Sujet suivant