예제 #1
0
        /// <summary>
        /// Computes the <see cref="LinearLocation"/> for a given length along
        /// a linear <see cref="Geometry"/>.
        /// </summary>
        /// <param name="line">The linear geometry to use.</param>
        /// <param name="length">The length index of the location.</param>
        /// <returns>
        /// This returns the <see cref="LinearLocation"/> for the length.
        /// </returns>
        public static LinearLocation GetLocation(Geometry linearGeom,
                                                 double length)
        {
            LengthLocationMap locater = new LengthLocationMap(linearGeom);

            return(locater.GetLocation(length));
        }
예제 #2
0
        /// <summary>
        /// Computes the <see cref="Coordinate"/> for the point on the line
        /// at the given index.
        /// </summary>
        /// <param name="index">The index of the desired point.</param>
        /// <returns>The Coordinate at the given index.</returns>
        /// <remarks>
        /// If the index is out of range the first or last point on the
        /// line will be returned.
        /// </remarks>
        public virtual Coordinate ExtractPoint(double index)
        {
            LinearLocation loc = LengthLocationMap.GetLocation(
                linearGeom, index);

            return(loc.GetCoordinate(linearGeom));
        }
예제 #3
0
        /// <summary>
        /// Computes the indices for a subline of the line.
        /// </summary>
        /// <param name="subLine">A subLine of the line.</param>
        /// <returns>
        /// A pair of indices for the start and end of the subline.
        /// </returns>
        /// <remarks>
        /// (The subline must <b>conform</b> to the line; that is,
        /// all vertices in the subline (except possibly the first and last)
        /// must be vertices of the line and occcur in the same order).
        /// </remarks>
        public virtual double[] IndicesOf(Geometry subLine)
        {
            LinearLocation[] locIndex = LocationIndexOfLine.IndicesOf(
                linearGeom, subLine);

            double[] index = new double[] { LengthLocationMap.GetLength(
                                                linearGeom, locIndex[0]),
                                            LengthLocationMap.GetLength(linearGeom, locIndex[1]) };

            return(index);
        }
예제 #4
0
        /// <summary>
        /// Computes the length for a given <see cref="LinearLocation"/>
        /// on a linear <see cref="Geometry"/>.
        /// </summary>
        /// <param name="line">The linear geometry to use.</param>
        /// <param name="loc">
        /// The <see cref="LinearLocation"/> index of the location.
        /// </param>
        /// <returns>
        /// This returns the length for the <see cref="LinearLocation"/>.
        /// </returns>
        public static double GetLength(Geometry linearGeom, LinearLocation loc)
        {
            LengthLocationMap locater = new LengthLocationMap(linearGeom);

            return(locater.GetLength(loc));
        }
예제 #5
0
 private LinearLocation LocationOf(double index)
 {
     return(LengthLocationMap.GetLocation(linearGeom, index));
 }