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));
150 #endif // __TERRALIB_VP_INTERNAL_KDTREEINDEX_H