public void TestDouglasPeuckerN_Total5() { // Given // When List <GPoint> newPoints = PolylineSimplication.SimplifyByDouglasPeuckerN(points.ToArray(), 5); // Then Assert.AreEqual(5, newPoints.Count); }
/// <summary> /// maxCount以内になるように間引く /// </summary> /// <param name="points">input</param> /// <param name="maxPointsCount">expected max number of points</param> /// <returns></returns> private List <GPoint> Thinout(List <GPoint> points, int maxPointsCount, out double duration) { duration = 0.0; if (points.Count <= maxPointsCount) { return(points); } List <GPoint> simplified = null; duration = Util.Util.MeasureExecTime(() => { if (m_CurveManeuverParameter.ThinoutByDouglasPeuckerN) { simplified = PolylineSimplication.SimplifyByDouglasPeuckerN(points.ToArray(), maxPointsCount); } else { simplified = PolylineSimplication.SimplifyPointsN(points.ToArray(), maxPointsCount); } }); return(simplified); }
public void SimplifyPoints(string expectedPointsNum) { List <GPoint> XY = ExtractCoordinates(); int expectedPointsCount = Util.StringUtil.IsDigitsOnly(expectedPointsNum) ? int.Parse(expectedPointsNum) : 500; List <GPoint> simpfiledXY; if (m_Appsetting.CurveManeuverParameter.ThinoutByDouglasPeuckerN) { simpfiledXY = PolylineSimplication.SimplifyByDouglasPeuckerN(XY.ToArray(), expectedPointsCount); } else { simpfiledXY = PolylineSimplication.SimplifyPointsN(XY.ToArray(), maxPoints: expectedPointsCount); } var col1 = this.CurrentSelectionRange.Col; var col2 = this.CurrentSelectionRange.EndCol; string newCol1Name = "new" + CurrentWorksheet[0, col1]; string newCol2Name = "new" + CurrentWorksheet[0, col2]; InsertXY(simpfiledXY, newCol1Name, newCol2Name); }