From Geo Hashing
Jump to: navigation, search


My graticule is 42, -72 (Springfield, MA, USA). I live in Florence, MA, and work in Brattleboro, VT, commuting twice a week. Very conveniently, this route takes me from the general northern area of the graticule to the general southern area of the graticule.


I've decided that I should not go around driving to geohashes when I already drive enough and really shouldn't incorporate it into a sporting event. In that spirit, I plan to bike or walk to any geohash I can get to without extra driving. This means that on the way back from work one day I might park in Greenfield and walk (or bike) to a nearby geohash, but not drive an extra ten miles. It's a tough decision to make, considering the low hanging fruit (I passed up 2012-03-13 42 -72, a very easy drive from Brattleboro), but it will make the ones I do hit special, and lead to cool things like biking up a quarter mile vertical over a distance of 12 miles.



  • 2012-03-06 42 -72: A drive one hour out of the way on the way home from work, followed by running and walking and being lead astray by the iPhone Google Maps app.
  • 2012-03-21 42 -72: A bike ride from home that ran out of time. It was only 5 miles from home and I missed it!
  • 2013-04-28 42 -72: A 25 mile round-trip bike ride that was thwarted by no trespassing signs.


Alternative Hashing Points[edit]


I've performed the evil craft of mapping out my home's decicule, centicule, and millicule. My intention is that if I know I don't have enough time to get as close as possible to my geohash, I'll go after the decihash. Barring that, I'll go after my centihash. And barring that, I'll try to get to my millihash.

Unlimited Global Ranked Points[edit]

Graticules, decicules and centicules (etc) are really arbitrary in terms of size and location, putting some people at a disadvantage, and discouraging people from chasing down hashes rather than encouraging people to come together over long distances. However, the best thing about them is that they tend to be an accomplishment; you have to wait for the right one, and you may have to brave obstacles to get there. I have an idea that combines both.

It is relatively easy to create an algorithm (and I have an example below) that generates an arbitrary number of points, each placed pseudo-randomly (but deterministically) around the globe. Given any surface of the earth, a sufficient number of iterations of the algorithm can generate a point within it. BUT WAIT, I know what you're saying. Why allow people to arbitrarily choose an area? They could make it as small as they want and in any area they want, which would potentially remove the challenge and disperse people to many different points. That would happen, except the points will be *ranked*.

The points will simply be numbered according to which iteration of the algorithm generated them. The first is 1, the second is 2, etc. The goal is to get the best ranking (the lowest number) that you can, while not limiting you strictly to a huge 100 mile by 100 mile space (approx). You could go for minor or major hashes, and the accomplished hashes for the day could be ranked, and possibly even scored by that rank. The de facto globalhash would be #1. You could make it your goal to try to get a lower number than you have before, and possibly to climb up the ranks of others' personal records. People nearby each other would still try to get to the same points most of the time, because those points would be the lowest number. People who are far away from anyone could either go it alone or expand their radius to include other people.

The biggest downside I can see is that the computation requires a lot more computational power, but without benchmarking I'm not sure what that would be. If you wanted to search within a 10k radius, you'd often have to iterate millions of times. Here's my initial rough outline of a method for getting the points, which could hopefully be improved to something simpler and easier to compute, without losing global randomness, absolute ranking, and determinism.

Use the date and the dow jones to generate a global point, almost the same way you do for a globalhash now, but don't treat the world like a rectangle -- use a method that evenly distributes the probability of a point falling in any two places with the same area. You'll still md5 the date/dow jones, but now you'll map the md5 differently (sorry that I'm too short on time to figure out how that works right now). In order to get successive points after the first, you will continue md5'ing the md5's over and over. Note that doing this a million times may be completely impractical and lend itself to one source calculating and caching many millions and then feeding them to clients either interactively or by just throwing megabytes of data at you. You'll probably not want to bound an area to get a point, but do something more like increase the rank number until you see one nearby, which again is not simple.

In short, this is much more complicated, and a better method would be great, but the result, in my opinion, would be awesome.