Как найти все единицы геохеширования, которые охватывают заданную область (широта/долгота/радиус)

Учитывая, что я знаю широту/долготу местоположения человека, я могу найти геохеш того, где он находится. Но я также хочу найти все геохэши, которые находятся в пределах их «вида».

Итак, если я знаю широту/долготу и радиус, скажем, из карты Google, я хочу знать все геохэши, которые включены в это пространство. Я знаю, что мне придется выбрать несколько единиц. Скажем, 5 единиц, что, по моему мнению, составляет ~ 3803 млн на геохэш.

Есть простой способ сделать это? Я мог бы придумать грубый алгоритм, но у меня недостаточно знаний о геохэшировании, чтобы выполнить каждый шаг.

Допустим, мы находимся в Букингемском дворце (51.501364, -0.141890), и наш «вид» имеет радиус 1 км.

Теоретически я мог бы это сделать. Предположим, у меня есть библиотека, которая может преобразовать широту/долготу в геохеш и наоборот.

  1. Учитывая, что мы знаем центр карты, найдите углы (1 км СЗ, 1 км СВ, 1 км ЮЗ, 1 км ЮВ).
  2. Затем я мог бы рассчитать геохэш верхнего левого угла. ДОБАВЬТЕ ~3803 м на восток, рассчитайте геохеш. Повторяйте до тех пор, пока геохеш не сравняется с геохешем верхнего правого угла.
  3. Затем я мог бы спуститься по правой стороне, делая то же самое, пока не достигну левого нижнего угла. Сделайте то же самое с правой стороны. Затем заполните середину, идя от квадрата ниже левого верхнего угла, идите поперек, пока не дойдете до правой стороны. Вернитесь налево, но на один квартал вниз, и снова пройдите. Назад, пока я, наконец, не достигну известного нижнего правого угла.

Это может сработать, я думаю, это будет медленно и не совсем точно. Я уверен, что есть более простой способ сделать это. Кто-нибудь знает формулу или алгоритм, который мог бы решить эту проблему?

Учитывая широту/долготу и радиус (R), найдите все квадраты геохэша (длиной N), которые покрывают квадрат, края которого находятся на расстоянии R метров от центра (широта/долгота).

Спасибо! Будем очень признательны за любые частичные ответы или помощь/формулы, работающие с геохешированием!


person Peter R    schedule 20.01.2017    source источник
comment
Думаю, ответ на вопрос здесь: stackoverflow.com/questions/36705355/   -  person Ufos    schedule 16.01.2018