Geohashes - Почему необходимо чередовать значения индекса?
Я посмотрел на этот пост о геохэшах. Согласно автору, последний шаг в вычислении хэша состоит в чередовании значений индекса x и y. Но действительно ли это необходимо? Есть ли веская причина не просто объединять эти значения, если хеш-таблица построена в соответствии с этим измененным правилом индексации?
2 ответа
Геохэш предлагает свойства, такие как произвольная точность и возможность постепенного удаления символов из конца кода, чтобы уменьшить его размер (и постепенно потерять точность).
Если вы просто объедините координаты x и y, то пользователи будут вынуждены проявлять большую осторожность, пытаясь снизить точность, стараясь убрать точно правильное количество символов из координат x и y.
Есть связанная (и более важная) причина, чем произвольная точность: геохеши с общим префиксом близки друг к другу. Чем длиннее общий префикс, тем ближе они.
54.321 -2.345 has geohash gcwm48u6
54.322 -2.346 has geohash gcwm4958
(См. http://geohash.org/, чтобы попробовать это)
Эта функция обеспечивает быстрый поиск близлежащих точек (хотя есть некоторые сложности) и работает только потому, что мы чередуем два измерения, чтобы получить своего рода приблизительную двумерную метрику близости.
Поскольку запись в википедии продолжает объяснять:
При использовании в базе данных структура данных с географической привязкой имеет два преимущества. Во-первых, данные, проиндексированные с помощью геохеша, будут иметь все точки для данной прямоугольной области в смежных срезах (количество срезов зависит от требуемой точности и наличия "линий разломов" геохеша). Это особенно полезно в системах баз данных, где запросы к одному индексу намного проще или быстрее, чем запросы с несколькими индексами. Во-вторых, эту структуру индекса можно использовать для быстрого и "грязного" поиска близости - самые близкие точки часто находятся среди самых близких геохэш.
Обратите внимание, что обратное утверждение не всегда верно - если две точки лежат по обе стороны от подразделения (например, по обе стороны от экватора), то они могут быть очень близки, но не имеют общего префикса. Отсюда и осложнения, о которых я упоминал ранее.