Message posté par : mathieu rajerison
----------------------------------------
Du coup, voici la méthode utilisant l'interpolation, cad on place des noeuds sur la
ligne.
J'ai choisi d'utiliser un multiplicateur @mult avec lequel multiplier le nb de
noeuds de la ligne cible à comparer @feat
-----------------
Code :
num_points(@feat) * @mult
-----------------
Voici l'expression finale et le projet QGIS associé
-----------------
Code :
with_variable(
'mult',
10, -- multiplicateur pour les noeuds. Si ligne simple (2 noeuds), génèrera 20 noeuds
vers lesquels calculer la distance
with_variable(
'mean_distances',
aggregate(
'lignes2',
'array_agg',
with_variable(
-- on récupère la géométrie de la ligne cible à comparer
'feat',
geometry(@parent),
with_variable(
'distances',
array_foreach(
generate_series(0, length(@feat), length(@feat)/(num_points(@feat) * @mult)),
distance($geometry, line_interpolate_point(@feat, @element))),
-- moyenne des distances
array_avg(@distances)
)
)
),
-- on récupère l'index de la distance min
array_find(@mean_distances, array_first(array_sort(@mean_distances))) + 1
)
)
-----------------
----------------------------------------
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=334880#p334880
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