Exemplo n.º 1
0
        /// <summary>
        /// Computes the <see cref="LineString" /> for the interval
        /// on the line between the given indices.
        /// If the <paramref name="endIndex" /> lies before the <paramref name="startIndex" />,
        /// the computed geometry is reversed.
        /// </summary>
        /// <param name="startIndex"></param>
        /// <param name="endIndex"></param>
        /// <returns></returns>
        public IGeometry ExtractLine(double startIndex, double endIndex)
        {
            LocationIndexedLine lil = new LocationIndexedLine(_linearGeom);
            double startIndex2      = ClampIndex(startIndex);
            double endIndex2        = ClampIndex(endIndex);
            // if extracted line is zero-length, resolve start lower as well to ensure they are equal
            bool           resolveStartLower = startIndex2 == endIndex2;
            LinearLocation startLoc          = LocationOf(startIndex2, resolveStartLower);
            //    LinearLocation endLoc = locationOf(endIndex2, true);
            //    LinearLocation startLoc = locationOf(startIndex2);
            LinearLocation endLoc = LocationOf(endIndex2);

            return(ExtractLineByLocation.Extract(_linearGeom, startLoc, endLoc));
        }
Exemplo n.º 2
0
 /// <summary>
 /// Computes the <see cref="ILineString" /> for the interval
 /// on the line between the given indices.
 /// If the start location is after the end location,
 /// the computed linear geometry has reverse orientation to the input line.
 /// </summary>
 /// <param name="startIndex">The index of the start of the interval.</param>
 /// <param name="endIndex">The index of the end of the interval.</param>
 /// <returns>The linear interval between the indices.</returns>
 public IGeometry ExtractLine(LinearLocation startIndex, LinearLocation endIndex)
 {
     return(ExtractLineByLocation.Extract(_linearGeom, startIndex, endIndex));
 }
Exemplo n.º 3
0
        /// <summary>
        /// Computes the subline of a <see cref="ILineString" /> between
        /// two <see cref="LinearLocation"/>s on the line.
        /// If the start location is after the end location,
        /// the computed linear geometry has reverse orientation to the input line.
        /// </summary>
        /// <param name="line">The line to use as the baseline.</param>
        /// <param name="start">The start location.</param>
        /// <param name="end">The end location.</param>
        /// <returns>The extracted subline.</returns>
        public static IGeometry Extract(IGeometry line, LinearLocation start, LinearLocation end)
        {
            var ls = new ExtractLineByLocation(line);

            return(ls.Extract(start, end));
        }