r-lidar-lab / ALSroads

Road corrections and measurements from ALS data
19 stars 4 forks source link

Amélioration de la précision du tracé aux extrémités #46

Open jfbourdon opened 2 years ago

jfbourdon commented 2 years ago

Je remarque que souvent le tout premier et tout dernier traits d'un segment n'est pas tout a fait dans le bon angle avec la route. La situation survient particulièrement lorsque l'intersection se trouve dans une courbe. L'effet est somme toute mineur, surtout une fois la route snappée avec ses voisines, mais a quand même pour effet de ne pas mettre le noeud de l'intersection à l'endroit optimal.

Ci-dessous un exemple typique avec

image

On remarque que le nœud de l'intersection original (orange) est mieux placée que celui issu du snapping (violet), mais si ce n'est pas de beaucoup (différence de 3 m dans ce cas).

Je crois l'exactitude de la position des segments à leurs extrémités pourrait être améliorée en ne faisant pas l'analyse de least-cost path non pas entre le premier et dernier vertex strictement, mais plutôt entre un point un peu plus en amont et un autre un peu plus en aval. La distance du prolongement pourrait être par exemple 3 * alsroads_default_parameters$extraction$section_length Le segment final serait quand même découpé approximativement à la position du premier et du dernier sommet (si on ajoute 30 m en amont du segment original, on retire à la fin 30 m en amont du segment corrigé).

Dans quel axe effectuer ce prolongement? Je vois deux options:

  1. Utiliser le même axe que les deux premiers ou deux derniers sommets du segments analysé. Solution la plus simple.
  2. Identifier le segment voisin le plus susceptible d'être le prolongement du segment analysé et prolonger ce dernier le long du segment voisin. Solution plus complexe... mais dont le code est déjà tout écrit car ces principes sont déjà utilisés dans advanced_snap(). S'il y a aucun voisin crédible, simplement prolonger selon la méthode 1 mais d'une distance de 1 * alsroads_default_parameters$extraction$section_length ou carrément ne pas prolonger.

Comme je le mentionnais au début, c'est plutôt mineur comme problème. Je le décris ici pour me souvenir de ma réflexion si jamais je veux tenter quelque chose plus tard.