28 #ifndef __TERRALIB_VP_INTERNAL_KDTREEMULTIINDEX_H
29 #define __TERRALIB_VP_INTERNAL_KDTREEMULTIINDEX_H
34 #include "../common/STLUtils.h"
35 #include "../sam/kdtree/Index.h"
76 std::unique_ptr<te::vp::IndexReport<T>>
getData()
const;
91 : m_index(
te::gm::Envelope())
105 m_indexContainer.clear();
112 std::size_t newDataIndex = m_indexContainer.insert(data);
113 m_index.insert(coord, newDataIndex);
119 m_indexContainer.remove(dataIndex);
125 std::vector<std::size_t> vecValidIndexes = m_indexContainer.getValidIndexes();
127 std::unique_ptr<te::vp::IndexReport<T>> indexReport(
new te::vp::IndexReport<T>(&m_indexContainer, vecValidIndexes));
134 std::vector<KD_NODE*> vecNodesReport;
135 m_index.search(mbr, vecNodesReport);
137 std::vector<std::size_t> vecFullIndexesReport;
138 for (std::size_t i = 0; i < vecNodesReport.size(); ++i)
140 const std::vector<std::size_t>& vecNodeIndexes = vecNodesReport.at(i)->getData();
141 vecFullIndexesReport.insert(vecFullIndexesReport.end(), vecNodeIndexes.begin(), vecNodeIndexes.end());
144 std::vector<std::size_t> vecNetIndexesReport = m_indexContainer.getValidIndexes(vecFullIndexesReport);
146 std::unique_ptr<te::vp::IndexReport<T>> indexReport(
new te::vp::IndexReport<T>(&m_indexContainer, vecNetIndexesReport));
An Envelope defines a 2D rectangular region.
A class that represents a two dimensional K-d Tree (2-d Tree).
A class that represents an Kd-tree node.
std::unique_ptr< te::vp::IndexReport< T > > getData() const
Searches from all data consdering the given mbr.
te::sam::kdtree::Index< KD_NODE > m_index
The internal rtree to store the data indexes.
void remove(const te::gm::Coord2D &coord, std::size_t dataIndex)
Gets all data from the KDTreeIndex.
IndexContainer< T > m_indexContainer
The indexed data container.
std::unique_ptr< te::vp::IndexReport< T > > search(const te::gm::Envelope &mbr) const
KDTreeMultiIndex()
< Constructor
void clear()
Inserts the given data considering the given envelope as key.
~KDTreeMultiIndex()
Clears the index.
void insert(const te::gm::Coord2D &coord, const T &data)
Removes the given data considering the given envelope as key.
An utility struct for representing 2D coordinates.
Kd-Tree node type for nodes with multuple elements (used by template instantiation).
Proxy configuration file for TerraView (see terraview_config.h).
Utility classes, structures and definitions for Vector Processing.