Codificador Decodificador Geohash - Sistema de Grade Espacial

Ferramenta Geohash gratuita: codifique/decodifique códigos geohash, visualize células de grade, encontre vizinhos. Converta coordenadas para geohash.

O que é Geohash?

Geohash é um sistema de geocodificação que codifica coordenadas geográficas (latitude/longitude) em uma string alfanumérica curta. Desenvolvido por Gustavo Niemeyer em 2008, ele divide o mundo em uma grade hierárquica onde cada caractere adiciona precisão à localização.

Um geohash como 'w7p9v0rr' representa uma área retangular específica na Terra. Quanto mais longo o geohash, menor e mais precisa a área. Isso torna o geohash perfeito para buscas de proximidade, indexação espacial e consultas baseadas em localização em bancos de dados.

Recursos principais do Geohash:

  • Estrutura hierárquica: Strings mais longas representam áreas menores dentro de maiores
  • Propriedade de proximidade: Geohashes similares estão geograficamente próximos (com algumas exceções)
  • Fácil de usar: Comparação simples de strings para verificações aproximadas de proximidade
  • Amigável a banco de dados: Pode ser indexado como strings para consultas espaciais rápidas
  • Seguro para URL: Usa caracteres base-32 (0-9, a-z excluindo a, i, l, o)

Geohash é amplamente usado em serviços baseados em localização, bancos de dados NoSQL (MongoDB, Redis) e aplicações de mapeamento para gerenciamento eficiente de dados espaciais.

Como Funciona o Geohash

Geohash usa um sistema de codificação base-32 que progressivamente divide a Terra em células retangulares menores. Cada caractere na string geohash representa um passo nesta subdivisão hierárquica:

Níveis de precisão e tamanhos de célula:

  • 1 caractere: ~5.000km × 5.000km (nível continental)
  • 3 caracteres: ~156km × 156km (nível de cidade)
  • 5 caracteres: ~5km × 5km (bairro)
  • 7 caracteres: ~150m × 150m (nível de rua)
  • 9 caracteres: ~5m × 5m (nível de edifício)
  • 12 caracteres: ~4cm × 2cm (precisão sub-métrica)

Processo de codificação:

O algoritmo alterna entre bits de longitude e latitude, dividindo o espaço de coordenadas pela metade com cada bit. A cada 5 bits são codificados como um único caractere base-32, construindo a string geohash da esquerda para direita.

Encontrando vizinhos:

Geohash fornece pesquisa eficiente de vizinhos calculando células de grade adjacentes. Isso é útil para consultas de 'encontrar localizações próximas', embora casos de borda exijam tratamento especial.

Casos de Uso para Geohash

Geohash é essencial em várias aplicações baseadas em localização:

  • Busca de Proximidade: Encontre pontos de interesse próximos dentro de um prefixo geohash
  • Indexação Espacial: Organize dados de localização em bancos de dados para consultas rápidas
  • Agrupamento: Agrupe localizações próximas truncando a precisão do geohash
  • Cache: Use geohash como chaves de cache para dados baseados em localização
  • Encurtamento de URL: Compartilhe localizações aproximadas em URLs curtas
  • Fragmentação de Banco de Dados: Distribua dados de localização entre servidores por prefixo geohash

Geohash vs Outros Sistemas

Comparando Geohash com outros sistemas de geocodificação:

  • Geohash vs Lat/Lon: Mais compacto, mais fácil de pesquisar por prefixo, mas menos preciso
  • Geohash vs QuadKeys: Conceito similar, mas codificação diferente (base-32 vs base-4)
  • Geohash vs Plus Codes: Geohash usa precisão variável, Plus Codes têm formato fixo
  • Geohash vs H3: H3 usa hexágonos (melhor forma), geohash usa retângulos (mais simples)

Escolha geohash para indexação de banco de dados e buscas de proximidade baseadas em prefixo. Use outros sistemas quando precisar de códigos legíveis por humanos (Plus Codes) ou melhores propriedades espaciais (H3).

Trabalhando com Vizinhos

Geohash fornece 8 células vizinhas (N, NE, E, SE, S, SW, W, NW) para cada localização. Isso é útil para expandir áreas de pesquisa:

  • Proximidade simples: Consulte o geohash principal e seus 8 vizinhos (9 células no total)
  • Casos de borda: Localizações próximas a limites de células podem exigir verificações de vizinhos
  • Busca de raio: Use múltiplos níveis de precisão e vizinhos para áreas circulares
  • Atualizações em tempo real: Monitore mudanças de geohash conforme objetos se movem entre células

Note que vizinhos geohash não lidam perfeitamente com todos os casos de borda (especialmente em limites de longitude), então cálculos de distância ainda podem ser necessários para consultas de proximidade precisas.

About Codificador Decodificador Geohash - Sistema de Grade Espacial

Geohash Encoder Decoder transforma latitude/longitude nas strings alfanuméricas curtas ("w7p9v0rr") usadas por Redis GEO, MongoDB, Cassandra e outros bancos de dados para consultas de proximidade rápidas. Codifique um ponto na precisão 1-12 para obter o geohash mais sua caixa delimitadora, tamanho de célula e as 8 células vizinhas (a famosa cobertura de 9 células para consultas de proximidade), ou decodifique um geohash existente de volta para coordenadas. Criado para engenheiros backend construindo funcionalidades de 'encontrar próximos', engenheiros de dados indexando telemetria IoT, plataformas de ride-sharing e delivery particionando dados de localização por prefixo, e qualquer um explorando indexação espacial. Copie as 9 células como CSV para uso direto em cláusulas SQL WHERE. Experimente também Distância e Rumo e Validador GeoJSON.

Perguntas frequentes

Geohash é um sistema hierárquico de indexação espacial inventado por Gustavo Niemeyer em 2008 que codifica um par latitude-longitude numa string alfanumérica curta como "u4pruydqqvj". Cada caractere adicional multiplica a precisão por cerca de 32 — 5 caracteres ≈ ±2,4 km, 7 ≈ ±76 m, 9 ≈ ±2,4 m, 11 ≈ ±7 cm. Strings que compartilham prefixo representam localizações próximas, o que torna geohash extremamente útil para indexação espacial em bancos (Redis GEOADD, MongoDB 2dsphere, Cassandra), consultas de proximidade, deduplicação de pontos GPS próximos e compartilhamento de localizações em URLs amigáveis. A desvantagem: as células não são quadradas (são 2× mais altas que largas em certos níveis) e proximidade por prefixo quebra nas bordas — dois pontos a 1 metro podem ter prefixos diferentes se estiverem em lados opostos de uma fronteira.

O geohash divide a Terra recursivamente em grades de 32 células (usando base-32 com o alfabeto 0123456789bcdefghjkmnpqrstuvwxyz — note ausência de a, i, l, o para evitar confusão visual). Cada caractere adiciona 5 bits, alternando entre refinamento de longitude e latitude, então dimensões de célula alternam entre proporções 2:1 e 1:1. Tamanhos aproximados no equador: comprimento 1 = 5.000 × 5.000 km, comprimento 2 = 1.250 × 625 km, comprimento 3 = 156 × 156 km, comprimento 4 = 39 × 19,5 km, comprimento 5 = 4,9 × 4,9 km, comprimento 6 = 1,2 × 0,61 km, comprimento 7 = 153 × 153 m, comprimento 8 = 38,2 × 19,1 m, comprimento 9 = 4,8 × 4,8 m, comprimento 10 = 1,2 × 0,6 m, comprimento 11 = 15 × 15 cm, comprimento 12 = 3,7 × 1,8 cm. Células encolhem com cosseno da latitude na dimensão de longitude.

É o famoso "efeito de borda". Dois pontos a 1 metro podem cair em células diferentes se uma fronteira de geohash passa entre eles — e células adjacentes frequentemente compartilham apenas 1 caractere ou nenhum. O pior caso é no equador e no meridiano de Greenwich, onde os quatro quadrantes (norte/sul e leste/oeste) começam todos com caracteres distintos (s, t, e, k ou similares). Sistemas em produção contornam isso consultando não só seu geohash mas também os 8 vizinhos (N, S, L, O e quatro diagonais), depois filtrando por distância exata. Bibliotecas como `geohash-neighbours` ou `nodejs-geohash` te dão os 8 vizinhos diretamente. A mesma correção se aplica a curvas Z-order e Hilbert — qualquer curva preenchedora 1D tem esse problema de descontinuidade.

Quatro índices espaciais modernos resolvem problemas sobrepostos de formas diferentes. Geohash (Niemeyer 2008): string base-32, células retangulares, proximidade por prefixo, simples e ubíquo, problemas de borda. Plus Codes/Open Location Code (Google 2015): projetado para uso humano, formato tipo código de área "6PR599X8+8H", integrado no Google Maps, não requer referência de país. H3 (Uber 2018): células hexagonais em 16 resoluções, distância de vizinhos uniforme (sempre 6 vizinhos), excelente para matching de ride-share e análise de fluxos, saída inteira 64-bit ou string. S2 (Google, usado em BigQuery e Bing): células hierárquicas de curva Hilbert sobre esfera, 30 níveis, células aproximadamente equiárea, usado em YouTube/Google. Geohash para sharding chave-valor simples, H3 para analítica, S2 para indexação global, Plus Codes para endereçamento — escolha pelo caso de uso.

Um quadkey é o esquema de indexação por trás do Bing Maps da Microsoft e da maioria dos servidores de tiles Web Mercator. Cada nível subdivide o mundo em 4 quadrantes (Q1-Q4) numerados 0-3, então um quadkey é uma string de dígitos 0-3 como "02313011120". Geohash usa base-32 (5 bits por caractere) e alterna refinamento lat/lon; quadkey usa base-4 (2 bits por caractere) e aplica ambos simultaneamente, dando células quadradas na projeção Web Mercator. Conversão: 1 caractere geohash = 2,5 caracteres quadkey (5 bits ÷ 2 bits). Quadkeys mapeiam diretamente para tiles de mapa em níveis de zoom 1-23 (zoom = comprimento do quadkey), por isso toda URL de tile de mapa web tem essa estrutura. Geohash é puramente codificação de coordenada sem relação com servidor de tiles. Ambos compartilham a propriedade de prefixo = célula ancestral.

Padrão padrão: calcule o geohash do centro de busca numa precisão que combine com seu raio (ex.: precisão 6 ≈ células de 1,2 km, bom para raios de 1-2 km), encontre as 8 células vizinhas, faça consulta SQL ou NoSQL para linhas cujo geohash armazenado comece com qualquer um desses 9 prefixos, depois pós-filtre por distância haversine exata para remover falsos positivos nos cantos. Redis simplifica com `GEOSEARCH ... BYRADIUS` (que usa geohash internamente). PostGIS oferece `ST_DWithin` em colunas `geography`, mais preciso mas mais lento. Para 1 milhão de pontos e consultas de 1 km, a abordagem por prefixo geohash costuma ser 10-100× mais rápida que bounding box + índice espacial em cargas de leitura intensa. Só não esqueça da expansão de 8 vizinhos — sem ela você perde 30-50% dos resultados próximos perto das bordas.

O alfabeto é 0123456789bcdefghjkmnpqrstuvwxyz — 32 caracteres escolhidos para evitar pares visualmente ambíguos em código escrito ou digitado. Letras excluídas: a (confundível com o em algumas fontes), i (com 1, l, |), l (L minúscula parece 1 e I), o (parece 0). Isso torna geohashes seguros para ditado por telefone e amigáveis a OCR. Por que base-32 em vez de base-16 ou base-64? Cinco bits por caractere é o ponto doce: cada caractere refina precisão por 32×, alternando 2-3 bits entre lat e lon, dando células aproximadamente quadradas na maioria das precisões e strings legíveis de 6-12 caracteres para usos típicos. Base-64 comprimiria mais mas introduz sensibilidade a caixa e complicações de URL-encoding. A variante Geohash-36 (alfabeto diferente) existe mas nunca deslocou a codificação Niemeyer original.

Três fraquezas reais. Primeira, forma de célula não uniforme: células de longitude encolhem perto dos polos (uma célula nível 7 é 153×153 m no equador mas só 76×153 m a 60° de latitude), quebrando a suposição de comprimento de prefixo = distância de chão constante. Segunda, efeito de borda: células adjacentes podem compartilhar zero caracteres, então proximidade por prefixo precisa de expansão de 8 vizinhos. Terceira, singularidades de antimeridiano e polo: codificação falha ou produz saltos estranhos perto de ±180° longitude e ±90° latitude. Evite geohash para ciência polar, planejamento de voo transpolar ou aplicações precisando de distância de vizinho constante — use H3 (hexágonos uniformes, 6 vizinhos equidistantes em toda resolução) ou S2 (quadrados equiárea sobre esfera). Para e-commerce global, ride-share e analítica móvel, geohash ainda é excelente porque a maior parte da população vive entre 60° S e 60° N onde suas excentricidades são menores.
Codificador Decodificador Geohash - Sistema de Grade Espacial — Ferramenta Geohash gratuita: codifique/decodifique códigos geohash, visualize células de grade, encontre vizinhos. Conve
Codificador Decodificador Geohash - Sistema de Grade Espacial