NRF Guide

Lire et agir

Voies et distances

Convertir une position sur une voie en mètres avec TrackMetric.

Fraction et sens

Position identifie une voie, une fraction entre 0 et 1 sur cette voie et un sens. Le mètre zéro est celui de la représentation de la voie, pas la tête du train. Pour la construction, le sens vaut -1 ou 1 et la fraction doit rester strictement entre les extrémités.

Exemple pour une voie longue d’au moins 200 m
import fr.nimby.sdk.TrackMetric

fun distanceSurVoie(metric: TrackMetric): Double {
    val depart = metric.fraction(100.0) // 100 m depuis l’origine de la voie
    val arrivee = metric.fraction(200.0)
    return metric.distanceM(depart, arrivee) // 100 m
}

Une longueur doit être observée

kotlin
fun longueur(snapshot: fr.nimby.sdk.Observation, trackId: Long): Double? =
    snapshot.trackMetrics?.firstOrNull { it.trackId == trackId }?.lengthM

trackMetrics peut être null si la DLL est ancienne ou le profil non pris en charge. Une ligne manquante reste inconnue. Une longueur ne prouve ni la continuité du trajet, ni l’absence d’aiguille, ni une autorisation de construire.