00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GEOS_OP_OVERLAY_FUZZYPOINTLOCATOR_H
00021 #define GEOS_OP_OVERLAY_FUZZYPOINTLOCATOR_H
00022
00023 #include <geos/export.h>
00024 #include <geos/algorithm/PointLocator.h>
00025 #include <geos/geom/Geometry.h>
00026 #include <geos/geom/Location.h>
00027
00028 #include <vector>
00029 #include <memory>
00030
00031 #ifdef _MSC_VER
00032 #pragma warning(push)
00033 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
00034 #endif
00035
00036
00037 namespace geos {
00038 namespace geom {
00039 class Geometry;
00040 class Coordinate;
00041 }
00042 }
00043
00044 namespace geos {
00045 namespace operation {
00046 namespace overlay {
00047 namespace validate {
00048
00059 class GEOS_DLL FuzzyPointLocator {
00060
00061 public:
00062
00063 FuzzyPointLocator(const geom::Geometry& geom, double nTolerance);
00064
00065 geom::Location::Value getLocation(const geom::Coordinate& pt);
00066
00067 private:
00068
00069 const geom::Geometry& g;
00070
00071 double tolerance;
00072
00073 algorithm::PointLocator ptLocator;
00074
00075 std::auto_ptr<geom::Geometry> linework;
00076
00077
00078 std::auto_ptr<geom::Geometry> getLineWork(const geom::Geometry& geom);
00079
00081
00084 std::auto_ptr<geom::Geometry> extractLineWork(const geom::Geometry& geom);
00085
00086
00087 FuzzyPointLocator(const FuzzyPointLocator& other);
00088 FuzzyPointLocator& operator=(const FuzzyPointLocator& rhs);
00089 };
00090
00091 }
00092 }
00093 }
00094 }
00095
00096 #ifdef _MSC_VER
00097 #pragma warning(pop)
00098 #endif
00099
00100 #endif // ndef GEOS_OP_OVERLAY_FUZZYPOINTLOCATOR_H
00101
00102
00103
00104
00105