Package org.locationtech.jts.geom
Class CoordinateArrays
java.lang.Object
org.locationtech.jts.geom.CoordinateArrays
Useful utility functions for handling Coordinate arrays
- Version:
- 1.7
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
AComparator
forCoordinate
arrays modulo their directionality.static class
AComparator
forCoordinate
arrays in the forward direction of their coordinates, using lexicographic ordering. -
Method Summary
Modifier and TypeMethodDescriptionstatic 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.static int
compare
(Coordinate[] pts1, Coordinate[] pts2) Compares twoCoordinate
arrays in the forward direction of their coordinates, using lexicographic ordering.static Coordinate[]
copyDeep
(Coordinate[] coordinates) Creates a deep copy of the argumentCoordinate
array.static void
copyDeep
(Coordinate[] src, int srcStart, Coordinate[] dest, int destStart, int length) Creates a deep copy of a given section of a sourceCoordinate
array into a destination Coordinate array.static int
dimension
(Coordinate[] pts) Determine dimension based on subclass ofCoordinate
.static void
enforceConsistency
(Coordinate[] array) Utility method ensuring array contents are of consistent dimension and measures.static Coordinate[]
enforceConsistency
(Coordinate[] array, int dimension, int measures) Utility method ensuring array contents are of the specified dimension and measures.static Envelope
envelope
(Coordinate[] coordinates) Computes the envelope of the coordinates.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)static boolean
equals
(Coordinate[] coord1, Coordinate[] coord2, Comparator coordinateComparator) Returns true if the two arrays are identical, both null, or pointwise equal, using a user-definedComparator
forCoordinate
sstatic Coordinate[]
extract
(Coordinate[] pts, int start, int end) static boolean
hasRepeatedOrInvalidPoints
(Coordinate[] coord) Tests whether an array has any repeated or invalid coordinates.static boolean
hasRepeatedPoints
(Coordinate[] coord) Tests whetherCoordinate.equals(Object)
returns true for any two consecutive Coordinates in the given array.static int
increasingDirection
(Coordinate[] pts) Determines which orientation of theCoordinate
array is (overall) increasing.static int
indexOf
(Coordinate coordinate, Coordinate[] coordinates) Returns the index ofcoordinate
incoordinates
.static Coordinate[]
intersection
(Coordinate[] coordinates, Envelope env) Extracts the coordinates which intersect anEnvelope
.static boolean
isRing
(Coordinate[] pts) Tests whether an array ofCoordinate
s forms a ring, by checking length and closure.static int
measures
(Coordinate[] pts) Determine number of measures based on subclass ofCoordinate
.static Coordinate
minCoordinate
(Coordinate[] coordinates) Returns the minimum coordinate, using the usual lexicographic comparison.static Coordinate
ptNotInList
(Coordinate[] testPts, Coordinate[] pts) Finds a point in a list of points which is not contained in another list of pointsstatic Coordinate[]
removeNull
(Coordinate[] coord) Collapses a coordinate array to remove all null elements.static Coordinate[]
removeRepeatedOrInvalidPoints
(Coordinate[] coord) If the coordinate array argument has repeated or invalid points, constructs a new array containing no repeated points.static Coordinate[]
removeRepeatedPoints
(Coordinate[] coord) If the coordinate array argument has repeated points, constructs a new array containing no repeated points.static void
reverse
(Coordinate[] coord) Reverses the coordinates in an array in-place.static void
scroll
(Coordinate[] coordinates, int indexOfFirstCoordinate) Shifts the positions of the coordinates until the coordinate atfirstCoordinate
is first.static void
scroll
(Coordinate[] coordinates, int indexOfFirstCoordinate, boolean ensureRing) Shifts the positions of the coordinates until the coordinate atindexOfFirstCoordinate
is first.static void
scroll
(Coordinate[] coordinates, Coordinate firstCoordinate) Shifts the positions of the coordinates untilfirstCoordinate
is first.static Coordinate[]
toCoordinateArray
(Collection coordList) Converts the given Collection of Coordinates into a Coordinate array.
-
Method Details
-
dimension
Determine dimension based on subclass ofCoordinate
.- Parameters:
pts
- supplied coordinates- Returns:
- number of ordinates recorded
-
measures
Determine number of measures based on subclass ofCoordinate
.- Parameters:
pts
- supplied coordinates- Returns:
- number of measures recorded
-
enforceConsistency
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
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 arraydimension
-measures
-- Returns:
- array returned, or copy created if required to enforce consistency.
-
isRing
Tests whether an array ofCoordinate
s 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
Finds a point in a list of points which is not contained in another list of points- Parameters:
testPts
- theCoordinate
s to testpts
- an array ofCoordinate
s to test the input points against- Returns:
- a
Coordinate
fromtestPts
which is not inpts
, ' ornull
-
compare
Compares twoCoordinate
arrays in the forward direction of their coordinates, using lexicographic ordering.- Parameters:
pts1
-pts2
-- Returns:
- an integer indicating the order
-
increasingDirection
Determines which orientation of theCoordinate
array is (overall) increasing. In other words, determines which end of the array is "smaller" (using the standard ordering onCoordinate
). 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
Creates a deep copy of the argumentCoordinate
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 sourceCoordinate
array into a destination Coordinate array. The destination array must be an appropriate size to receive the copied coordinates.- Parameters:
src
- an array of CoordinatessrcStart
- the index to start copying fromdest
- thedestStart
- the destination index to start copying tolength
- the number of items to copy
-
toCoordinateArray
Converts the given Collection of Coordinates into a Coordinate array. -
hasRepeatedPoints
Tests whetherCoordinate.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
Returns either the given coordinate array if its length is greater than the given amount, or an empty coordinate array. -
removeRepeatedPoints
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:
-
hasRepeatedOrInvalidPoints
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:
-
removeRepeatedOrInvalidPoints
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:
-
removeNull
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
Reverses the coordinates in an array in-place. -
equals
Returns true if the two arrays are identical, both null, or pointwise equal (as compared using Coordinate#equals)- See Also:
-
equals
public static boolean equals(Coordinate[] coord1, Coordinate[] coord2, Comparator coordinateComparator) Returns true if the two arrays are identical, both null, or pointwise equal, using a user-definedComparator
forCoordinate
s- Parameters:
coord1
- an array of Coordinatescoord2
- an array of CoordinatescoordinateComparator
- a Comparator for Coordinates
-
minCoordinate
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:
-
scroll
Shifts the positions of the coordinates untilfirstCoordinate
is first.- Parameters:
coordinates
- the array to rearrangefirstCoordinate
- the coordinate to make first
-
scroll
Shifts the positions of the coordinates until the coordinate atfirstCoordinate
is first.- Parameters:
coordinates
- the array to rearrangeindexOfFirstCoordinate
- the index of the coordinate to make first
-
scroll
Shifts the positions of the coordinates until the coordinate atindexOfFirstCoordinate
is first. IfensureRing
istrue
, first and last coordinate of the returned array are equal.- Parameters:
coordinates
- the array to rearrangeindexOfFirstCoordinate
- the index of the coordinate to make firstensureRing
- flag indicating if returned array should form a ring.
-
indexOf
Returns the index ofcoordinate
incoordinates
. The first position is 0; the second, 1; etc.- Parameters:
coordinate
- theCoordinate
to search forcoordinates
- the array to search- Returns:
- the position of
coordinate
, or -1 if it is not found
-
extract
Extracts a subsequence of the inputCoordinate
array from indicesstart
toend
(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 arraystart
- the index of the start of the subsequence to extractend
- the index of the end of the subsequence to extract- Returns:
- a subsequence of the input array
-
envelope
Computes the envelope of the coordinates.- Parameters:
coordinates
- the coordinates to scan- Returns:
- the envelope of the coordinates
-
intersection
Extracts the coordinates which intersect anEnvelope
.- Parameters:
coordinates
- the coordinates to scanenv
- the envelope to intersect with- Returns:
- an array of the coordinates which intersect the envelope
-