Im Februar 2008 stellte Gustavo Niemeyer den Geohash vor und startete geohash.org: ein gemeinfreies Geocode-System, das einen geografischen Standort in eine kurze Zeichenkette aus Buchstaben und Ziffern kodiert. Die Idee war, Koordinaten zu etwas zu machen, das man in einer E-Mail, einer URL oder einem Datenbankschlüssel schreiben kann.

Der Trick liegt in der Hierarchie im Präfix. Ein Geohash verschränkt die Bits von Breiten- und Längengrad und kodiert sie in Base32; jedes zusätzliche Zeichen fügt fünf Bits Präzision hinzu und bezeichnet eine von 32 Unterzellen der vorherigen. Nahe gelegene Orte teilen im Allgemeinen Präfixe, und das Abschneiden von Zeichen am Ende verkleinert die Fläche, während der Code gültig bleibt.

Diese Eigenschaft machte ihn zum Standard. Elasticsearch dokumentiert, dass ein Geo-Punkt als Geohash ausgedrückt werden kann – Base32-Zeichenketten aus verschränkten Breiten- und Längengrad-Bits – und verwendet sie für die Indizierung und Gitter-Aggregationen, sodass eine Umgebungssuche zu einer Zeichenketten-Präfixsuche über einen bereits vorhandenen Index wird.

Eine einzige Zeichenkette, deren Präfix Nähe bedeutet

Die Präfixlänge dient zugleich als Präzision und als Nähe, sodass ein einziges Feld beides leistet.

Eine kurze Zeichenkette ist leichter weiterzugeben als ein Koordinatenpaar.

Bestehende Zeichenketten-Indizes benötigen keine neue Maschinerie, um georäumliche Arbeit zu leisten.

Die gemeinfreie Veröffentlichung beseitigte jeden Lizenzgrund, sie abzulehnen.

Man komprimiere ein zweidimensionales Problem in einen eindimensionalen Schlüssel, und jeder bestehende Zeichenketten-Index wird zu einem räumlichen Index – die Präfixlänge kodiert sowohl Präzision als auch Nähe, sodass keine neue Maschinerie nötig ist.

Geohash wurde zu einer Standardmethode, um Standorte auszudrücken und zu indizieren: Elasticsearch dokumentiert Geohash-Geopunkte und Geohash-Gitter-Aggregationen, und die Zeichenkettenform machte ihn natürlich für Caches, URLs und Datenbankschlüssel. Heute ist er eine der Standardkodierungen hinter georäumlichen Indizes.

DEN BELEGEN FOLGEN

Die Quellen

  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