2020-05-09

PolyLineの修正とテスト

PolyLineの問題は主に、PolyLine生成時に重複点が混入する可能性があり、その結果、幾何学的なセグメント計算に一連の問題が発生することです。

  1. ベクトル計算:2つの重複点からゼロベクトルが算出される
  2. 長さ計算:セグメント長が0となり、NaN問題が発生しやすい

そこで、PolyLine構築時にPolyLine内の点をチェックし、重複点が見つかれば例外をスローするようにしました。

以下の問題が確認されました。

  • JtsのgetEndで問題が発生

  • Jts LinearLocationに正規化の問題が存在する

    val loc1 = new LinearLocation(0, 1, 1.0)
    val loc2 = new LinearLocation(0, 2, 0.0)
    
    loc1 compareTo loc2
    // 出力は -1
    
  • Interpolate時に、互いに近すぎる2点を取得する可能性がある