40 var = m_properties.getProperty(
"ResultSetLimit");
44 throw std::runtime_error(
"Index::ResultSetLimit: "
45 "Property ResultSetLimit must be Tools::VT_LONGLONG");
52 var = m_properties.getProperty(
"ResultSetOffset");
56 throw std::runtime_error(
"Index::ResultSetOffset: "
57 "Property ResultSetOffset must be Tools::VT_LONGLONG");
61 m_resultSetOffset = 0;
68 std::ostringstream os;
69 os <<
"Spatial Index Error: " << e.
what();
70 throw std::runtime_error(os.str());
79 std::ostringstream os;
80 os <<
"Spatial Index Error: " << e.
what();
81 throw std::runtime_error(os.str());
90 std::ostringstream os;
91 os <<
"Spatial Index Error: " << e.
what();
92 throw std::runtime_error(os.str());
119 uint32_t *nDimension,
120 const uint8_t **pData,
121 size_t *nDataLength))
126 std::unique_ptr<SpatialIndex::IDataStream> ds)
127 : m_properties(poProperties)
133 m_storage = CreateStorage();
134 m_buffer = CreateIndexBuffer(*m_storage);
146 m_properties.setProperty(
"ExternalSortBufferPageSize", sz);
149 m_properties.setProperty(
"ExternalSortBufferTotalPages", sz);
156 throw std::runtime_error(
"Index::Index (streaming): "
157 "Property IndexIdentifier must be Tools::VT_LONGLONG");
175 if ( m_storage == 0 )
176 throw std::runtime_error(
"Storage was invalid to create index buffer");
179 std::ostringstream os;
180 os <<
"Spatial Index Error: " << e.
what();
181 throw std::runtime_error(os.str());
192 std::string filename(
"");
195 var = m_properties.getProperty(
"FileName");
200 throw std::runtime_error(
"Index::CreateStorage: "
201 "Property FileName must be Tools::VT_PCHAR");
207 if (filename.empty()) {
208 std::ostringstream os;
209 os <<
"Spatial Index Error: filename was empty."
210 " Set IndexStorageType to RT_Memory";
211 throw std::runtime_error(os.str());
217 std::ostringstream os;
218 os <<
"Spatial Index Error: " << e.
what();
219 throw std::runtime_error(os.str());
228 std::ostringstream os;
229 os <<
"Spatial Index Error: " << e.
what();
230 throw std::runtime_error(os.str());
239 std::ostringstream os;
240 os <<
"Spatial Index Error: " << e.
what();
241 throw std::runtime_error(os.str());
251 void Index::Initialize()
253 m_storage = CreateStorage();
254 m_buffer = CreateIndexBuffer(*m_storage);
255 m_rtree = CreateIndex();
264 m_resultSetLimit = 0;
265 m_resultSetOffset = 0;
276 throw std::runtime_error(
"Index::GetIndexType: "
277 "Property IndexType must be Tools::VT_ULONG");
298 var = m_properties.
getProperty(
"IndexStorageType");
303 throw std::runtime_error(
"Index::GetIndexStorage: "
304 "Property IndexStorageType must be Tools::VT_ULONG");
330 throw std::runtime_error(
"Index::GetIndexVariant: "
331 "Property TreeVariant must be Tools::VT_ULONG");
347 m_properties.setProperty(
"TreeVariant", var);
350 m_properties.setProperty(
"TreeVariant", var);
353 m_properties.setProperty(
"TreeVariant", var);
359 return m_resultSetOffset;
368 m_resultSetOffset = v;
374 return m_resultSetLimit;
383 m_resultSetLimit = v;
SpatialIndex::ISpatialIndex & index()
RTIndexType GetIndexType()
void SetIndexVariant(RTIndexVariant v)
Index(const Tools::PropertySet &poProperties)
RTIndexVariant GetIndexVariant()
int64_t GetResultSetOffset()
void SetIndexStorage(RTStorageType v)
void SetIndexType(RTIndexType v)
RTStorageType GetIndexStorage()
SpatialIndex::StorageManager::IBuffer & buffer()
void SetResultSetLimit(int64_t v)
void SetResultSetOffset(int64_t v)
int64_t GetResultSetLimit()
SIDX_DLL ISpatialIndex * returnMVRTree(IStorageManager &ind, Tools::PropertySet &in)
SIDX_DLL ISpatialIndex * createAndBulkLoadNewRTree(BulkLoadMethod m, IDataStream &stream, IStorageManager &sm, double fillFactor, uint32_t indexCapacity, uint32_t leafCapacity, uint32_t dimension, RTreeVariant rv, id_type &indexIdentifier)
SIDX_DLL ISpatialIndex * returnRTree(IStorageManager &ind, Tools::PropertySet &in)
IStorageManager * returnCustomStorageManager(Tools::PropertySet &in)
SIDX_DLL IStorageManager * returnMemoryStorageManager(Tools::PropertySet &in)
SIDX_DLL IStorageManager * returnDiskStorageManager(Tools::PropertySet &in)
SIDX_DLL IBuffer * returnRandomEvictionsBuffer(IStorageManager &ind, Tools::PropertySet &in)
SIDX_DLL ISpatialIndex * returnTPRTree(IStorageManager &ind, Tools::PropertySet &in)