import { LoadEntityFromFileData } from "../Utils/LoadEntity.util"; import { Polyline } from "../../src/DatabaseServices/Entity/Polyline"; import { equaln } from "../../src/Geometry/GeUtils"; import { Line } from "../../src/DatabaseServices/Entity/Line"; test('多段线与多段线Join', () => { let data = [2, "Polyline", 2, 1, 102, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 2, 4, [69.1964285714286, -106.02678571428574], 0, [-60.26785714285711, 58.03571428571427], 0.4847381535042383, [-241.07142857142856, 58.03571428571427], -1.124793513518748, [-340.9598214285714, 157.9241071428571], 0, false, "Polyline", 2, 1, 103, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 2, 4, [69.1964285714286, -106.02678571428574], 0, [181.36160714285717, 6.138392857142875], -0.7890083669838478, [389.50892857142867, -121.65178571428574], 1.286428411698261, [556.9196428571429, -132.81250000000003], 0, false] let pls = LoadEntityFromFileData(data) as Polyline[]; let pl1 = pls[0].Clone(); let pl2 = pls[1].Clone(); let length = pl1.Length + pl2.Length; //sp sp expect(pl1.Join(pl2)).toBe(1); expect(equaln(pl1.Length, length)).toBeTruthy(); pl1 = pls[0].Clone(); pl2 = pls[1].Clone(); pl2.Reverse(); //sp ep expect(pl1.Join(pl2)).toBe(1); expect(equaln(pl1.Length, length)).toBeTruthy(); pl1 = pls[0].Clone(); pl2 = pls[1].Clone(); pl1.Reverse(); //ep sp expect(pl1.Join(pl2)).toBe(1); expect(equaln(pl1.Length, length)).toBeTruthy(); pl1 = pls[0].Clone(); pl2 = pls[1].Clone(); pl1.Reverse(); pl2.Reverse(); //ep ep expect(pl1.Join(pl2)).toBe(1); expect(equaln(pl1.Length, length)).toBeTruthy(); }); test('一定精度容差内的直线Join', () => { let data = [2, "Line", 2, 1, 168, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -97.39422719143477, 40.30682517259278, 0, 1], 1, 1, [140.3943227792479, -100, 0], [314.3387826639938, -99.99999883531063, 0], "Line", 2, 1, 169, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -97.39422719143477, 40.30682517259278, 0, 1], 1, 1, [314.3387826639938, -99.99999883531063, 0], [318, -100, 0]] let lines = LoadEntityFromFileData(data) as Line[]; expect(lines[0].Join(lines[1])).toBe(1); });