/// <summary> /// Remove the segs in the section of the line. /// </summary> /// <param name="line"></param> /// <param name="start"></param> /// <param name="end"></param> private void Remove(TaggedLineString line, int start, int end) { for (int i = start; i < end; i++) { TaggedLineSegment seg = line.GetSegment(i); _inputIndex.Remove(seg); } }
/* * /// <summary> * /// * /// </summary> * public LineSegmentIndex() { } */ /// <summary> /// /// </summary> /// <param name="line"></param> public void Add(TaggedLineString line) { TaggedLineSegment[] segs = line.Segments; for (int i = 0; i < segs.Length; i++) { TaggedLineSegment seg = segs[i]; Add(seg); } }
/// <summary> /// /// </summary> private void Init() { Coordinate[] pts = _parentLine.Coordinates; _segs = new TaggedLineSegment[pts.Length - 1]; for (int i = 0; i < pts.Length - 1; i++) { TaggedLineSegment seg = new TaggedLineSegment(pts[i], pts[i + 1], _parentLine, i); _segs[i] = seg; } }
/// <summary> /// Tests whether a segment is in a section of a <see cref="TaggedLineString"/>. /// </summary> /// <param name="line"></param> /// <param name="sectionIndex"></param> /// <param name="seg"></param> /// <returns></returns> private static bool IsInLineSection(TaggedLineString line, int[] sectionIndex, TaggedLineSegment seg) { // not in this line if (seg.Parent != line.Parent) { return(false); } int segIndex = seg.Index; if (segIndex >= sectionIndex[0] && segIndex < sectionIndex[1]) { return(true); } return(false); }