TsRtree.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 // Unit-Test TerraLib
21 #include "TsRtree.h"
22 
23 // TerraLib
24 //#include <terralib/common.h>
25 //#include <terralib/geometry.h>
26 
27 // STL
28 //#include <cstdio>
29 //#include <cstdlib>
30 //#include <cstring>
31 
32 int b;
33 
35 
37 {
38 // Box to be inserted in the RTree
39  r15 = new te::gm::Envelope(1.0,1.0, 2.5,2.5);
40  r16 = new te::gm::Envelope(3.2,1.0, 7.5,4.0);
41  r17 = new te::gm::Envelope(12.5,3.5, 17.5,5.0);
42  r18 = new te::gm::Envelope(14.0,1.7, 15,5.9);
43  r19 = new te::gm::Envelope(14.5,2.5, 16.5,3.5);
44  r12 = new te::gm::Envelope(5.0,4.5, 8.5,6.5);
45  r08 = new te::gm::Envelope(3.3,6.5, 4.5,7.5);
46  r09 = new te::gm::Envelope(5.2,8.5, 6.3,9.5);
47  r10 = new te::gm::Envelope(5.2,7.2, 6.3,8.2);
48  r11 = new te::gm::Envelope(8,1.8, 9,10.5);
49  r13 = new te::gm::Envelope(11,4.3, 11.9,9);
50  r14 = new te::gm::Envelope(10.2,11.5, 6.3,8.0);
51 
52 //Researching boxes
53  r1 = new te::gm::Envelope(3.0,1.5, 9.5,10.6);
54  r2 = new te::gm::Envelope(0.5,0.5, 18.0,6.0);
55  r3 = new te::gm::Envelope(2.7,6.7, 6.5,9.9);
56  r4 = new te::gm::Envelope(4.6,1.7, 9.3,10.8);
57  r5 = new te::gm::Envelope(9.5,4.5, 12,9.5);
58  r6 = new te::gm::Envelope(0.7,0.7,7.7, 4.3);
59  r7 = new te::gm::Envelope(12.5,1.5,18, 6.0);
60 
61 }
62 
64 {
65 }
66 
68 {
69 //#ifdef TE_COMPILE_ALL
70  std::vector<te::gm::Point*> pointVec;
72 
73  pointVec.reserve(100);
74 
75  for(int i = 0; i < 100; ++i)
76  {
77  te::gm::Point* pt = new te::gm::Point(static_cast<double>(i), static_cast<double>(i), 4326);
78  pointVec.push_back(pt);
79  rtree.insert(*(pt->getMBR()), i);
80  }
81  //size_t size = rtree.size();
82 
83  for(int i = 0; i < 100; ++i)
84  {
85  std::vector<size_t> report;
86  const te::gm::Envelope* mbr = pointVec[i]->getMBR();
87 
88  assert(rtree.search(*mbr, report) == 1);
89  assert(report[0] == static_cast<size_t>(i));
90  }
91 
92 
93  te::common::FreeContents(pointVec);
94 //#endif
95 }
96 
98 {
99 //#ifdef TE_COMPILE_ALL
100  std::vector<te::gm::Point*> pointVec;
102 
103  pointVec.reserve(100);
104 
105  for(int i = 0; i < 100; ++i)
106  {
107  te::gm::Point* pt = new te::gm::Point(i, i, 4326);
108  pointVec.push_back(pt);
109  rtree.insert(*(pt->getMBR()), i);
110  }
111  //size_t size = rtree.size();
112 
113  for(int i = 0; i < 100; ++i)
114  {
115  std::vector<int> report;
116  const te::gm::Envelope* mbr = pointVec[i]->getMBR();
117 
118  CPPUNIT_ASSERT(rtree.search(*mbr, report) == 1);
119  CPPUNIT_ASSERT(report[0] == i);
120  }
121  const te::gm::Envelope* mbr1 = new te::gm::Envelope(0.0,0.0,3.5,3.5);
122  std::vector<int> report1;
123  size_t ss;
124  CPPUNIT_ASSERT(rtree.search(*mbr1, report1) == 4);
125  ss = report1.size();
126  report1.clear();
127  const te::gm::Envelope* mbr2 = new te::gm::Envelope(1.5,1.5,7.5,7.5);
128  CPPUNIT_ASSERT(rtree.search(*mbr2, report1) == 6);
129 
130  for (std::size_t j = 0; j < report1.size(); j++)
131  {
132  std::cout << std::endl << "Print report RTree points["<< j <<"]: " << report1[j] << std::endl;
133  }
134 
135  te::common::FreeContents(pointVec);
136  delete mbr1;
137  delete mbr2;
138 
139 //#endif
140 }
141 
143 {
144  std::vector<te::gm::Point*> pointVec;
146 
147  pointVec.reserve(100);
148  int* id = 0;
149 
150  for(int i = 0; i < 100; ++i)
151  {
152  te::gm::Point* pt = new te::gm::Point(static_cast<double>(i), static_cast<double>(i), 4326);
153  pointVec.push_back(pt);
154  //rtree.insert(*(pt->getMBR()), &i);
155  rtree.insert(*(pt->getMBR()), id++);
156 
157  }
158  //size_t size = rtree.size();
159 
160  for(int i = 0; i < 100; ++i)
161  {
162  std::vector<int*> report;
163  const te::gm::Envelope* mbr = pointVec[i]->getMBR();
164 
165  assert(rtree.search(*mbr, report) == 1);
166  std::cout << std::endl << "Print report RTree Pointers: " << report[0] << std::endl;
167  }
168 
169  const te::gm::Envelope* mbr1 = new te::gm::Envelope(0.0,0.0,3.5,3.5);
170  std::vector<int*> report1;
171  CPPUNIT_ASSERT(rtree.search(*mbr1, report1) == 4);
172  for (std::size_t j = 0; j < report1.size(); j++)
173  {
174  std::cout << std::endl << "Print report["<< j <<"]: " << report1[j] << std::endl;
175  }
176  te::common::FreeContents(pointVec);
177 
178 }
179 
181 {
182 //#ifdef TE_COMPILE_ALL
183  std::vector<te::gm::Point*> pointVec;
185 
186  pointVec.reserve(100);
187  std::size_t j;
188  int k = 0; //id
189  for(int i = 0; i < 10; ++i)
190  {
191  for (j = 0; j < 10; j++)
192  {
193  te::gm::Point* pt = new te::gm::Point(i, j, 4326);
194  pointVec.push_back(pt);
195  rtree.insert(*(pt->getMBR()), k++);
196  }
197  }
198 
199  //size_t size = rtree.size();
200 
201  for(int i = 0; i < 100; ++i)
202  {
203  std::vector<int> report;
204  const te::gm::Envelope* mbr = pointVec[i]->getMBR();
205 
206  CPPUNIT_ASSERT(rtree.search(*mbr, report) == 1);
207  CPPUNIT_ASSERT(report[0] == i);
208  }
209  const te::gm::Envelope* mbr1 = new te::gm::Envelope(0.0,0.0,3.5,3.5);
210  std::vector<int> report1;
211  size_t ss;
212  //size_t searchResult =rtree.search(*mbr1, report1);
213  CPPUNIT_ASSERT(rtree.search(*mbr1, report1) == 16);
214  ss = report1.size();
215  report1.clear();
216  const te::gm::Envelope* mbr2 = new te::gm::Envelope(1.5,1.5,7.5,7.5);
217  CPPUNIT_ASSERT(rtree.search(*mbr2, report1) == 36);
218 
219  for (j = 0; j < report1.size(); j++)
220  {
221  std::cout << std::endl << "Print report["<< j <<"]: " << report1[j] << std::endl;
222  }
223 
224  te::common::FreeContents(pointVec);
225  delete mbr1;
226  delete mbr2;
227 
228 //#endif
229 }
230 
232 {
233 //#ifdef TE_COMPILE_ALL
234 
235  std::vector<te::gm::Envelope*> envelopeVec;
237 
238  envelopeVec.reserve(121);
239  std::size_t j;
240  int k = 0; //id
241  for(int i = 0; i < 11; ++i)
242  {
243  for (j = 0; j < 11; j++)
244  {
245  te::gm::Envelope* box = new te::gm::Envelope(i, j, i+1,j+1);
246  envelopeVec.push_back(box);
247  rtree.insert(*(box), k++);
248  }
249  }
250  size_t env_size = envelopeVec.size();
251  size_t size = rtree.size();
252 
253 //Inserting another box
254  te::gm::Envelope* boxInsert = new te::gm::Envelope(12, 2, 13,5);
255  envelopeVec.push_back(boxInsert);
256  rtree.insert(*(boxInsert), k++);
257  env_size = envelopeVec.size();
258  size = rtree.size();
259 
260  for(std::size_t i = 0; i < env_size; ++i)
261  {
262  std::vector<int> report;
263  const te::gm::Envelope* mbr = envelopeVec[i];
264  size_t search_result = rtree.search(*mbr, report);
265 
266  std::cout << std::endl << "Print search_result [" << i << "] = " << search_result << std::endl;
267 
268  for (j = 0; j < report.size(); j++)
269  {
270  std::cout << std::endl << " Print report["<< j << "]: " << report[j] << std::endl;
271  }
272  }
273  const te::gm::Envelope* mbr1 = new te::gm::Envelope(0.0,0.0,3.5,3.5);
274  std::vector<int> report1;
275  size_t ss;
276  size_t searchResult = rtree.search(*mbr1, report1);
277  CPPUNIT_ASSERT( searchResult == 16);
278  ss = report1.size();
279  report1.clear();
280  const te::gm::Envelope* mbr2 = new te::gm::Envelope(1.5,1.5,7.5,7.5);
281  searchResult = rtree.search(*mbr2, report1);
282  ss = report1.size();
283  CPPUNIT_ASSERT(searchResult == 49);
284 
285  std::cout << std::endl << "Print report mbr2(x1,y1,x2,y2) "<< mbr2->m_llx << " " << mbr2->m_lly << " " <<mbr2->m_urx << " " << mbr2->m_ury << std::endl;
286  std::cout << std::endl << " Search result = "<< searchResult << std::endl;
287  for (j = 0; j < report1.size(); j++)
288  {
289  std::cout << std::endl << " Print report["<< j <<"]: " << report1[j] << std::endl;
290  }
291  report1.clear();
292 
293 // Testing search to catch the last box
294  const te::gm::Envelope* mbr3 = new te::gm::Envelope(8.5,3.5,12.5,4.5);
295  searchResult = rtree.search(*mbr3, report1);
296  ss = report1.size();
297  CPPUNIT_ASSERT(searchResult == 7);
298 
299  std::cout << std::endl << "Print report mbr3(x1,y1,x2,y2) "<< mbr3->m_llx << " " << mbr3->m_lly << " " <<mbr3->m_urx << " " << mbr3->m_ury << std::endl;
300  std::cout << std::endl << " Search result = "<< searchResult << std::endl;
301  for (j = 0; j < report1.size(); j++)
302  {
303  std::cout << std::endl << " Print report["<< j <<"]: " << report1[j] << std::endl;
304  }
305 
306  te::common::FreeContents(envelopeVec);
307  delete mbr1;
308  delete mbr2;
309  delete mbr3;
310 
311 //#endif
312 }
313 
315 {
316  //#ifdef TE_COMPILE_ALL
317 
319 
320  std::vector<te::gm::Envelope*> envelopeVec;
321  envelopeVec.reserve(12);
322 
323  std::size_t j;
324  int k = 0; //id
325  {
326  envelopeVec.push_back(r15);
327  rtree.insert(*(r15), k++);
328 
329  envelopeVec.push_back(r16);
330  rtree.insert(*(r16), k++);
331 
332  envelopeVec.push_back(r17);
333  rtree.insert(*(r17), k++);
334 
335  envelopeVec.push_back(r18 );
336  rtree.insert(*(r18), k++);
337 
338  envelopeVec.push_back(r19 );
339  rtree.insert(*(r19), k++);
340 
341  envelopeVec.push_back(r12 );
342  rtree.insert(*(r12), k++);
343 
344  envelopeVec.push_back(r08 );
345  rtree.insert(*(r08), k++);
346 
347  envelopeVec.push_back(r09 );
348  rtree.insert(*(r09), k++);
349 
350  envelopeVec.push_back(r10 );
351  rtree.insert(*(r10), k++);
352 
353  envelopeVec.push_back(r11 );
354  rtree.insert(*(r11), k++);
355 
356  envelopeVec.push_back(r13 );
357  rtree.insert(*(r13), k++);
358 
359  envelopeVec.push_back(r14 );
360  rtree.insert(*(r14), k++);
361  }
362  size_t env_size = envelopeVec.size();
363  size_t size = rtree.size();
364 
365 //Inserting another box
366  te::gm::Envelope* boxInsert = new te::gm::Envelope(12, 2, 13,5);
367  envelopeVec.push_back(boxInsert);
368  rtree.insert(*(boxInsert), k++);
369 
370  for(std::size_t i = 0; i < env_size; ++i)
371  {
372  std::vector<int> report;
373  const te::gm::Envelope* mbr = envelopeVec[i];
374  size_t search_result = rtree.search(*mbr, report);
375 
376  std::cout << std::endl << "Printing search_result using mbr(x1,y1,x2,y2) " << mbr->m_llx << " " << mbr->m_lly << " " <<mbr->m_urx << " " << mbr->m_ury << std::endl;
377  std::cout << " Search Result = " << search_result << std::endl;
378 
379  for (j = 0; j < report.size(); j++)
380  {
381  std::cout << std::endl << " Print report["<< j << "]: " << report[j] << std::endl;
382  }
383  }
384 
385 // Searching in the RTree...
386  std::vector<int> report1;
387  size_t ss;
388  size_t searchResult = rtree.search(*r1, report1);
389  CPPUNIT_ASSERT( searchResult == 6);
390  ss = report1.size();
391  report1.clear();
392  searchResult = rtree.search(*r2, report1);
393  ss = report1.size();
394  CPPUNIT_ASSERT(searchResult == 9);
395  report1.clear();
396  searchResult = rtree.search(*r3, report1);
397  ss = report1.size();
398  CPPUNIT_ASSERT(searchResult == 3);
399  report1.clear();
400  searchResult = rtree.search(*r4, report1);
401  ss = report1.size();
402  CPPUNIT_ASSERT(searchResult == 5);
403  report1.clear();
404  searchResult = rtree.search(*r5, report1);
405  ss = report1.size();
406  CPPUNIT_ASSERT(searchResult == 2);
407  report1.clear();
408  searchResult = rtree.search(*r6, report1);
409  ss = report1.size();
410  CPPUNIT_ASSERT(searchResult == 2);
411  report1.clear();
412  searchResult = rtree.search(*r7, report1);
413  ss = report1.size();
414  CPPUNIT_ASSERT(searchResult == 4);
415 
416 // Inserting a box
417  te::gm::Envelope* boxInsert1 = new te::gm::Envelope(2, 1, 4,4);
418  envelopeVec.push_back(boxInsert1);
419  rtree.insert(*(boxInsert1), k++);
420  env_size = envelopeVec.size();
421  size = rtree.size();
422 
423 // Searching again ...
424  report1.clear();
425  searchResult = rtree.search(*r6, report1);
426  ss = report1.size();
427  CPPUNIT_ASSERT(searchResult == 3);
428 
429  te::common::FreeContents(envelopeVec);
430 
431 //#endif
432 }
434 {
435  //#ifdef TE_COMPILE_ALL
436 
438 
439  std::vector<te::gm::Envelope*> envelopeVec;
440  envelopeVec.reserve(12);
441 
442  std::size_t j;
443  int k = 0; //id
444  {
445  envelopeVec.push_back(r15);
446  rtree.insert(*(r15), k++);
447 
448  envelopeVec.push_back(r16);
449  rtree.insert(*(r16), k++);
450 
451  envelopeVec.push_back(r17);
452  rtree.insert(*(r17), k++);
453 
454  envelopeVec.push_back(r18 );
455  rtree.insert(*(r18), k++);
456 
457  envelopeVec.push_back(r19 );
458  rtree.insert(*(r19), k++);
459 
460  envelopeVec.push_back(r12 );
461  rtree.insert(*(r12), k++);
462 
463  envelopeVec.push_back(r08 );
464  rtree.insert(*(r08), k++);
465 
466  envelopeVec.push_back(r09 );
467  rtree.insert(*(r09), k++);
468 
469  envelopeVec.push_back(r10 );
470  rtree.insert(*(r10), k++);
471 
472  envelopeVec.push_back(r11 );
473  rtree.insert(*(r11), k++);
474 
475  envelopeVec.push_back(r13 );
476  rtree.insert(*(r13), k++);
477 
478  envelopeVec.push_back(r14 );
479  rtree.insert(*(r14), k++);
480  }
481  size_t env_size = envelopeVec.size();
482  size_t size = rtree.size();
483 
484 //Inserting another box that causes a splitNode
485  te::gm::Envelope* boxInsert = new te::gm::Envelope(12, 2, 13,5);
486  envelopeVec.push_back(boxInsert);
487  rtree.insert(*(boxInsert), k++);
488  CPPUNIT_ASSERT(rtree.size() == size +1 );
489 
490  for(std::size_t i = 0; i < env_size; ++i)
491  {
492  std::vector<int> report;
493  const te::gm::Envelope* mbr = envelopeVec[i];
494  size_t search_result = rtree.search(*mbr, report);
495 
496  std::cout << std::endl << "Printing search_result using mbr(x1,y1,x2,y2) " << mbr->m_llx << " " << mbr->m_lly << " " <<mbr->m_urx << " " << mbr->m_ury << std::endl;
497  std::cout << " Search Result = " << search_result << std::endl;
498 
499  for (j = 0; j < report.size(); j++)
500  {
501  std::cout << std::endl << " Print report["<< j << "]: " << report[j] << std::endl;
502  }
503  }
504 
505 // Searching in the RTree...
506  std::vector<int> report1;
507  size_t ss;
508  size_t searchResult = rtree.search(*r1, report1);
509  CPPUNIT_ASSERT( searchResult == 6);
510  ss = report1.size();
511  report1.clear();
512  searchResult = rtree.search(*r2, report1);
513  ss = report1.size();
514  CPPUNIT_ASSERT(searchResult == 9);
515  report1.clear();
516  searchResult = rtree.search(*r3, report1);
517  ss = report1.size();
518  CPPUNIT_ASSERT(searchResult == 3);
519  report1.clear();
520  searchResult = rtree.search(*r4, report1);
521  ss = report1.size();
522  CPPUNIT_ASSERT(searchResult == 5);
523  report1.clear();
524  searchResult = rtree.search(*r5, report1);
525  ss = report1.size();
526  CPPUNIT_ASSERT(searchResult == 2);
527  report1.clear();
528  searchResult = rtree.search(*r6, report1);
529  ss = report1.size();
530  CPPUNIT_ASSERT(searchResult == 2);
531  report1.clear();
532  searchResult = rtree.search(*r7, report1);
533  ss = report1.size();
534  CPPUNIT_ASSERT(searchResult == 4);
535 
536 // Inserting a box which should be added in node[0], branch [0]
537  te::gm::Envelope* boxInsert1 = new te::gm::Envelope(2, 1, 4,4);
538  envelopeVec.push_back(boxInsert1);
539  rtree.insert(*(boxInsert1), k++);
540  env_size = envelopeVec.size();
541  size = rtree.size();
542 
543 // Searching again ...
544  report1.clear();
545  searchResult = rtree.search(*r6, report1);
546  ss = report1.size();
547  CPPUNIT_ASSERT(searchResult == 3);
548 
549  te::common::FreeContents(envelopeVec);
550 
551 //#endif
552 }
553 
555 {
556 //#ifdef TE_COMPILE_ALL
557 
559 
560  std::vector<te::gm::Envelope*> envelopeVec;
561  envelopeVec.reserve(12);
562  {
563  envelopeVec.push_back(r15);
564  envelopeVec.push_back(r16);
565  envelopeVec.push_back(r17);
566  envelopeVec.push_back(r18 );
567  envelopeVec.push_back(r19 );
568  envelopeVec.push_back(r12 );
569  envelopeVec.push_back(r08 );
570  envelopeVec.push_back(r09 );
571  envelopeVec.push_back(r10 );
572  envelopeVec.push_back(r11 );
573  envelopeVec.push_back(r13 );
574  envelopeVec.push_back(r14 );
575  }
576  size_t env_size = envelopeVec.size();
577 
578  int k = 0; //id
579  for (std::size_t j = 0; j < env_size; j++)
580  {
581  te::gm::Envelope* mbr = envelopeVec[j];
582  rtree.insert(*(mbr), k++);
583  }
584  //Inserting another box
585  te::gm::Envelope* boxInsert = new te::gm::Envelope(12, 2, 13,5);
586  envelopeVec.push_back(boxInsert);
587  rtree.insert(*(boxInsert), k++);
588  env_size = envelopeVec.size();
589 
590  for(std::size_t i = 0; i < env_size; ++i)
591  {
592  std::vector<int> report;
593  const te::gm::Envelope* mbr = envelopeVec[i];
594  size_t search_result = rtree.search(*mbr, report);
595 
596  std::cout << std::endl << "Printing search_result using mbr(x1,y1,x2,y2) " << mbr->m_llx << " " << mbr->m_lly << " " <<mbr->m_urx << " " << mbr->m_ury << std::endl;
597  std::cout << " Search Result = " << search_result << std::endl;
598 
599  for (std::size_t n = 0; n < report.size(); n++)
600  {
601  std::cout << std::endl << " Print report["<< n << "]: " << report[n] << std::endl;
602  }
603  }
604 
605 // Searching in the RTree ...
606  std::vector<int> report1;
607  size_t ss;
608  size_t searchResult = rtree.search(*r1, report1);
609  CPPUNIT_ASSERT( searchResult == 6);
610  ss = report1.size();
611  report1.clear();
612  searchResult = rtree.search(*r2, report1);
613  ss = report1.size();
614  CPPUNIT_ASSERT(searchResult == 9);
615  report1.clear();
616  searchResult = rtree.search(*r3, report1);
617  ss = report1.size();
618  CPPUNIT_ASSERT(searchResult == 3);
619  report1.clear();
620  searchResult = rtree.search(*r4, report1);
621  ss = report1.size();
622  CPPUNIT_ASSERT(searchResult == 5);
623  report1.clear();
624  searchResult = rtree.search(*r5, report1);
625  ss = report1.size();
626  CPPUNIT_ASSERT(searchResult == 2);
627  report1.clear();
628  searchResult = rtree.search(*r6, report1);
629  ss = report1.size();
630  CPPUNIT_ASSERT(searchResult == 2);
631  report1.clear();
632  searchResult = rtree.search(*r7, report1);
633  ss = report1.size();
634  CPPUNIT_ASSERT(searchResult == 4);
635 
636 // Inserting a box
637  te::gm::Envelope* boxInsert1 = new te::gm::Envelope(2, 1, 4,4);
638  envelopeVec.push_back(boxInsert1);
639  rtree.insert(*(boxInsert1), k++);
640  env_size = envelopeVec.size();
641  //size_t size = rtree.size();
642 
643 // Searching again ...
644  report1.clear();
645  searchResult = rtree.search(*r6, report1);
646  ss = report1.size();
647  CPPUNIT_ASSERT(searchResult == 3);
648 
649  te::common::FreeContents(envelopeVec);
650 
651 //#endif
652 }
te::gm::Envelope * r13
Definition: TsRtree.h:119
void tearDown()
Definition: TsRtree.cpp:63
void tcRTreePointers()
Test Case: Constructs an RTree using pointer as DATATYPE .
Definition: TsRtree.cpp:142
void tcRTreeUnsignedInts()
Test Case: Constructs an RTree using unsigned int as DATATYPE .
Definition: TsRtree.cpp:67
Test suite for the RTree Class.
Definition: TsRtree.h:61
A class that represents an R-tree.
te::gm::Envelope * r17
Definition: TsRtree.h:111
double m_urx
Upper right corner x-coordinate.
void tcRTreeGradeInts()
Test Case: Constructs an RTree inserting a gride of ints .
Definition: TsRtree.cpp:180
te::gm::Envelope * r08
Definition: TsRtree.h:115
te::gm::Envelope * r2
Definition: TsRtree.h:124
te::gm::Envelope * r3
Definition: TsRtree.h:125
te::gm::Envelope * r5
Definition: TsRtree.h:127
te::gm::Envelope * r15
Definition: TsRtree.h:109
void tcRTreeBox_3()
Test Case: Constructs an RTree (MAXNODE = 3) inserting the defined rectangles and search the RTree...
Definition: TsRtree.cpp:433
int b
Definition: TsRtree.cpp:32
double m_llx
Lower left corner x-coordinate.
te::gm::Envelope * r12
Definition: TsRtree.h:114
A point with x and y coordinate values.
Definition: Point.h:50
const Envelope * getMBR() const _NOEXCEPT_OP(true)
It returns the minimum bounding rectangle for the geometry in an internal representation.
An Envelope defines a 2D rectangular region.
te::gm::Envelope * r09
Definition: TsRtree.h:116
void tcRTreeBox()
Test Case: Constructs an RTree inserting a gride of unitary box .
Definition: TsRtree.cpp:231
te::gm::Envelope * r4
Definition: TsRtree.h:126
te::gm::Envelope * r18
Definition: TsRtree.h:112
int search(const te::gm::Envelope &mbr, std::vector< DATATYPE > &report) const
Range search query.
void setUp()
Definition: TsRtree.cpp:36
void tcRTreeInts()
Test Case: Constructs an RTree using int as DATATYPE .
Definition: TsRtree.cpp:97
double m_lly
Lower left corner y-coordinate.
te::gm::Envelope * r7
Definition: TsRtree.h:129
void tcRTreeBox_2()
Test Case: Constructs an RTree (MAXNODE = 2) inserting the defined rectangles and search the RTree...
Definition: TsRtree.cpp:554
te::gm::Envelope * r16
Definition: TsRtree.h:110
te::gm::Envelope * r11
Definition: TsRtree.h:118
void insert(const te::gm::Envelope &mbr, const DATATYPE &data)
It inserts an item into the tree.
double m_ury
Upper right corner y-coordinate.
std::size_t size(void) const
It returns the number of elements in the tree.
te::gm::Envelope * r1
Definition: TsRtree.h:123
te::gm::Envelope * r6
Definition: TsRtree.h:128
te::gm::Envelope * r19
Definition: TsRtree.h:113
void FreeContents(boost::unordered_map< K, V * > &m)
This function can be applied to a map of pointers. It will delete each pointer in the map...
Definition: BoostUtils.h:55
te::gm::Envelope * r10
Definition: TsRtree.h:117
te::gm::Envelope * r14
Definition: TsRtree.h:120
CPPUNIT_TEST_SUITE_REGISTRATION(TsRTree)
void tcRTreeBox_4()
Test Case: Constructs an RTree (MAXNODE = 4) inserting the defined rectangles and search the RTree...
Definition: TsRtree.cpp:314