Пространственный индекс на основе Z-order curve
Добавлено: 30 апр 2015, 18:20
Здравствуйте, такой вопрос где ни будь есть в открытом доступе примеры использования Z-order (http://en.wikipedia.org/wiki/Z-order_curve) для пространственного индексирования на С/С++/С# или JAVA языках.
Мне понравилась сама идея использовать "пространственную кривую", я реализовал для точек следующим образом взял B+ дерево у которого ключом является значение Z. И пространственный "прямоугольный" запрос выглядит следующим образом есть прямоугольник с координатами X1Y1 (нижний левый), X2Y2(правый верхний) и нужно найти точки которые он охватывает. Я ищу по дереву все точки которые удовлетворяю следующему условию:
Z(X1, Y1) <= Z (X, Y) <= Z(X2, Y2).
И все хорошо работает, нужные точки попадают в запрос, но выяснилась неприятная особенность, Z кривая имеет большие протяжки, и при "удачном" запросе можно прочитать очень много лишнего. Сейчас пробую решать путем "разрезания" запроса на мелкие под запросы, но возможно где то уже решили данную проблему.
Мне понравилась сама идея использовать "пространственную кривую", я реализовал для точек следующим образом взял B+ дерево у которого ключом является значение Z. И пространственный "прямоугольный" запрос выглядит следующим образом есть прямоугольник с координатами X1Y1 (нижний левый), X2Y2(правый верхний) и нужно найти точки которые он охватывает. Я ищу по дереву все точки которые удовлетворяю следующему условию:
Z(X1, Y1) <= Z (X, Y) <= Z(X2, Y2).
И все хорошо работает, нужные точки попадают в запрос, но выяснилась неприятная особенность, Z кривая имеет большие протяжки, и при "удачном" запросе можно прочитать очень много лишнего. Сейчас пробую решать путем "разрезания" запроса на мелкие под запросы, но возможно где то уже решили данную проблему.