Class CoordinateArrays


  • public class CoordinateArrays
    extends java.lang.Object
    Useful utility functions for handling Coordinate arrays
    Version:
    1.7
    • Method Detail

      • dimension

        public static int dimension​(Coordinate[] pts)
        Determine dimension based on subclass of Coordinate.
        Parameters:
        pts - supplied coordinates
        Returns:
        number of ordinates recorded
      • measures

        public static int measures​(Coordinate[] pts)
        Determine number of measures based on subclass of Coordinate.
        Parameters:
        pts - supplied coordinates
        Returns:
        number of measures recorded
      • enforceConsistency

        public static void enforceConsistency​(Coordinate[] array)
        Utility method ensuring array contents are of consistent dimension and measures.

        Array is modified in place if required, coordinates are replaced in the array as required to ensure all coordinates have the same dimension and measures. The final dimension and measures used are the maximum found when checking the array.

        Parameters:
        array - Modified in place to coordinates of consistent dimension and measures.
      • enforceConsistency

        public static Coordinate[] enforceConsistency​(Coordinate[] array,
                                                      int dimension,
                                                      int measures)
        Utility method ensuring array contents are of the specified dimension and measures.

        Array is returned unmodified if consistent, or a copy of the array is made with each inconsistent coordinate duplicated into an instance of the correct dimension and measures.

        Parameters:
        array - coordinate array
        dimension -
        measures -
        Returns:
        array returned, or copy created if required to enforce consistency.
      • isRing

        public static boolean isRing​(Coordinate[] pts)
        Tests whether an array of Coordinates forms a ring, by checking length and closure. Self-intersection is not checked.
        Parameters:
        pts - an array of Coordinates
        Returns:
        true if the coordinate form a ring.
      • ptNotInList

        public static Coordinate ptNotInList​(Coordinate[] testPts,
                                             Coordinate[] pts)
        Finds a point in a list of points which is not contained in another list of points
        Parameters:
        testPts - the Coordinates to test
        pts - an array of Coordinates to test the input points against
        Returns:
        a Coordinate from testPts which is not in pts, ' or null
      • compare

        public static int compare​(Coordinate[] pts1,
                                  Coordinate[] pts2)
        Compares two Coordinate arrays in the forward direction of their coordinates, using lexicographic ordering.
        Parameters:
        pts1 -
        pts2 -
        Returns:
        an integer indicating the order
      • increasingDirection

        public static int increasingDirection​(Coordinate[] pts)
        Determines which orientation of the Coordinate array is (overall) increasing. In other words, determines which end of the array is "smaller" (using the standard ordering on Coordinate). Returns an integer indicating the increasing direction. If the sequence is a palindrome, it is defined to be oriented in a positive direction.
        Parameters:
        pts - the array of Coordinates to test
        Returns:
        1 if the array is smaller at the start or is a palindrome, -1 if smaller at the end
      • copyDeep

        public static Coordinate[] copyDeep​(Coordinate[] coordinates)
        Creates a deep copy of the argument Coordinate array.
        Parameters:
        coordinates - an array of Coordinates
        Returns:
        a deep copy of the input
      • copyDeep

        public static void copyDeep​(Coordinate[] src,
                                    int srcStart,
                                    Coordinate[] dest,
                                    int destStart,
                                    int length)
        Creates a deep copy of a given section of a source Coordinate array into a destination Coordinate array. The destination array must be an appropriate size to receive the copied coordinates.
        Parameters:
        src - an array of Coordinates
        srcStart - the index to start copying from
        dest - the
        destStart - the destination index to start copying to
        length - the number of items to copy
      • toCoordinateArray

        public static Coordinate[] toCoordinateArray​(java.util.Collection coordList)
        Converts the given Collection of Coordinates into a Coordinate array.
      • hasRepeatedPoints

        public static boolean hasRepeatedPoints​(Coordinate[] coord)
        Tests whether Coordinate.equals(Object) returns true for any two consecutive Coordinates in the given array.
        Parameters:
        coord - an array of coordinates
        Returns:
        true if the array has repeated points
      • atLeastNCoordinatesOrNothing

        public static Coordinate[] atLeastNCoordinatesOrNothing​(int n,
                                                                Coordinate[] c)
        Returns either the given coordinate array if its length is greater than the given amount, or an empty coordinate array.
      • removeRepeatedPoints

        public static Coordinate[] removeRepeatedPoints​(Coordinate[] coord)
        If the coordinate array argument has repeated points, constructs a new array containing no repeated points. Otherwise, returns the argument.
        Parameters:
        coord - an array of coordinates
        Returns:
        the array with repeated coordinates removed
        See Also:
        hasRepeatedPoints(Coordinate[])
      • hasRepeatedOrInvalidPoints

        public static boolean hasRepeatedOrInvalidPoints​(Coordinate[] coord)
        Tests whether an array has any repeated or invalid coordinates.
        Parameters:
        coord - an array of coordinates
        Returns:
        true if the array contains repeated or invalid coordinates
        See Also:
        Coordinate.isValid()
      • removeRepeatedOrInvalidPoints

        public static Coordinate[] removeRepeatedOrInvalidPoints​(Coordinate[] coord)
        If the coordinate array argument has repeated or invalid points, constructs a new array containing no repeated points. Otherwise, returns the argument.
        Parameters:
        coord - an array of coordinates
        Returns:
        the array with repeated and invalid coordinates removed
        See Also:
        hasRepeatedOrInvalidPoints(Coordinate[]), Coordinate.isValid()
      • removeNull

        public static Coordinate[] removeNull​(Coordinate[] coord)
        Collapses a coordinate array to remove all null elements.
        Parameters:
        coord - the coordinate array to collapse
        Returns:
        an array containing only non-null elements
      • reverse

        public static void reverse​(Coordinate[] coord)
        Reverses the coordinates in an array in-place.
      • equals

        public static boolean equals​(Coordinate[] coord1,
                                     Coordinate[] coord2)
        Returns true if the two arrays are identical, both null, or pointwise equal (as compared using Coordinate#equals)
        See Also:
        Coordinate.equals(Object)
      • equals

        public static boolean equals​(Coordinate[] coord1,
                                     Coordinate[] coord2,
                                     java.util.Comparator coordinateComparator)
        Returns true if the two arrays are identical, both null, or pointwise equal, using a user-defined Comparator for Coordinate s
        Parameters:
        coord1 - an array of Coordinates
        coord2 - an array of Coordinates
        coordinateComparator - a Comparator for Coordinates
      • minCoordinate

        public static Coordinate minCoordinate​(Coordinate[] coordinates)
        Returns the minimum coordinate, using the usual lexicographic comparison.
        Parameters:
        coordinates - the array to search
        Returns:
        the minimum coordinate in the array, found using compareTo
        See Also:
        Coordinate.compareTo(Coordinate)
      • scroll

        public static void scroll​(Coordinate[] coordinates,
                                  Coordinate firstCoordinate)
        Shifts the positions of the coordinates until firstCoordinate is first.
        Parameters:
        coordinates - the array to rearrange
        firstCoordinate - the coordinate to make first
      • scroll

        public static void scroll​(Coordinate[] coordinates,
                                  int indexOfFirstCoordinate)
        Shifts the positions of the coordinates until the coordinate at firstCoordinate is first.
        Parameters:
        coordinates - the array to rearrange
        indexOfFirstCoordinate - the index of the coordinate to make first
      • scroll

        public static void scroll​(Coordinate[] coordinates,
                                  int indexOfFirstCoordinate,
                                  boolean ensureRing)
        Shifts the positions of the coordinates until the coordinate at indexOfFirstCoordinate is first.

        If ensureRing is true, first and last coordinate of the returned array are equal.

        Parameters:
        coordinates - the array to rearrange
        indexOfFirstCoordinate - the index of the coordinate to make first
        ensureRing - flag indicating if returned array should form a ring.
      • indexOf

        public static int indexOf​(Coordinate coordinate,
                                  Coordinate[] coordinates)
        Returns the index of coordinate in coordinates. The first position is 0; the second, 1; etc.
        Parameters:
        coordinate - the Coordinate to search for
        coordinates - the array to search
        Returns:
        the position of coordinate, or -1 if it is not found
      • extract

        public static Coordinate[] extract​(Coordinate[] pts,
                                           int start,
                                           int end)
        Extracts a subsequence of the input Coordinate array from indices start to end (inclusive). The input indices are clamped to the array size; If the end index is less than the start index, the extracted array will be empty.
        Parameters:
        pts - the input array
        start - the index of the start of the subsequence to extract
        end - the index of the end of the subsequence to extract
        Returns:
        a subsequence of the input array
      • envelope

        public static Envelope envelope​(Coordinate[] coordinates)
        Computes the envelope of the coordinates.
        Parameters:
        coordinates - the coordinates to scan
        Returns:
        the envelope of the coordinates
      • intersection

        public static Coordinate[] intersection​(Coordinate[] coordinates,
                                                Envelope env)
        Extracts the coordinates which intersect an Envelope.
        Parameters:
        coordinates - the coordinates to scan
        env - the envelope to intersect with
        Returns:
        an array of the coordinates which intersect the envelope