15 #ifndef GEOS_GEOM_COORDINATESEQUENCE_H
16 #define GEOS_GEOM_COORDINATESEQUENCE_H
18 #include <geos/export.h>
19 #include <geos/inline.h>
21 #include <geos/geom/Coordinate.h>
31 class CoordinateFilter;
68 typedef std::unique_ptr<CoordinateSequence> Ptr;
76 virtual std::unique_ptr<CoordinateSequence>
clone()
const = 0;
90 return getAt(size() - 1);
101 operator[](std::size_t i)
const
106 virtual Envelope getEnvelope()
const;
129 virtual void toVector(std::vector<Coordinate>& coords)
const = 0;
141 virtual void setPoints(
const std::vector<Coordinate>& v) = 0;
224 virtual double getOrdinate(std::size_t index, std::size_t ordinateIndex)
const;
235 return getOrdinate(index, X);
247 return getOrdinate(index, Y);
259 virtual void setOrdinate(std::size_t index, std::size_t ordinateIndex,
double value) = 0;
286 for(std::size_t i = 0, n = size(); i < n; ++i) {
295 GEOS_DLL std::ostream&
operator<< (std::ostream& os,
const CoordinateSequence& cs);
297 GEOS_DLL
bool operator== (
const CoordinateSequence& s1,
const CoordinateSequence& s2);
299 GEOS_DLL
bool operator!= (
const CoordinateSequence& s1,
const CoordinateSequence& s2);
308 #endif // ndef GEOS_GEOM_COORDINATESEQUENCE_H
std::ostream & operator<<(std::ostream &os, const Coordinate &c)
Output function.
const Coordinate * minCoordinate() const
Returns lower-left Coordinate in list.
bool hasRepeatedPoints() const
Returns true if contains any two consecutive points.
bool operator!=(const Coordinate &a, const Coordinate &b)
Inequality operator for Coordinate. 2D only.
virtual void setOrdinate(std::size_t index, std::size_t ordinateIndex, double value)=0
void applyCoordinateFilter(T &f)
Apply a filter to each Coordinate of this sequence. The filter is expected to provide a ....
Definition: CoordinateSequence.h:283
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25
const Coordinate & front() const
Return first Coordinate in the sequence.
Definition: CoordinateSequence.h:95
static void reverse(CoordinateSequence *cl)
Reverse Coordinate order in given CoordinateSequence.
static size_t indexOf(const Coordinate *coordinate, const CoordinateSequence *cl)
Return position of a Coordinate, or -1 if not found.
virtual bool isEmpty() const =0
Returns true it list contains no coordinates.
virtual std::size_t getDimension() const =0
bool operator==(const Coordinate &a, const Coordinate &b)
Equality operator for Coordinate. 2D only.
static int increasingDirection(const CoordinateSequence &pts)
Determines which orientation of the Coordinate array is (overall) increasing.
virtual void toVector(std::vector< Coordinate > &coords) const =0
static bool equals(const CoordinateSequence *cl1, const CoordinateSequence *cl2)
Returns true if the two arrays are identical, both null, or pointwise equal.
virtual void getAt(std::size_t i, Coordinate &c) const =0
Write Coordinate at position i to given Coordinate.
std::string toString() const
Get a string representation of CoordinateSequence.
virtual void expandEnvelope(Envelope &env) const
static void scroll(CoordinateSequence *cl, const Coordinate *firstCoordinate)
Scroll given CoordinateSequence so to start with given Coordinate.
virtual void setPoints(const std::vector< Coordinate > &v)=0
Substitute Coordinate list with a copy of the given vector.
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:84
static bool hasRepeatedPoints(const CoordinateSequence *cl)
Returns true if given CoordinateSequence contains any two consecutive Coordinate.
virtual double getX(std::size_t index) const
Definition: CoordinateSequence.h:233
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:58
virtual void setAt(const Coordinate &c, std::size_t pos)=0
Copy Coordinate c to position pos.
virtual double getY(std::size_t index) const
Definition: CoordinateSequence.h:245
const Coordinate & back() const
Return last Coordinate in the sequence.
Definition: CoordinateSequence.h:88
virtual const Coordinate & getAt(std::size_t i) const =0
Returns a read-only reference to Coordinate at position i.
virtual std::unique_ptr< CoordinateSequence > clone() const =0
Returns a deep copy of this collection.
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:90
Geometry classes support the concept of applying a coordinate filter to every coordinate in the Geome...
Definition: CoordinateFilter.h:67
virtual std::size_t getSize() const =0
Returns the number of Coordinates (actual or otherwise, as this implementation may not store its data...
static CoordinateSequence * atLeastNCoordinatesOrNothing(std::size_t n, CoordinateSequence *c)
Returns either the given CoordinateSequence if its length is greater than the given amount,...
virtual double getOrdinate(std::size_t index, std::size_t ordinateIndex) const