
Geohash: text representation allows you to sort locations by proximity - ncw96
http://en.wikipedia.org/wiki/Geohash
======
qwerta
If you like this stuff, have a look at Healpix:
[http://healpix.sourceforge.net/](http://healpix.sourceforge.net/) It splits
sphere into pixels each with separate number. It is sort of fast hashing for
spherical purposes in astronomy. It does not require trigonometric operations
and is very fast.

------
e98cuenc
There is another free library to do that, among other things, by Google. It's
not well known, but it was used all over the place internally (at least by the
geo team).

[https://code.google.com/p/s2-geometry-
library/](https://code.google.com/p/s2-geometry-library/)

The key difference with geohash is that it uses a Hilbert curve instead of a
z-curve and it projects the world in a cube instead of using directly
cartesian coordinates.

------
nroets
It only attempts to "allow you to sort locations by proximity", as explained
in the article.

------
EGreg
Or to get rid of fault lines you can store two geohashes - the second one
shifted so between the two, you can find many more "near points".

That said, geohashes like this are bad because they rely on lat/long without
normalizing for distance first

------
namplaa
When the prefix (or infix) doesn't match for something that is close it looks
like the prefixes are simply inverted. So 10000 and 01111 are obviously close.
I haven't verified.

------
ushi
Ruby implementation:
[https://github.com/davetroy/geohash](https://github.com/davetroy/geohash)

~~~
jamra
Why would you link this?

It wraps around a java jar file. I can't study the code to see how it's
implemented.

~~~
hydrozen
I believe by default it uses the C implementation which you can read here:
[https://github.com/davetroy/geohash/blob/master/ext/geohash_...](https://github.com/davetroy/geohash/blob/master/ext/geohash_native.c)

