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 12 January 2026 12:08

Elise
Participant assidu
Lieu: Argentat (19)
Date d'inscription: 16 Oct 2005
Messages: 606
Site web

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

Elise
Participant assidu
Lieu: Argentat (19)
Date d'inscription: 16 Oct 2005
Messages: 606
Site web

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

 

Pied de page des forums

Copyright Association GeoRezo