Polygon tile indexing class for optmized geometrical relational tests. More...
#include <TileIndexer.h>
Public Types | |
| typedef std::vector< std::pair< unsigned int, unsigned int > > | TileSegIndex |
Public Member Functions | |
| bool | addRing (const unsigned int &ri) |
| Update the tile index with the information of the supplied ring. More... | |
| void | clear () |
| Clear all internal resources. More... | |
| TileIndexer * | clone () const |
| Returns a clone of this instance (the caller of this method must thake the ownership of the returned pointer). More... | |
| const te::gm::Polygon & | getPolygon () const |
| Returns the polygon. More... | |
| bool | getTile (const double &y, TileSegIndex **index) const |
| Gets tile index. More... | |
| TileIndexer (const TileIndexer &) | |
| Constructor. More... | |
| TileIndexer (const te::gm::Polygon &pol, const double &dy) | |
| Alternative Constructor. More... | |
| bool | within (const te::gm::Point &geometry) const |
| It returns true if the given geometry is within the indexed reference polygon. More... | |
| bool | withinOrTouches (const te::gm::Point &geometry) const |
| It returns true if the given geometry is within or touches the indexed reference polygon. More... | |
| ~TileIndexer () | |
| Destructor. More... | |
Protected Member Functions | |
| bool | getTileIndex (const te::gm::Point &p1, const te::gm::Point &p2, unsigned int &firstTile, unsigned int &lastTile) const |
| Gets tile index intervals in y direction for a given segment. More... | |
| bool | getTileIndex (const double &y, unsigned int &tileIndex) const |
| Gets tile index for y coordinate value. More... | |
| void | init () |
| Init internal variables. More... | |
| const TileIndexer & | operator= (const TileIndexer &) |
| Copy overload. More... | |
Protected Attributes | |
| double | m_dy |
| Tile resolution along "y" axis. More... | |
| const te::gm::Polygon & | m_referencePolygon |
| Reference polygon. More... | |
| std::vector< TileSegIndex * > | m_tileIndex |
| Each tile segments index vector. More... | |
| bool | m_withinIsInside |
| te::gm::LinearRing const * | m_withinRingPtr |
| TileSegIndex * | m_withinTileIndexPtr |
| double | m_withinTileX |
| double | m_withinTileY |
| te::gm::Coord2D | m_withinVtx0 |
| te::gm::Coord2D | m_withinVtx1 |
| int | m_withinYEquals |
| int | m_withinYFlag0 |
| int | m_withinYFlag1 |
Polygon tile indexing class for optmized geometrical relational tests.
Definition at line 54 of file TileIndexer.h.
| typedef std::vector<std::pair<unsigned int, unsigned int> > te::rst::TileIndexer::TileSegIndex |
Definition at line 58 of file TileIndexer.h.
| te::rst::TileIndexer::TileIndexer | ( | const TileIndexer & | rhs | ) |
Constructor.
Definition at line 85 of file TileIndexer.cpp.
References m_tileIndex.
Referenced by clone().
| te::rst::TileIndexer::TileIndexer | ( | const te::gm::Polygon & | pol, |
| const double & | dy | ||
| ) |
Alternative Constructor.
| pol | The polygon to index. |
| dy | Tile size along "y" axis. |
Definition at line 97 of file TileIndexer.cpp.
References addRing(), te::gm::Envelope::getHeight(), te::gm::Geometry::getMBR(), te::gm::CurvePolygon::getNumRings(), init(), m_dy, m_referencePolygon, m_tileIndex, and TE_TR.
| te::rst::TileIndexer::~TileIndexer | ( | ) |
Update the tile index with the information of the supplied ring.
| ri | The ring index. |
Definition at line 137 of file TileIndexer.cpp.
References te::gm::CurvePolygon::getNPoints(), te::gm::CurvePolygon::getNumRings(), getTileIndex(), m_referencePolygon, and m_tileIndex.
Referenced by TileIndexer().
| void te::rst::TileIndexer::clear | ( | ) |
Clear all internal resources.
Definition at line 125 of file TileIndexer.cpp.
References te::common::FreeContents(), init(), and m_tileIndex.
Referenced by ~TileIndexer().
| te::rst::TileIndexer * te::rst::TileIndexer::clone | ( | ) | const |
Returns a clone of this instance (the caller of this method must thake the ownership of the returned pointer).
Definition at line 80 of file TileIndexer.cpp.
References TileIndexer().
|
inline |
Returns the polygon.
Definition at line 128 of file TileIndexer.h.
| bool te::rst::TileIndexer::getTile | ( | const double & | y, |
| TileSegIndex ** | index | ||
| ) | const |
Gets tile index.
| y | The Y value. |
| index | Output tile pointer. |
Definition at line 181 of file TileIndexer.cpp.
References getTileIndex(), and m_tileIndex.
Referenced by within(), and withinOrTouches().
|
protected |
Gets tile index intervals in y direction for a given segment.
| p1 | First segment coordinate. |
| p2 | Second segment coordinate. |
| firstTile | The first tile index that this segment intersects. |
| lastTile | The last tile index that this segment intersects. |
Definition at line 37 of file TileIndexer.cpp.
References te::gm::Envelope::getLowerLeftY(), te::gm::Geometry::getMBR(), te::gm::Envelope::getUpperRightY(), te::gm::Point::getY(), m_dy, and m_referencePolygon.
|
protected |
Gets tile index for y coordinate value.
| y | Value of "y" coordinate. |
| tileIndex | Index of corresponding tile. |
Definition at line 59 of file TileIndexer.cpp.
References te::gm::Envelope::getLowerLeftY(), te::gm::Geometry::getMBR(), te::gm::Envelope::getUpperRightY(), m_dy, and m_referencePolygon.
|
protected |
Init internal variables.
Definition at line 75 of file TileIndexer.cpp.
References m_dy.
Referenced by clear(), and TileIndexer().
|
protected |
Copy overload.
| bool te::rst::TileIndexer::within | ( | const te::gm::Point & | geometry | ) | const |
It returns true if the given geometry is within the indexed reference polygon.
| rhs | The other geometry to be compared. |
Definition at line 197 of file TileIndexer.cpp.
References te::gm::CurvePolygon::getNumRings(), getTile(), te::gm::Point::getX(), te::gm::LineString::getX(), te::gm::Point::getY(), te::gm::LineString::getY(), m_referencePolygon, m_withinIsInside, m_withinRingPtr, m_withinTileIndexPtr, m_withinTileX, m_withinTileY, m_withinVtx0, m_withinVtx1, m_withinYFlag0, m_withinYFlag1, te::gm::Coord2D::x, and te::gm::Coord2D::y.
| bool te::rst::TileIndexer::withinOrTouches | ( | const te::gm::Point & | geometry | ) | const |
It returns true if the given geometry is within or touches the indexed reference polygon.
| rhs | The other geometry to be compared. |
Definition at line 245 of file TileIndexer.cpp.
References te::gm::CurvePolygon::getNumRings(), getTile(), te::gm::Point::getX(), te::gm::LineString::getX(), te::gm::Point::getY(), te::gm::LineString::getY(), m_referencePolygon, m_withinIsInside, m_withinRingPtr, m_withinTileIndexPtr, m_withinTileX, m_withinTileY, m_withinVtx0, m_withinVtx1, m_withinYEquals, m_withinYFlag0, m_withinYFlag1, te::gm::Coord2D::x, and te::gm::Coord2D::y.
|
protected |
Tile resolution along "y" axis.
Definition at line 158 of file TileIndexer.h.
Referenced by getTileIndex(), init(), and TileIndexer().
|
protected |
Reference polygon.
Definition at line 159 of file TileIndexer.h.
Referenced by addRing(), getTileIndex(), TileIndexer(), within(), and withinOrTouches().
|
protected |
Each tile segments index vector.
Definition at line 160 of file TileIndexer.h.
Referenced by addRing(), clear(), getTile(), and TileIndexer().
|
mutableprotected |
Definition at line 167 of file TileIndexer.h.
Referenced by within(), and withinOrTouches().
|
mutableprotected |
Definition at line 171 of file TileIndexer.h.
Referenced by within(), and withinOrTouches().
|
mutableprotected |
Definition at line 164 of file TileIndexer.h.
Referenced by within(), and withinOrTouches().
|
mutableprotected |
Definition at line 166 of file TileIndexer.h.
Referenced by within(), and withinOrTouches().
|
mutableprotected |
Definition at line 165 of file TileIndexer.h.
Referenced by within(), and withinOrTouches().
|
mutableprotected |
Definition at line 172 of file TileIndexer.h.
Referenced by within(), and withinOrTouches().
|
mutableprotected |
Definition at line 173 of file TileIndexer.h.
Referenced by within(), and withinOrTouches().
|
mutableprotected |
Definition at line 170 of file TileIndexer.h.
Referenced by withinOrTouches().
|
mutableprotected |
Definition at line 168 of file TileIndexer.h.
Referenced by within(), and withinOrTouches().
|
mutableprotected |
Definition at line 169 of file TileIndexer.h.
Referenced by within(), and withinOrTouches().