Beispiel #1
0
        public void GetMissingLines_ZeroPoints_ShouldReturnEmptyList()
        {
            var gpxLine = new LineString(new Coordinate[0]);

            var results = _executor.GetMissingLines(gpxLine, new LineString[0], 200, 30);

            Assert.AreEqual(0, results.Count);
        }
Beispiel #2
0
        private List <LineString> SplitSelfLoopsAndRemoveDuplication(List <LineString> missingLines)
        {
            var missingLinesWithoutLoops = new List <LineString>();

            foreach (var missingLine in missingLines)
            {
                missingLinesWithoutLoops.AddRange(_gpxLoopsSplitterExecutor.SplitSelfLoops(missingLine, _options.MinimalDistanceToClosestPoint));
            }
            missingLinesWithoutLoops.Reverse(); // remove duplications set higher priority to lines that were recorded later
            var missingLinesWithoutLoopsAndDuplications = new List <LineString>();

            foreach (var missingLineWithoutLoops in missingLinesWithoutLoops)
            {
                var linesToAdd = _gpxLoopsSplitterExecutor.GetMissingLines(missingLineWithoutLoops,
                                                                           missingLinesWithoutLoopsAndDuplications.ToArray(),
                                                                           _options.MinimalMissingSelfLoopPartLegth,
                                                                           _options.MinimalDistanceToClosestPoint);
                linesToAdd.Reverse();
                missingLinesWithoutLoopsAndDuplications.AddRange(linesToAdd);
            }
            missingLinesWithoutLoopsAndDuplications.Reverse(); // reverse back to keep the original order of the lines
            return(missingLinesWithoutLoopsAndDuplications);
        }