The specific geohash.org
seems to put stuff in a database. Perhaps the first few characters are used for rough location and to use for database sharding.
More generally, a human-readable code that points to a place or a region can try to fulfil different use cases.
Easy to write down with a pencil => 1 and O o 0 etc go away
Easy to write on a machine => some special characters go away
Easy to write on a mobile => prefer small letters a-z and some punctuation, avoid numbers and most special characters
To further support mobile users, it helps a bit if numbers are grouped together rather than interleaved with a-z/punctuation.
Easy to read => i and L, 0, 5 go away.
For use in speech, 1 and i and L can be allowed.
Need to avoid confusion with existing schemes (postal codes)?
Need to detect mistakes? Checksum it somewhere -- and perhaps rather have checking bits interleaved instead of at the end. Any checking above "characters left of checking bit are X% likely to be correct yes/no" would probably require too much space, and should thus go at the end if at all used. The best error correction / checking is achieved with an open phone line between sender and deliverer, so maybe just add a phone number (without typing errors!) at the end. That also helps in case of locked gates, guards, dogs etc.
What is the use for nearby places having similar codes?
- Maybe to let people do a partial decode in their head, and for differential coding? Every second character could be coding northing and easting and alphabetically sorted, allowing people to navigate a 2d space only by knowing the sort order and moving gradually towards the wanted code. There is also https://en.wikipedia.org/wiki/Z-order_curve
which forces use of a tool to calculate location.
- If neighbours should not have similar (to human eye - "postcode envy"), then probably mix major and minor bits of a coordinate and prohibit database lookups.
If linearity in encoding is not needed, or if only locations in the civilised parts of the world need to be encoded, then population density (or a proxy thereof) can be used to guide where areas should be subdivided.
If areas and from-A-to-B, height over land or over sea, time and date should be possible to record then it gets even more interesting. But maybe one could have most of this at once? A coding scheme that lets the user delete (or truncate or loose) from the right so i.e. the leftmost 4-6 characters are enough to know the location roughly and then you'd be able to ask around from there.
(If you want to slow down businesses and cause legal and regulatory disaster, use a database-based, no-checksum, generally just really bad "solution" like the proprietary proposed post code system for Ireland. But really, please don't)