Jump to content

Geohash-36

From Wikipedia, the free encyclopedia

TheGeohash-36geocodeis anopensourcecompression algorithm for world coordinate data. It was developed as a variation of theOpenPostcodeformat developed as a candidategeolocationpostcode for the Republic of Ireland.[1]It is calculated differently and uses a more concisebase 36representation rather than othergeocodesthat adoptedbase 32.[2]

Despite the name, there arenoalgorithmic(not useZ-order curve) ortypologicalrelationship withGeohash.It is a publicity strategy to relate to a popular geocode of base 32. The encode/decode functions are not mathematically-similar to Geohash functions.

Coding Method[edit]

Designed forURLsand electronic storage and communication rather than human memory and conversation, it is case-sensitive, using a 36 character Alpha bet: "23456789bBCdDFgGhHjJKlLMnNPqQrRtTVWX".

Character Conversion:

Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Geohash-36 2 3 4 5 6 7 8 9 b B C d D F g G h H
Decimal 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Geohash-36 j J K l L M n N P q Q r R t T V W X

Characters are chosen to avoidvowels,vowel-like numbers, character confusion, and to use lowercase characters which are generally distinct from their uppercase equivalents in standard typefaces.

The code can be of varying length and thus precision. Each character represents a further subdivision in a 6 by 6 grid - starting at the North-West (top-left) coordinate and continuing, row by row, to the South-East (bottom-right). Neighbouring coordinates have largely similar encodings and generally vary at the rightmost characters only; however extremeedge casesexist where neighbouring coordinates are on opposing sides of a grid division. Codes sort logically but not in ordinary coordinate order.

Without vowels, unintended English-language words are avoided that may appear in the original Geohash code. As vowels are not used, an altitude component of encoded meters is optional with a prefi xing "A" character (below sea-level prefixed by a lowercase "a" ).

An optionalchecksumis represented using the lowercase English Alpha bet. It confirms the code as a Geohash-36 and provides a check for incorrect or transposed characters. It is calculated asmodulus26 of the sum of each character value (the altitude delimiters of "A" or "a" are valued at zero) multiplied by its position reading from left to right.

Efficiency[edit]

Compared to storing GPS coordinates using theDecimaldatatype inSQLthe Geohash-36 does not save significantly on database bytes. Using DECIMAL(8,5) and DECIMAL(7,5) requires 10-bytes[3]and is accurate to about 1.1 metre squared (or better further from the equator). An equivalent 10-bytes of the Geohash-36 code is accurate to approximately a 6th of square meter.[4]

TheStatue of Liberty,at coordinates 40.689167, −74.044444, is encoded as 9LVB4BH89g-m. The reverse decoding equates to 40.689168,−74.044445.

TheShardbuilding, London, at coordinates 51.504444, −0.086667 is encoded as bdrdC26BqH-m (decodes to 51.504444, −0.086666), or may be successfully shorted to bdrdC26B.[5]

Implementations[edit]

C[edit]

Ruby[edit]

  • 'Geohash36'– a Ruby implementation of the Geohash-36 algorithm.

See also[edit]

References[edit]

  1. ^"DCENR Postcodes".Retrieved26 June2012.
  2. ^"Geohash Tips & Tricks".Retrieved26 June2012.
  3. ^"MSDN" decimal and numeric (Transact-SQL) "".Retrieved26 June2012.
  4. ^"Geohash-36".Archived fromthe originalon 27 December 2012.Retrieved26 June2012.
  5. ^"Geo36.org".Retrieved26 June2012.

6.^ "Geohashes"[1].Retrieved 05 June 2024.