MobilityDB 1.1

◆ bbox_gist_picksplit_ext()

Datum bbox_gist_picksplit_ext ( FunctionCallInfo  fcinfo,
meosType  bboxtype,
void(*)(void *, void *)  bbox_adjust,
double(*)(void *, void *)  bbox_penalty 
)

Double sorting split algorithm.

The algorithm finds split of boxes by considering splits along each axis. Each entry is first projected as an interval on the X-axis, and different ways to split the intervals into two groups are considered, trying to minimize the overlap of the groups. Then the same is repeated for the Y-axis, and the overall best split is chosen. The quality of a split is determined by overlap along that axis and some other criteria (see bbox_gist_consider_split).

After that, all the entries are divided into three groups:

  1. Entries which should be placed to the left group
  2. Entries which should be placed to the right group
  3. "Common entries" which can be placed to any of groups without affecting of overlap along selected axis.

The common entries are distributed by minimizing penalty.

For details see: "A new double sorting-based node splitting algorithm for R-tree", A. Korotkov http://syrcose.ispras.ru/2011/files/SYRCoSE2011_Proceedings.pdf#page=36