Search code examples
data-structuresfractals

Calculate the Hilbert value of a point for use in a Hilbert R-Tree?


I have an application where a Hilbert R-Tree (wikipedia) (citeseer) would seem to be an appropriate data structure. Specifically, it requires reasonably fast spatial queries over a data set that will experience a lot of updates.

However, as far as I can see, none of the descriptions of the algorithms for this data structure even mention how to actually calculate the requisite Hilbert Value; which is the distance along a Hilbert Curve to the point.

So any suggestions for how to go about calculating this?


Solution

  • Fun question!

    I did a bit of googling, and the good news is, I've found an implementation of Hilbert Value.

    The potentially bad news is, it's in Haskell...

    http://www.serpentine.com/blog/2007/01/11/two-dimensional-spatial-hashing-with-space-filling-curves/

    It also proposes a Lebesgue distance metric you might be able to compute more easily.