I have a moderately large area (a few dozen square kilometers) that can contain thousands of objects. Most objects are small, a square meter, so they could almost be considered points. However, some of the objects are quite large, up to the same order of magnitude as the entire area.
I would like to perform some simple spatial queries on these objects (e.g. 'find all objects overlapping this rectangle'). I've been playing around with R-trees a bit, and that seems to work well for the small objects. But I'm not sure if an R-tree is still the best choice once I include my larger objects.
So the question is: what kind of spatial index would be most appropriate here? Bonus points if there's a Java implementation that features fast add/remove of objects.