En febrero de 2008, Gustavo Niemeyer presentó el geohash y lanzó geohash.org: un sistema de geocodificación de dominio público que codifica una ubicación geográfica en una cadena corta de letras y dígitos. La idea era convertir las coordenadas en algo que se pudiera escribir en un correo electrónico, una URL o una clave de base de datos.

El truco está en la jerarquía del prefijo. Un geohash intercala los bits de latitud y longitud y los codifica en base32; cada carácter adicional añade cinco bits de precisión e identifica una de las 32 subceldas de la anterior. Las ubicaciones cercanas generalmente comparten prefijos, y recortar caracteres del final reduce el área sin dejar de ser un código válido.

Esa propiedad es lo que lo convirtió en un estándar. Elasticsearch documenta que un geo-point puede expresarse como un geohash —cadenas base32 de bits intercalados de latitud y longitud— y los utiliza para la indexación y las agregaciones de cuadrícula, de modo que una búsqueda por proximidad se convierte en una búsqueda por prefijo de cadena sobre un índice que ya existe.

Una sola cadena cuyo prefijo significa proximidad

La longitud del prefijo sirve a la vez como precisión y como proximidad, así que un solo campo hace ambas cosas.

Una cadena corta es más fácil de compartir que un par de coordenadas.

Los índices de cadenas existentes no necesitan nueva maquinaria para hacer trabajo geoespacial.

La publicación en dominio público eliminó cualquier razón de licencia para rechazarlo.

Comprime un problema bidimensional en una clave unidimensional y todo índice de cadenas existente se convierte en un índice espacial: la longitud del prefijo codifica tanto la precisión como la proximidad, así que no se necesita nueva maquinaria.

El geohash se convirtió en una forma estándar de expresar e indexar ubicaciones: Elasticsearch documenta los geopuntos geohash y las agregaciones de cuadrícula geohash, y la forma de cadena lo hizo natural para cachés, URL y claves de bases de datos. Ahora es una de las codificaciones predeterminadas detrás de los índices geoespaciales.

CONSULTA LAS PRUEBAS

Las fuentes

  1. Geohash (lat/lon encoding) Movable Type Scripts · movable-type.co.uk
  2. Geo-point field type Elastic · elastic.co
  3. Geohash Wikipedia · en.wikipedia.org