00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef GEOS_LINEARREF_LENGTHINDEXOFPOINT_H
00022 #define GEOS_LINEARREF_LENGTHINDEXOFPOINT_H
00023
00024 #include <string>
00025
00026 #include <geos/geom/Coordinate.h>
00027 #include <geos/geom/Geometry.h>
00028 #include <geos/geom/LineSegment.h>
00029 #include <geos/linearref/LinearLocation.h>
00030
00031
00032 namespace geos
00033 {
00034 namespace linearref
00035 {
00036
00046 class LengthIndexOfPoint
00047 {
00048
00049 private:
00050 const geom::Geometry *linearGeom;
00051
00052 double indexOfFromStart(const geom::Coordinate& inputPt, const double minIndex) const;
00053
00054 double segmentNearestMeasure(const geom::LineSegment *seg,
00055 const geom::Coordinate& inputPt,
00056 double segmentStartMeasure) const;
00057 public:
00058 static double indexOf(const geom::Geometry *linearGeom, const geom::Coordinate& inputPt);
00059
00060 static double indexOfAfter(const geom::Geometry *linearGeom, const geom::Coordinate& inputPt, double minIndex);
00061
00062 LengthIndexOfPoint(const geom::Geometry *linearGeom);
00063
00070 double indexOf(const geom::Coordinate& inputPt) const;
00071
00087 double indexOfAfter(const geom::Coordinate& inputPt, double minIndex) const;
00088
00089 };
00090 }
00091 }
00092 #endif