23 #include <geos/export.h>
24 #include <geos/geom/Geometry.h>
25 #include <geos/geom/CoordinateSequence.h>
26 #include <geos/geom/Envelope.h>
27 #include <geos/geom/Dimension.h>
36 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
42 class CoordinateSequenceFilter;
83 std::unique_ptr<LineString>
clone()
const
85 return std::unique_ptr<LineString>(cloneImpl());
93 virtual const Coordinate& getCoordinateN(std::size_t n)
const;
117 bool hasM()
const override;
119 bool hasZ()
const override;
132 virtual std::unique_ptr<Point> getPointN(std::size_t n)
const;
146 virtual bool isClosed()
const;
148 virtual bool isRing()
const;
154 virtual bool isCoordinate(
Coordinate& pt)
const;
187 int compareToSameClass(
const Geometry* ls)
const override;
199 std::unique_ptr<LineString>
reverse()
const {
return std::unique_ptr<LineString>(reverseImpl()); }
219 Envelope computeEnvelopeInternal()
const;
221 CoordinateSequence::Ptr points;
226 getSortIndex()
const override
228 return SORTINDEX_LINESTRING;
232 envelope = computeEnvelopeInternal();
237 void validateConstruction();
238 void normalizeClosed();
243 struct GEOS_DLL LineStringLT {
245 operator()(
const LineString* ls1,
const LineString* ls2)
const
247 return ls1->compareTo(ls2) < 0;
LineString(CoordinateSequence::Ptr &&pts, const GeometryFactory &newFactory)
Constructs a LineString taking ownership the given CoordinateSequence.
double getLength() const override
Returns the length of this Geometry.
std::unique_ptr< CoordinateSequence > releaseCoordinates()
Take ownership of the CoordinateSequence managed by this geometry. After releasing the coordinates,...
const CoordinateXY * getCoordinate() const override
Returns a vertex of this Geometry, or NULL if this is the empty geometry.
LineString * reverseImpl() const override
Make a geometry with coordinates in reverse order.
std::unique_ptr< Geometry > getBoundary() const override
Returns a MultiPoint. Empty for closed LineString, a Point for each vertex otherwise.
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25
std::vector< const LineString * > ConstVect
A vector of const LineString pointers.
Definition: LineString.h:72
Definition: GeometryComponentFilter.h:41
bool equalsIdentical(const Geometry *other) const override
Returns true if the two geometries are of the same type and their vertices corresponding by index are...
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)
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:29
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:216
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:186
std::unique_ptr< LineString > clone() const
Creates and returns a full copy of this LineString object (including all coordinates contained by it)
Definition: LineString.h:83
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:56
std::unique_ptr< LineString > reverse() const
Definition: LineString.h:199
LineString * cloneImpl() const override
Make a deep-copy of this Geometry.
Definition: LineString.h:215
Interface for classes which provide operations that can be applied to the coordinates in a Coordinate...
Definition: CoordinateSequenceFilter.h:55
void geometryChangedAction() override
Notifies this Geometry that its Coordinates have been changed by an external party.
Definition: LineString.h:231
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.
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:58
GeometryTypeId
Geometry types.
Definition: Geometry.h:73
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:65
std::string getGeometryType() const override
Return a string representation of this Geometry type.
const Envelope * getEnvelopeInternal() const override
Returns the minimum and maximum x and y values in this Geometry, or a null Envelope if this Geometry ...
Definition: LineString.h:201
Geometry classes support the concept of applying a Geometry filter to the Geometry.
Definition: GeometryFilter.h:45
Definition: LineString.h:65
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.