17 #include <geos/export.h> 19 #include <geos/geom/Coordinate.h> 29 class CoordinateFilter;
54 typedef std::unique_ptr<CoordinateSequence> Ptr;
62 virtual std::unique_ptr<CoordinateSequence> clone()
const = 0;
70 virtual const Coordinate& getAt(std::size_t i)
const = 0;
76 return getAt(size() - 1);
87 operator[](std::size_t i)
const 92 virtual Envelope getEnvelope()
const;
97 virtual void getAt(std::size_t i, Coordinate& c)
const = 0;
103 virtual std::size_t getSize()
const = 0;
115 virtual void toVector(std::vector<Coordinate>& coords)
const = 0;
118 virtual bool isEmpty()
const = 0;
121 virtual void setAt(
const Coordinate& c, std::size_t pos) = 0;
124 std::string toString()
const;
127 virtual void setPoints(
const std::vector<Coordinate>& v) = 0;
130 bool hasRepeatedPoints()
const;
133 const Coordinate* minCoordinate()
const;
139 static bool hasRepeatedPoints(
const CoordinateSequence* cl);
145 static CoordinateSequence* atLeastNCoordinatesOrNothing(std::size_t n,
146 CoordinateSequence* c);
152 static std::size_t indexOf(
const Coordinate* coordinate,
153 const CoordinateSequence* cl);
160 static bool equals(
const CoordinateSequence* cl1,
161 const CoordinateSequence* cl2);
164 static void scroll(CoordinateSequence* cl,
const Coordinate* firstCoordinate);
183 static int increasingDirection(
const CoordinateSequence& pts);
195 static void reverse(CoordinateSequence* cl);
206 virtual std::size_t getDimension()
const = 0;
209 return getDimension() > 2;
222 virtual double getOrdinate(std::size_t index, std::size_t ordinateIndex)
const;
233 return getOrdinate(index, X);
245 return getOrdinate(index, Y);
257 virtual void setOrdinate(std::size_t index, std::size_t ordinateIndex,
double value) = 0;
266 virtual void expandEnvelope(
Envelope& env)
const;
284 for(std::size_t i = 0, n = size(); i < n; ++i) {
293 GEOS_DLL std::ostream& operator<< (std::ostream& os,
const CoordinateSequence& cs);
295 GEOS_DLL
bool operator== (
const CoordinateSequence& s1,
const CoordinateSequence& s2);
297 GEOS_DLL
bool operator!= (
const CoordinateSequence& s1,
const CoordinateSequence& s2);
void applyCoordinateFilter(T &f)
Apply a filter to each Coordinate of this sequence. The filter is expected to provide a ...
Definition: CoordinateSequence.h:281
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:58
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:58
virtual double getY(std::size_t index) const
Definition: CoordinateSequence.h:243
const Coordinate & front() const
Return first Coordinate in the sequence.
Definition: CoordinateSequence.h:81
virtual double getX(std::size_t index) const
Definition: CoordinateSequence.h:231
Geometry classes support the concept of applying a coordinate filter to every coordinate in the Geome...
Definition: CoordinateFilter.h:41
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:44
const Coordinate & back() const
Return last Coordinate in the sequence.
Definition: CoordinateSequence.h:74