длина и точность строки геохеша

чем больше длина строки геохеша, тем точнее. Но есть ли прямая связь, например, если длина равна 7, она обеспечивает точность 100 метров,

т.е. если два геохеша (и любой из их ограничивающих прямоугольников) имеют первые 7 символов, оба должны быть около 100 метров и т. д.?

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

Также любой прямой способ рассчитать расстояние между двумя гео-хешами? (один из способов - декодировать их в широту / долготу, а затем вычислить расстояние)

Спасибо


person Raxit Sheth    schedule 19.11.2012    source источник
comment
Ни один ответ не дает ответа на вопрос, какая длина струны необходима для преграды в 1 метр.   -  person Atul    schedule 08.07.2015


Ответы (5)


Увидел много путаницы вокруг геохеширования, поэтому пока что публикую свое понимание. Принцип геохеширования очень прост, вы можете создать свою собственную версию. Например, рассмотрим следующую географическую точку,

156.34234534,-23.343423345

В приведенном выше примере 156 представляет градусы, 2 цифры после десятичной дроби (34) представляют десятичную минуту, а отдых (34,5334) представляют секунды.

Если вы помните школьную географию, окружность Земли на экваторе составляет около 40 000 км / с, а количество градусов вокруг Земли (широты или долготы) - 360. Таким образом, в самой широкой точке каждый диапазон широты и долготы равен примерно 110 км (40 000/360). ).

Поэтому, если вы закодируете вышеуказанные координаты как «156-23» (включая отрицательный знак), это даст вам поле (110 км x 110 км).

Вы можете продолжить и увеличить точность, первая цифра минуты (156,3-23,3) даст вам поле (10 км x 10 км) (каждый минутный интервал равен 1 км).

Увеличьте это, чтобы включить первую цифру секунды, которую вы получите (100 м x 100 м), каждая дополнительная цифра будет добавлять точность в другую степень. Геохеширование - это всего лишь способ представить приведенный выше рисунок в закодированной форме. Вы также можете использовать указанный выше формат!

person specialscope    schedule 27.12.2012

Мне самому было любопытно по этому поводу. Если это кому-то полезно, я собрал таблицу

person Jon    schedule 10.05.2014

Вот формулы для высоты и ширины в градусах геохеша длиной n символов:

Сначала определите эту функцию:

четность (n) = 0, если n четно, в противном случае 1

потом

height = 180/2 (5n-четность (n)) / 2 градусов

ширина = 180/2 (5n + четность (n) -2) / 2 градусов

Обратите внимание, что это высота и ширина только в градусах. Чтобы преобразовать это значение в метры, необходимо знать, где на Земле находится хэш.

Код для этого в java находится по адресу http://github.com/davidmoten/geo.

person Dave Moten    schedule 28.06.2013
comment
Я знаю, что этот пост старый, но Google продолжает поднимать этот пост для всего, что связано с 'geohash' и 'precision', так что ... я думаю, что второй forumla неправильный, '-1' должно быть за пределами / 2 , т.е. я думаю, что второй должен быть: width = 180 / (2^(((5n+parity(n))/2)-1)) - person stripybadger; 19.03.2014
comment
Согласен, спасибо! К счастью, код проекта тоже соглашается. Я просто плохо это задокументировал. - person Dave Moten; 21.03.2014
comment
@DaveMoten Как специалист по геохешу, любые мысли по моему вопросу GIS SE - gis.stackexchange.com/questions/333150/? - person gansub; 14.09.2019

Также любой прямой способ рассчитать расстояние между двумя гео-хешами? (один из способов - декодировать их в широту / долготу, а затем вычислить расстояние)

Вот что тебе следует делать. Думайте о геохешах как о еще одном представлении широты и долготы, как и пара напечатанных десятичных чисел. Если бы я дал вам пару строк широты и долготы, вы бы преобразовали их в числа (на выбранном вами языке программирования), а затем выполняли бы вычисления. То же самое и с геохешами - декодируйте по широте и долготе, а затем выполняйте вычисления.

Будьте очень осторожны с любыми рассуждениями, которые вы пытаетесь сделать, делая вывод о близости, основываясь на длине общего префикса между парой точек. Если есть длинный общий префикс, то они близки, но обратное неверно! - т.е. две точки без общего префикса могут находиться на расстоянии миллиметра друг от друга.

person David Smiley    schedule 19.11.2012
comment
Спасибо, Дэвид, есть идеи и по поводу первого запроса? - person Raxit Sheth; 20.11.2012
comment
Используйте таблицу в определении Geohash в Википедии. Раньше я делал формулы Excel, чтобы убедиться в точности, и, думаю, я тоже кодировал на Java. - person David Smiley; 20.11.2012
comment
Вы можете сделать двоичное расстояние. То же самое и на небольших расстояниях. - person Gustav; 21.02.2013
comment
@DavidSmiley Как специалист по геохешу, любые мысли по моему вопросу - gis.stackexchange.com/questions/333150/? - person gansub; 13.09.2019

Вот уравнение (в псевдокоде), которое может приблизительно определить оптимальную длину Geohash для пары широта / долгота с определенной точностью:

geohash_length = FLOOR ( LOG_2(5000000/precision_in_meters) / 2,5 + 1 )
if geohash_length > 12 then geohash_length = 12
if geohash_length < 1 then geohash_length = 1

Я использовал его для создания оптимального Geohash из данных, полученных gpsddaemon, которые также предоставляют информацию о точности через значения epx и epy.

person Dario Fiumicello    schedule 31.03.2016