GEOS 3.14.1
LengthIndexedLine.h
1/**********************************************************************
2 *
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
5 *
6 * Copyright (C) 2011 Sandro Santilli <strk@kbt.io>
7 * Copyright (C) 2005-2006 Refractions Research Inc.
8 * Copyright (C) 2001-2002 Vivid Solutions Inc.
9 *
10 * This is free software; you can redistribute and/or modify it under
11 * the terms of the GNU Lesser General Public Licence as published
12 * by the Free Software Foundation.
13 * See the COPYING file for more information.
14 *
15 **********************************************************************
16 *
17 * Last port: linearref/LengthIndexedLine.java r463
18 *
19 **********************************************************************/
20
21#pragma once
22
23#include <geos/export.h>
24#include <geos/geom/Coordinate.h>
25#include <geos/geom/Geometry.h>
26#include <geos/linearref/LinearLocation.h>
27
28namespace geos {
29namespace linearref { // geos::linearref
30
42
43class GEOS_DLL LengthIndexedLine {
44private:
45 const geom::Geometry* linearGeom;
46 LinearLocation locationOf(double index) const;
47 LinearLocation locationOf(double index, bool resolveLower) const;
48 double positiveIndex(double index) const;
49
50public:
51
58
60
74
75
94 geom::Coordinate extractPoint(double index, double offsetDistance) const;
95
107 std::unique_ptr<geom::Geometry> extractLine(double startIndex, double endIndex) const;
108
109
128 double indexOf(const geom::Coordinate& pt) const;
129
153 double indexOfAfter(const geom::Coordinate& pt, double minIndex) const;
154
165 double* indicesOf(const geom::Geometry* subLine) const;
166
167
178 double project(const geom::Coordinate& pt) const;
179
184 double getStartIndex() const;
185
190 double getEndIndex() const;
191
198 bool isValidIndex(double index) const;
199
200
207 double clampIndex(double index) const;
208};
209
210}
211}
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:217
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition Geometry.h:196
geom::Coordinate extractPoint(double index, double offsetDistance) const
Computes the Coordinate for the point on the line at the given index, offset by the given distance.
double project(const geom::Coordinate &pt) const
Computes the index for the closest point on the line to the given point.
LengthIndexedLine(const geom::Geometry *linearGeom)
Constructs an object which allows a linear Geometry to be linearly referenced using length as an inde...
bool isValidIndex(double index) const
Tests whether an index is in the valid index range for the line.
double * indicesOf(const geom::Geometry *subLine) const
Finds the index for a point on the line which is greater than the given index.
double getEndIndex() const
Returns the index of the end of the line.
double getStartIndex() const
Returns the index of the start of the line.
std::unique_ptr< geom::Geometry > extractLine(double startIndex, double endIndex) const
Computes the LineString for the interval on the line between the given indices.
double indexOf(const geom::Coordinate &pt) const
Computes the minimum index for a point on the line.
geom::Coordinate extractPoint(double index) const
Computes the Coordinate for the point on the line at the given index.
double clampIndex(double index) const
Computes a valid index for this line by clamping the given index to the valid range of index values.
Represents a location along a LineString or MultiLineString.
Definition LinearLocation.h:43
Provides classes for various kinds of spatial indexes.
Definition CleanCoverage.h:39
Contains classes and interfaces implementing linear referencing on linear geometries.
Definition ExtractLineByLocation.h:27
Basic namespace for all GEOS functionalities.
Definition geos.h:38