46 if(m_maxGeometries > 0 && m_nGeometries >= m_maxGeometries)
49 std::size_t lastPos = m_coords.size();
55 for(std::size_t i = lastPos; i < m_coords.size(); ++i)
57 te::gm::Envelope e(m_coords[i].x, m_coords[i].y, m_coords[i].x, m_coords[i].y);
78 return "Implements vertex search snap.";
90 std::vector<std::size_t> report;
91 m_rtree.search(e, report);
96 std::size_t snappedPos = report[0];
102 double minDistance = std::numeric_limits<double>::max();
103 for(std::size_t i = 1; i < report.size(); ++i)
107 if(distance < minDistance)
109 minDistance = distance;
110 snappedPos = report[i];
115 assert(snappedPos < m_coords.size());
121 result.
x = snapped.x;
122 result.
y = snapped.y;
This class implements geometry snap concept.
SnapVertex(const std::string &source, int srid=TE_UNKNOWN_SRS)
This class implements a vertex search snap.
This class implements a vertex search snap.
An utility struct for representing 2D coordinates.
TEEDITEXPORT void GetCoordinates(te::gm::Geometry *geom, std::vector< te::gm::Coord2D > &coords)
void add(te::gm::Geometry *geom)
std::string getName() const
Coord2D getCenter() const
It returns the rectangle's center coordinate.
An Envelope defines a 2D rectangular region.
bool search(const te::gm::Envelope &e, te::gm::Coord2D &result)
TEEDITEXPORT double GetDistance(const te::gm::Coord2D &c1, const te::gm::Coord2D &c2)
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
std::string getDescription() const
Utility functions for TerraLib Edit module.
static Snap * Builder(const std::string &source, int srid)
bool isValid() const
It tells if the rectangle is valid or not.