21 #ifndef GEOS_GEOS_LINESTRING_H
22 #define GEOS_GEOS_LINESTRING_H
24 #include <geos/export.h>
25 #include <geos/geom/Geometry.h>
26 #include <geos/geom/CoordinateSequence.h>
27 #include <geos/geom/Envelope.h>
28 #include <geos/geom/Dimension.h>
34 #include <geos/inline.h>
38 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
44 class CoordinateArraySequence;
45 class CoordinateSequenceFilter;
86 std::unique_ptr<Geometry> clone()
const override;
93 virtual const Coordinate& getCoordinateN(
size_t n)
const;
119 virtual std::unique_ptr<Point> getPointN(std::size_t n)
const;
133 virtual bool isClosed()
const;
135 virtual bool isRing()
const;
141 virtual bool isCoordinate(
Coordinate& pt)
const;
172 int compareToSameClass(
const Geometry* ls)
const override;
184 std::unique_ptr<Geometry>
reverse()
const override;
199 Envelope::Ptr computeEnvelopeInternal()
const override;
201 CoordinateSequence::Ptr points;
204 getSortIndex()
const override
206 return SORTINDEX_LINESTRING;
211 void validateConstruction();
212 void normalizeClosed();
217 struct GEOS_DLL LineStringLT {
219 operator()(
const LineString* ls1,
const LineString* ls2)
const
221 return ls1->compareTo(ls2) < 0;
226 inline std::unique_ptr<Geometry>
229 return std::unique_ptr<Geometry>(
new LineString(*
this));
239 #endif // ndef GEOS_GEOS_LINESTRING_H
std::unique_ptr< Geometry > reverse() const override
LineString(CoordinateSequence::Ptr &&pts, const GeometryFactory &newFactory)
Hopefully cleaner version of the above.
double getLength() const override
Returns the length of this Geometry.
std::unique_ptr< Geometry > getBoundary() const override
Returns a MultiPoint. Empty for closed LineString, a Point for each vertex otherwise.
const Coordinate * getCoordinate() const override
Returns a vertex of this Geometry, or NULL if this is the empty geometry.
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:26
std::vector< const LineString * > ConstVect
A vector of const LineString pointers.
Definition: LineString.h:75
Definition: GeometryComponentFilter.h:43
virtual std::unique_ptr< Point > getStartPoint() const
Return the start point of the LineString or NULL if this is an EMPTY LineString.
int getBoundaryDimension() const override
Returns Dimension::False for a closed LineString, 0 otherwise (LineString boundary is a MultiPoint)
std::unique_ptr< Geometry > clone() const override
Creates and returns a full copy of this LineString object (including all coordinates contained by it)
Definition: LineString.h:227
void apply_ro(CoordinateSequenceFilter &filter) const override
void normalize() override
Normalizes a LineString.
std::unique_ptr< CoordinateSequence > getCoordinates() const override
Returns this Geometry vertices. Caller takes ownership of the returned object.
DimensionType
Definition: Dimension.h:31
void apply_rw(CoordinateSequenceFilter &filter) override
const CoordinateSequence * getCoordinatesRO() const
Returns a read-only pointer to internal CoordinateSequence.
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:188
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:58
Interface for classes which provide operations that can be applied to the coordinates in a Coordinate...
Definition: CoordinateSequenceFilter.h:57
Dimension::DimensionType getDimension() const override
Returns line dimension (1)
GeometryTypeId getGeometryTypeId() const override
Return an integer representation of this Geometry type.
std::size_t getNumPoints() const override
Returns the count of this Geometrys vertices.
LineString(CoordinateSequence *pts, const GeometryFactory *newFactory)
Constructs a LineString taking ownership the given CoordinateSequence.
GeometryTypeId
Geometry types.
Definition: Geometry.h:75
virtual std::unique_ptr< Point > getEndPoint() const
Return the end point of the LineString or NULL if this is an EMPTY LineString.
bool isEmpty() const override
Returns whether or not the set of points in this Geometry is empty.
Geometry classes support the concept of applying a coordinate filter to every coordinate in the Geome...
Definition: CoordinateFilter.h:43
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:68
std::string getGeometryType() const override
Return a string representation of this Geometry type.
Geometry classes support the concept of applying a Geometry filter to the Geometry.
Definition: GeometryFilter.h:47
Definition: LineString.h:68
bool equalsExact(const Geometry *other, double tolerance=0) const override
Returns true iff the two Geometrys are of the same type and their vertices corresponding by index are...
uint8_t getCoordinateDimension() const override
Returns coordinate dimension.