Skip to content

Extrémités de tronçons séparées par moins que la PATH_SNAPPING_DISTANCE #5004

@justinefricou

Description

@justinefricou

Nous avons identifié un cas où le réseau de tronçons contient des extrémités séparées par moins d'un mètre, qui est la valeur par défaut de PATH_SNAPPING_DISTANCE.

Ce cas a été détecté suite à une erreur durant le routage. En effet, couplé à la tolérance de pgRouting également fixée à PATH_SNAPPING_DISTANCE, cela a pour conséquence que le routage considère ces deux extrémités comme étant le même noeud sur le graphe :

cursor.execute(query, [settings.PATH_SNAPPING_DISTANCE])

Image

Sur l'image ci-dessus, on a les extrémités sud de P2 et P5 qui sont séparées d'environ 0,5m.
Il semblerait qu'il y avait originellement 3 anciens tronçons (A1, A2 et A3 ci-dessous) et qu'un nouveau (N) ait été rajouté par la suite :

Image

Il ne faudrait pas pouvoir arriver à une situation où des extrémités de tronçons sont plus proches que la PATH_SNAPPING_DISTANCE.
Quand au problème de routage, c'est un sujet à traiter à part.

Cependant, dans le cas exposé ci-dessus, à l'ajout du tronçon N, quel comportement voulons-nous adopter ?

  1. Fusionner des tronçons pour que P1, P3, P4, P6 et P7 se touchent tous en un seul et même point, et supprimer P2 et P5 -> cela va entraîner des approximations dans les géométries, et il y a beaucoup de cas différents à gérer.
  2. Lors de l'ajout de N, détecter que les tronçons A2 et A3 vont être divisés en tronçons ayant des extrémités à moins de PATH_SNAPPING_DISTANCE, et empêcher la création du tronçon. Cette solution nous semble la plus réaliste.

De plus, l'ajout de tronçons trop près les uns des autres est possible via le shell django (et probablement directement en base de données également).

Y a-t-il des cas d'usage pour lesquels cette interdiction poserait problème ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions