2020-05-09

PolyLine-Reparatur und -Test

Die Hauptprobleme von PolyLine liegen darin, dass möglicherweise doppelte Punkte beim Erstellen der PolyLine hinzugefügt werden, was zu einer Reihe von geometrischen Berechnungsproblemen im Zusammenhang mit Segmenten führt:

  1. Vektorberechnung: Zwei doppelte Punkte ergeben einen Nullvektor.
  2. Längenberechnung: Die Länge eines Segments ist 0, was leicht zu NaN-Problemen führt.

Daher wird beim Konstruieren der PolyLine eine Überprüfung der Punkte in der PolyLine durchgeführt. Falls doppelte Punkte gefunden werden, wird eine Ausnahme ausgelöst.

Es wurden folgende Probleme festgestellt:

  • getEnd in Jts funktioniert nicht korrekt.

  • LinearLocation in Jts hat ein Problem mit der Normalisierung.

    val loc1 = new LinearLocation(0, 1, 1.0)
    val loc2 = new LinearLocation(0, 2, 0.0)
    
    loc1 compareTo loc2
    // Das Ergebnis ist -1
    
  • Beim Interpolieren kann es vorkommen, dass zwei zu nahe Punkte ausgewählt werden.