Message posté par : ccam86
----------------------------------------
Bonjour,
Bonne année à tous ! Et oui, il n'est pas trop tard.
Voici le souci rencontré :
Je rencontre un problème pour obtenir le nom de la commune en fonction de
l'intersection d'un polygone de la couche T_plandeau avec la couche T_commune.
J'ai essayé plusieurs formules dans QGIS pour récupérer ce nom en fonction de la
surface d'intersection, mais je n'arrive pas à obtenir le résultat escompté. Voici
les formules que j'ai utilisées :
La première formule :
-----------------
Code :
array_to_string(
array_sort(
overlay_intersects(
'T_commune_5898a6b5_b79c_43b6_8990_3eb7b8f856b6',
concat("CM_NOM", ': ', area(intersection(@geometry,
$geometry)))
),
area(intersection(@geometry, $geometry))
),
', '
)
-----------------
Cette formule permet de concaténer le nom de la commune et la surface de
l'intersection, mais je ne parviens pas à filtrer correctement les résultats.
La deuxième formule :
-----------------
Code :
array_first(
array_sort(
overlay_intersects(
'T_commune_5898a6b5_b79c_43b6_8990_3eb7b8f856b6',
concat("CM_NOM", ': ', area(intersection(@geometry,
$geometry)))
),
area(intersection(@geometry, $geometry))
)
)
-----------------
Cette version devrait retourner le premier élément après le tri par surface
d'intersection, mais elle ne semble pas donner le bon résultat.
La troisième formule :
-----------------
Code :
left(
array_first(
array_sort(
overlay_intersects(
'T_commune_5898a6b5_b79c_43b6_8990_3eb7b8f856b6',
concat("CM_NOM", ': ', area(intersection(@geometry,
$geometry)))
),
area(intersection(@geometry, $geometry))
)
),
strpos(
array_first(
array_sort(
overlay_intersects(
'T_commune_5898a6b5_b79c_43b6_8990_3eb7b8f856b6',
concat("CM_NOM", ': ', area(intersection(@geometry,
$geometry)))
),
area(intersection(@geometry, $geometry))
)
),
':'
) - 1
)
-----------------
Cette formule est censée extraire le nom de la commune avant le séparateur : dans le
résultat de l'intersection, mais elle ne fonctionne pas comme prévu. En réalité, elle
extrait la surface des communes intersectées et non la surface de la zone concernée au
sein de chaque commune. À titre d'exemple, voici les surfaces des communes :
22 080 235 m² pour Ségrie
11 219 299 m² pour Saint-Christophe-du-Jambet
Sur la capture d'écran, vous pouvez remarquer que 'Saint-Christophe-du-Jambet'
apparaît en première position et que 'Ségrie' figure systématiquement en deuxième
position.
J'ai pris une capture d'écran du résultat de la formule, mais les résultats ne
correspondent pas à ce que j'attendais. Est-ce que quelqu'un aurait une idée pour
corriger ou améliorer ces formules afin d'obtenir le nom de la commune correspondant
correctement à l'intersection de la surface ?
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=371242#p371242
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net