nushoin / RTree

N-dimensional RTree implementation in C++
Other
376 stars 109 forks source link

About PickSeeds #6

Closed bruce3557 closed 6 years ago

bruce3557 commented 10 years ago

Hi I found that in PickSeeds function. It has the situation that there is no seed picked by the function. Then it causes segmentation fault. In this situation, should we not to execute Classify on the seeds?

nushoin commented 10 years ago

Could you please provide concrete data causing this problem? A patch would be nice too... I haven't touched this code for years.

bruce3557 commented 10 years ago

My way is to ignore the case that there is no need picked but I'm not sure whether it is correct. Here is the data:

20041225182812 20041225182812 32743 32743
20050120182105 20050120182105 32743 32743
20050120181004 20050120181004 32743 32743
20050120185604 20050120185604 32743 32743
20050120191706 20050120192143 32743 32743
20050129054438 20050129054455 32743 32743
20050125004242 20050127004348 32743 32743
20050127080821 20050127080821 32743 32743
20050103232047 20050103232047 32743 32743
20050103231608 20050103231953 32743 32743
20050103232124 20050103233547 32743 32743
20050103234758 20050103234758 32743 32743
20050113072936 20050113072936 32743 32743
20050105014304 20050111225505 32743 32743
20050117025915 20050118054001 32743 32743
20050118064200 20050119020157 32743 32743
20041225182812 20041225182812 32743 32743
20041225182812 20041225182812 32743 32743
20041231081821 20041231081821 32743 32743
20041231084441 20050101210045 32743 32743
20041231053402 20041231053402 32743 32743
20041227225557 20041228062229 32743 32743
20041227003512 20041227003512 32743 32743
20041227004805 20041227074924 32743 32743
20041227080309 20041227080309 32743 32743
20041227075241 20041227075241 32743 32743
20041227000445 20041227000931 32743 32743
20041227003006 20041227003006 32743 32743
20050120181004 20050120182105 32743 32743
20050120183502 20050120183502 32743 32743
20050101213828 20050113072936 32743 32743
20050117025915 20050119020157 32743 32743
20050119201652 20050120105309 32743 32743
20050120185604 20050120185604 32743 32743
20050120191706 20050120192143 32743 32743
20050129054438 20050130172429 32743 32743
20050125004242 20050127004348 32743 32743
20050127080821 20050127080821 32743 32743
20041225182812 20041225182812 32743 32743
20041225182812 20041225182812 32743 32743
20050120182105 20050120182105 32743 32743
20050120181004 20050120181004 32743 32743
20050120185604 20050120185604 32743 32743
20050120191706 20050120192143 32743 32743
20050129054438 20050129054455 32743 32743
20050125004242 20050127004348 32743 32743
20050127080821 20050127080821 32743 32743
20050103232047 20050103232047 32743 32743
20050103231608 20050103231953 32743 32743
20050103232124 20050103233547 32743 32743
20050103234758 20050103234758 32743 32743
20050113072936 20050113072936 32743 32743
20050105014304 20050111225505 32743 32743
20050117025915 20050118054001 32743 32743
20050118064200 20050119020157 32743 32743
20041225182812 20041225182812 32743 32743
20041225182812 20041225182812 32743 32743
20041227000445 20041227080309 32743 32743
20041227225557 20050102160402 32743 32743
20050103024822 20050113072936 32743 32743
20050117025915 20050119020157 32743 32743
20050120073145 20050120181004 32743 32743
20050120182105 20050120182105 32743 32743
20050120185604 20050120192143 32743 32743
20050125004242 20050130172429 32743 32743
20041227225454 20041227225454 32743 32743
20050119201652 20050119201652 32743 32743
20050120183502 20050120183502 32743 32743
20050120212256 20050120212256 32743 32743
20050122001605 20050122001605 32743 32743
20050120182105 20050120182105 32743 32743
20050120181004 20050120181004 32743 32743
20050120185604 20050120185604 32743 32743
20050120191706 20050120192143 32743 32743
20050129054438 20050130172429 32743 32743
20050125004242 20050127004348 32743 32743
20050127080821 20050127080821 32743 32743
20041231081821 20050101210045 32743 32743
20041227225557 20041231053402 32743 32743
20041227003512 20041227074924 32743 32743
20041227075241 20041227080309 32743 32743
20041227003340 20041227003340 32743 32743
20041227000445 20041227003006 32743 32743
20050103224855 20050103234758 32743 32743
20050105014304 20050113072936 32743 32743
20050117025915 20050119020157 32743 32743
20050101213828 20050101213828 32743 32743
20050102160402 20050102160402 32743 32743
20050103024822 20050103025321 32743 32743
20041225182812 20041225182812 32743 32743
20050120105309 20050120105309 32743 32743
20050120073145 20050120073145 32743 32743
20041225182812 20041225182812 32743 32743
20050103232124 20050103232503 32743 32743
20050103232710 20050103232710 32743 32743
20050105034455 20050106034834 32743 32743
20050106215124 20050111225505 32743 32743
20050106035210 20050106035210 32743 32743
20050117213917 20050118025128 32743 32743
20050118025641 20050118025641 32743 32743
20050118065543 20050118065543 32743 32743
20050119020157 20050119020157 32743 32743
20050118064200 20050118064200 32743 32743
20050118064228 20050118064228 32743 32743
20050120181004 20050120182105 32743 32743
20050120185604 20050120192143 32743 32743
20050125004242 20050129054455 32743 32743
20041225182812 20041225182812 32743 32743
20041225182812 20041225182812 32743 32743
20041225182812 20041225182812 32743 32743
20041225182812 20041225182812 32743 32743
20050120182105 20050120182105 32743 32743
20050120181004 20050120181004 32743 32743
20050120185604 20050120185604 32743 32743
20050120191706 20050120192143 32743 32743
20050129054438 20050129054455 32743 32743
20050125004242 20050127004348 32743 32743
20050127080821 20050127080821 32743 32743
20050103232047 20050103232047 32743 32743
20050103231608 20050103231953 32743 32743
20050103232124 20050103233547 32743 32743
20050103234758 20050103234758 32743 32743
20050113072936 20050113072936 32743 32743
20050105014304 20050111225505 32743 32743
20050117025915 20050118054001 32743 32743
20050118064200 20050119020157 32743 32743
20041225182812 20041225182812 32743 32743
20041225182812 20041225182812 32743 32743
20050120191706 20050120191706 32743 32743
20050120192143 20050120192143 32743 32743
20050129054438 20050129054438 32743 32743
20050129054455 20050130172429 32743 32743
20050125004242 20050125035134 32743 32743
20050126112156 20050127004348 32743 32743
20041227225454 20050101210045 32743 32743
20041227000445 20041227080309 32743 32743
20050101213828 20050101213828 32743 32743
20050102160402 20050102160402 32743 32743
20050103224855 20050113072936 32743 32743
20050117025915 20050119020157 32743 32743
20050103024822 20050103025321 32743 32743
20050119201652 20050119201652 32743 32743
20050120073145 20050120105309 32743 32743
20041225182812 20041225182812 32743 32743
20041225182812 20041225182812 32743 32743
20050120191706 20050120191706 32743 32743
20050120192143 20050120192143 32743 32743
20050129054438 20050129054438 32743 32743
20050129054455 20050130172429 32743 32743
20050125004242 20050125035134 32743 32743
20050126112156 20050127004348 32743 32743
20041227225454 20050101210045 32743 32743
20041227000445 20041227080309 32743 32743
20050101213828 20050101213828 32743 32743
20050102160402 20050102160402 32743 32743
20050103224855 20050113072936 32743 32743
20050117025915 20050119020157 32743 32743
20050103024822 20050103025321 32743 32743
20050119201652 20050119201652 32743 32743
20050120073145 20050120105309 32743 32743
20041225182812 20041225182812 32743 32743
20041225182812 20041225182812 32743 32743
20050120191706 20050120191706 32743 32743
20050120192143 20050120192143 32743 32743
20050129054438 20050129054438 32743 32743
20050129054455 20050130172429 32743 32743
20050125004242 20050125035134 32743 32743
20050126112156 20050127004348 32743 32743
20041227225454 20050101210045 32743 32743
20041227000445 20041227080309 32743 32743
20050101213828 20050101213828 32743 32743
20050102160402 20050102160402 32743 32743
20050103224855 20050113072936 32743 32743
20050117025915 20050119020157 32743 32743
nushoin commented 10 years ago

I've tested your data. I think that you don't use the class correctly.

The coordinates in the RTree are in the following format: {xmin, ymin, xmax, ymax}. Your data seems to be in an {x, y, width, height} format. If I add the 3rd row to the first row and the 4th row to the second row, so that we get (n1, n2, n1+n3, n2+n4} as input coordinates there is no segmentation fault.

nushoin commented 10 years ago

I've pushed the test to 'master' (TestBadData.cpp). Please check if that was indeed you problem.

vingalalli commented 10 years ago

Hi,

I am using this code for 6 dimensional data. For each dimension I want the minimum value to be 0 and a maximum value is provided in 'synFields'. Here is the format I use:

struct Rect { Rect() {} Rect(std::vector synFields) { for (size_t i = 0; i < synFields.size(); ++i) { max[i] = synFields.at(i); min[i] = 0; } } int min[6], max[6]; };

I have around 20,000 samples of data to build the RTree. The code perfectly works for some samples (around 60-150, depending on the different data set I use). However, after that, it throws segmentation error and the error appears when Classify() function is invoked. When the error is thrown, 'a_index' and 'a_index' are not assigned any values, and hence take garbage value. There should not be any problem with the input data and the way I feed it in the code, since it works perfectly fine for many samples.

Could you help me to overcome this?

Thanks!

nushoin commented 10 years ago

@vj-github a minimal sample causing the crash would go a long way towards solving the problem. Having said that, I maintain this project in my free time, of which I have preciously little. If you want a fast solution you better do it yourself then send me a pull request.

nushoin commented 6 years ago

closing this issue now.