Message posté par : Pasteque
----------------------------------------
Bonjour à tous,
Afin de faciliter la manipulation de la calculatrice de champ par les utilisateurs de mon
organisation, j'aimerais créer une fonction personnalisée grâce à l'éditeur de
fonction. J'ai bien essayé d'en créer une mais d'une part, le calcul était
trop long et d'autre part le résultat était faux (reflet de mes faibles compétences en
python!).
Le besoin est le suivant : éditer une formule permettant de calculer la longueur totale
d'une ligne intersectant un ou plusieurs polygone de même valeur et pondérer les
résultats.
Je m'explique. Dans l'image jointe, la ligne traverse différents enjeux, du faible
au maximal. Selon l'enjeu traversé, la ligne n'a pas le même impact et son poids
ne sera pas le même. On applique un coefficient multiplicateur à la longueur de la portion
de ligne (en km) intersectant chaque enjeu : 1 = faible, 2=modéré, 3= fort, 4=très fort,
5= maximal, puis on fait la somme des portions lignes pondérées.
On obtient ainsi, pour l'exemple joint, la somme : 1*(3.19+4.38) + 2*0 + 3*4.8 + 4*0 +
5*9.22
J'ai réussi à traduire ce besoin avec les fonction de base de la calculatrice de champ
par la formule (exemple pour l'enjeu maximal, répété pour tous les enjeux ).
-----------------
Code :
length(intersection($geometry,aggregate('polygone','collect',$geometry,"Clase"='Maxima')))/1000
-----------------
La formule s'exécute rapidement mais n'est pas simple à manipuler pour les non
initiés.
L'idée serait donc d'avoir une fonction personnalisée, intégrée dans la
calculatrice de champs, correspondant à cette formule et qui pourrait se présenter de
telle sorte :
pond_ligne('Nom de la couche de polygones')
L'un de vous serait-il en mesure de m'aider sur ce sujet ?
Je précise que le géotraitement "Intersecter" répond lui aussi en partie au
besoin mais est peu envisageable au vu du résultat généré qui demanderait trop de
manipulations.
Merci d'avance pour votre retour,
Bonne journée !
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=357828#p357828
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