Bulk-loading R-tree with data with extent When bulk-loading R-tree with points one can simply sort the elements by some coordinate and split to equal-sized chunks. But if the elements have some extent, sorting them by their coordinate value (whether minimum, average or maximum) can still lead to large overlap if there are some large elements involved.

(Update) I am already building the tree top-down. It was the obvious option, especially since I don't have 100% utilization requirement. The leaves are compressed, so they won't end up page-aligned on disk anyway. My concern is really splitting the individual elements in a better way than simply sorting by coordinate, because the elements have very different extents (from couple of metres to several kilometres, so three orders of magnitude) and also different sizes (in bytes). It is even worth unbalancing the tree a bit, because the high-level nodes easily fit in memory, so they are not critical. The decompression and parsing the leaf data is.

Is there some technique for splitting so that overlap is minimized?
Yes, there is. It's called OMT, for Overlap Minimizing Top-down, and the first description of the algorithm can be found here: http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-74/files/FORUM_18.pdf