Beispiel #1
0
        private void Normalize(LinearRing ring, bool clockwise)
        {
            if (ring.IsEmpty)
            {
                return;
            }

            CoordinateCollection uniqueCoordinates = new CoordinateCollection();

            for (int i = 0; i < ring.NumPoints - 1; i++)
            {
                uniqueCoordinates.Add(ring.GetCoordinate(i));           // copy all but last one into uniquecoordinates
            }

            Coordinate minCoordinate = CoordinateCollection.MinimumCoordinate(ring.Coordinates);

            uniqueCoordinates.Scroll(minCoordinate);

            ICoordinateList ringCoordinates = ring.Coordinates;

            ringCoordinates.Clear();
            ringCoordinates.AddRange(uniqueCoordinates);
            ringCoordinates.Add(uniqueCoordinates[0].Clone());          // add back in the closing point.

            if (CGAlgorithms.IsCCW(ringCoordinates) == clockwise)
            {
                ringCoordinates.Reverse();
            }
        }
Beispiel #2
0
        /// <summary>
        /// Creates a <see cref="LineString"/> whose coordinates are in the
        /// reverse order of this objects.
        /// </summary>
        /// <returns>
        /// A <see cref="LineString"/> with coordinates in the reverse order.
        /// </returns>
        public virtual LineString ReverseAll()
        {
            ICoordinateList seq = points.Clone();

            seq.Reverse();

            LineString revLine = this.Factory.CreateLineString(seq);

            return(revLine);
        }