Pages: 1
- Sujet précédent - QGIS: Recuperer un champ par localisation (array_to_string) - Sujet suivant
#1 Mon 12 January 2026 12:08
QGIS: Recuperer un champ par localisation (array_to_string)
Bonjour,
J'ai trouvé 2 formules qui me suffisent souvent pour mettre à jour un champ d'une table de polygones à partir d'un champ d'une autre table :
1/ pour récupérer le champ d’une couche source dont les objets sont inclus une couche cible
Code:
array_to_string(overlay_within('macouchesource', "lechamp"))2/ pour lister tous les champs si plusieurs :
Code:
array_to_string(overlay_intersects('macouchesource', "lechamp"))Je cherche à affiner la deuxième formule en ne récupérant que la valeur du polygone de ma couche source qui occupe la plus grande surface de ma couche cible.
Merci à vous.
Géoscope
Hors ligne
#2 Mon 12 January 2026 13:14
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 4187
Re: QGIS: Recuperer un champ par localisation (array_to_string)
Bonjour,
overlay_intersects a un paramètre sort_by_intersection_sizequi permet de trier les résultats dans un ordre donné. Reste plus qu'à y récupérer le premier (ou dernier, selon le type de tri) index, soit (non testé):
Code:
overlay_intersects(layer:='macouchesource', expression:="lechamp", sort_by_intersection_size:='des')[0]
OU
Code:
array_first(overlay_intersects(layer:='macouchesource', expression:="lechamp", sort_by_intersection_size:='des'))
Hors ligne
#3 Mon 12 January 2026 14:52
Re: QGIS: Recuperer un champ par localisation (array_to_string)
Je savais que Santanna aurait la solution :-)
Top, top ! ça marche nickel
Pour les néophytes comme moi :
'des' = le tri est décroissant / 'asc' = le tri est croissant
[0] = récupère la première valeur si plusieurs ; [1] = récupère la deuxième valeur si plusieurs ...
Merci beaucoup
Dernière modification par Elise (Mon 12 January 2026 14:54)
Géoscope
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Recuperer un champ par localisation (array_to_string) - Sujet suivant

