protected override Coordinate ExtractOffsetAt(IGeometry linearGeom, Coordinate testPt, double offsetDistance) { LocationIndexedLine indexedLine = new LocationIndexedLine(linearGeom); LinearLocation index = indexedLine.IndexOf(testPt); return indexedLine.ExtractPoint(index, offsetDistance); }
protected override bool IndexOfAfterCheck(IGeometry linearGeom, Coordinate testPt) { LocationIndexedLine indexedLine = new LocationIndexedLine(linearGeom); // check locations are consecutive LinearLocation loc1 = indexedLine.IndexOf(testPt); LinearLocation loc2 = indexedLine.IndexOfAfter(testPt, loc1); if (loc2.CompareTo(loc1) <= 0) return false; // check extracted points are the same as the input Coordinate pt1 = indexedLine.ExtractPoint(loc1); Coordinate pt2 = indexedLine.ExtractPoint(loc2); if (!pt1.Equals2D(testPt)) return false; if (!pt2.Equals2D(testPt)) return false; return true; }