2020-05-09
PolyLineの修正とテスト
PolyLineの問題は主に、PolyLine生成時に重複点が混入する可能性があり、その結果、幾何学的なセグメント計算に一連の問題が発生することです。
- ベクトル計算: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 // 出力は -1Interpolate時に、互いに近すぎる2点を取得する可能性がある