Também disponível em: English · Español · Français · العربية
Conversor de geohash
Codifique e decodifique geohashes, veja a célula que cada um nomeia e obtenha as oito células vizinhas necessárias para uma busca por proximidade.
O que é um geohash
Um geohash escreve uma latitude e uma longitude como uma única string curta, tipo u09tunquc. Ele funciona partindo o mundo ao meio repetidamente: o ponto está na metade leste ou na oeste, na norte ou na sul, alternando entre os dois eixos. Cada resposta é um bit, os bits são agrupados de cinco em cinco, e cada grupo vira um caractere de um alfabeto de trinta e dois.
Como a divisão é progressiva, um hash mais curto nomeia uma caixa maior. Quatro caracteres cobrem uns vinte quilômetros; nove, poucos metros. E o decisivo: truncar um hash dá exatamente o hash do mesmo lugar naquela precisão menor. u09tunquc está sempre dentro de u09tun, que está sempre dentro de u09.
Essa última propriedade é a razão de o geohash ser usado. Ela significa que um índice de texto comum consegue responder a uma pergunta espacial: para achar coisas perto de um ponto, procure linhas cujo geohash comece com o mesmo prefixo. Sem banco espacial, sem índice especial, só uma coluna de texto e um LIKE. O alfabeto deixa de fora a, i, l e o pelo mesmo motivo que um CEP: são os caracteres que as pessoas leem errado.
Como usar
- Digite coordenadas, ou cole um hash. As duas direções funcionam. Entre os lugares está o Polo Norte, que é onde cálculos de vizinhas costumam quebrar.
- Escolha um comprimento. O painel mostra a célula que o hash nomeia, seus limites e o tamanho real em metros naquela latitude — as células ficam mais estreitas na direção dos polos enquanto a altura não muda.
- Leve as vizinhas junto. A grade mostra as oito células que encostam na sua. Para uma busca por proximidade você precisa das nove, e a seção abaixo é a medição que explica por quê.
O truque do prefixo só vale num sentido
Dois geohashes que compartilham um prefixo estão mesmo perto — essa direção é garantida pela construção, e é o que faz a técnica funcionar. O contrário não vale, e é aí que buscas por proximidade com geohash falham em silêncio. Dois pontos podem estar a um metro e não compartilhar prefixo nenhum, se a borda de uma célula passar bem entre eles.
O jeito de sempre é contar a versão dramática: a um metro, nada em comum. É verdade e também é raro — medido sobre pares aleatórios, pontos a 100 metros não compartilham nada em cerca de 0,01% das vezes, um em dez mil. Citar esse número faz o problema parecer um caso extremo que dá para ignorar.
O custo real é bem maior e totalmente sistemático. Medimos o que uma busca de uma célula só realmente encontra: dos pontos que estão de fato a menos de 300 metros, uma consulta por prefixo de seis caracteres devolve 68,9%. Com sete caracteres e 60 metros, 65,8%. Com cinco e 1500 metros, 72,6%. Em todos os casos falta cerca de um terço das vizinhas, porque estão do outro lado de uma borda — não um em dez mil, mas um em três.
O conserto é a grade desta página. Busque a célula e as oito vizinhas e a mesma medição devolve mais de 99%. É por isso que qualquer uso sério de geohash para proximidade calcula as vizinhas, e por isso uma ferramenta que só codifica te dá metade do que você precisa.
Limites honestos e como isto foi conferido
As células não são quadradas nem têm todas o mesmo tamanho. Uma célula de geohash é um retângulo em graus, então sua largura em metros encolhe conforme você se afasta do equador enquanto a altura não muda. A ferramenta informa as duas na latitude que você está olhando, em vez de um número global, e em latitudes altas a diferença é enorme.
As vizinhas são calculadas geometricamente: decodifica-se a célula até seus limites, sai-se uma célula inteira e codifica-se de novo. Isso é demonstrável a partir do codificador em vez de copiado das tradicionais tabelas de borda em base 32, e torna as extremidades testáveis. Ao norte da fileira de cima e ao sul da de baixo realmente não há vizinha, e a ferramenta não devolve nada em vez de dar a volta no planeta. Leste e oeste dão a volta, porque a longitude dá.
As conferências de correção são estruturais e não uma tabela de respostas esperadas, já que geohash não tem um documento normativo único. Cinco mil pontos aleatórios passam por codificar e decodificar e caem dentro da célula que o próprio hash nomeia; truncar um hash equivale a codificar naquela precisão, sobre dois mil pontos em todos os comprimentos; e a relação de vizinhança é simétrica, então a célula a leste da minha me tem como vizinha oeste. Os números acima são recalculados pela suíte de testes em vez de aceitos como constantes.
O que não faz: não vai dizer a distância entre dois hashes, porque um prefixo em comum limita isso apenas de forma frouxa, e não desenha mapa — o que significaria buscar tiles do servidor de outra pessoa e contar a ela onde você está olhando.
Por que é grátis?
São deslocamentos de bits sobre dois números, rodando no seu navegador. Não há servidor, nem tile de mapa, nem conta.
Nada do que você digita é enviado, guardado ou registrado — e vale dizer com clareza, porque a entrada é uma localização.