Как найти ближайший геохеш в mysql?

Недавно я использую GeoHash для хеширования парных геокоординат в хеш-значение и сохраняю его в MySQL. Теперь я хочу найти ближайший хэш, учитывая другой хэш. Я заметил, что MYSQL предоставляет структуру BTree для поиска диапазона ближайших хешей с помощью команды «нравится» в SQL-запросе.

Проблема в том, как я мог найти ближайший вместо указания диапазона, поскольку иногда я не знаю диапазона.

Может ли кто-нибудь дать мне подсказку?

Действительно ценю это.


person AI_ROBOT    schedule 07.09.2018    source источник
comment
Вам следует использовать пространственные расширения MySQL, когда Работа с координатами ГИС.   -  person tadman    schedule 07.09.2018


Ответы (1)


QuadTile (или GeoHash?) обратимо превращает широту + долготу в единый номер. Но использовать его для «нахождения ближайшего» становится сложным и запутанным. Почитайте про Z-упорядочение. Насколько я понимаю, вам нужно будет выполнить 4 запроса с ORDER BY и LIMIT; UNION результаты вместе; затем проверьте, какие из них лучше.

Но становится сложно понять, что делать, если попытка не нашла достаточного количества предметов.

SPATIAL индексы обеспечивают более простой способ.

Здесь описан метод эффективного "поиска ближайшего" для большие наборы данных.

person Rick James    schedule 25.09.2018