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();
            }
        }