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