Consensus Climb & Area Codes
Climbing is growing quickly and guides are fragmenting. An identification scheme would help climbers use multiple guides/platforms and it would encourage platform discovery.
The id scheme should be accurate enough to be helpful, but not so precise that it becomes cumbersome.
For brevity, this refers to Consensus Climb and Area Codes as Coca Codes.
The name Coca Code isn't final and this document is a draft.
Overview
Essentially, Coca Codes are common abbreviations for climbs and climbing destinations.
These codes should meet a few goals:
- Offer concise, transparent identification for climbs and destinations
- Be easily adoptable (e.g., simple, approachable, low-code)
-
Be useful in multiple contexts
- readable and writable by computers and humans
- usable in printed guidebooks and digital guides
- Allow the community to come to a consensus when codes differ
Destination Codes
Destination Codes must be unique within ~200 miles (300 kilometers). This is sufficiently accurate for casual conversation. When prefixed with a 3-character geohash it will be globally unique.
Destination | Code | Near | Plain Text |
---|---|---|---|
Yosemite Valley | YOV | 9qd | 9qd:YOV |
Tuolumne Meadows | TUO | 9qe | 9qe:TUO |
Red Rocks | RED | 9qm | 9qm:RED |
Fontainbleau | FONT | u09 | u09:FONT |
The Gunks | GNX | dr7 | dr7:GNX |
The New River Gorge | NRG | dny | dny:NRG |
The term destination here is used for the idea of a geospatial boundary that organizes climbs. Destinations do not intersect or nest. This is in contrast with an area which, as generally used, is too vague to be practical for our purposes.
Take the The Red River Gorge: from North to South it's about
20 miles,
and it contains smaller regions,
sometimes sub-divided by ownership,
which contain crags,
these can be organized by walls,
and sometimes divided further into sections of walls.
Area/Destination Differences
Climb Codes
Climb Codes should be unique within either 3 miles (5km)
or the destination that the climb is in,
whichever contains more climbs.
This sufficiently precise for casual conversation or use within a guidebook.
Also, when prefixed with a 6-character geohash, it will be globally unique.
Optionally, for improved human friendliness, the parent destination's code can be used.
Climb | Code | Near/In | Plain Text | |
---|---|---|---|---|
Plumber's Crack | PLC | 9qmvtw | 9qmvtw:PLC | |
9qm | RED | 9qm:RED:PLC | ||
Midnight Lightning | MNL | 9qdywq | 9qdywq:MNL | |
9qd | YOV | 9qd:YOV:MNL | ||
The Nose | NOS | 9qdyts | 9qdyts:NOS | |
9qd | YOV | 9qd:YOV:NOS |
Also, see interactive examples
For climbers
For climbing developers
Assuming you have a climb (or destination) and you want a code for it:- check a Coca explorer (and guidebooks) to see if a code already exists
- pick a code
- upload to services or contact guidebook authors
For guidebook authors and platforms
Simplicity is the goal. A TSV documents would be easy to create, share, and use. Generating a TSV is trivial with Excel or any programming language.
Store Coca Codes and Coordinates
Publish Coca Codes
Climbs and Destinations should be listed in a coca-codes.tsv file with five fields:
-
Type this should be either "c" for climb or
d
for destination - Geohash
- Coca Code
- Name
- URL
c 9qdyts NOS The Nose https://www.example.com/climbs/the-nose/ d 9qd YOV Yosemite Valley https://www.example.com/areas/yosemite-valley/
Existing solutions outside of climbing
This the prior art relation to climb identification, globally/universally unique ids, and geospatial identification.
Big Random(ish) Values
- UUIDs
- ULID
- MongoDB's ObjectId
- Youtube IDs (video on capacity)
Geospatial
- geohash
- what3words is interesting, but not applicable to our needs
- Mapcode offers a system that's analagous to ours in a few ways, but is primarily a geocoding system. The Territories page, however, is more relevant.
- plus codes
The article Geocode offers many other options
Other
- Books use the Dewey Decimal Classification and ISBN
- Chemicals have a CAS RN
- Countries use ISO 3166 and ISO 3166-2
Questions, Issues, and Comments
-
The codes should be durable.
- Alabama Hills, in CA is divided between
9qe
and9qs
- Estes Park, in CO is close to both
9xh
and9xj
- Alabama Hills, in CA is divided between
- With using only the delimiter ":", (capitalization aside) it's not immediately obvious whether a code represents a climb or destination.
-
What is a destination?
(e.g., Yosemite National Park, Yosemite Valley, Upper Yosemite Valley, El Capitain)
Does it really matter? What are the consequences? - Can I use 4 letters for a destination? 5 letters?
- Pick letters to reflect spelling or phoenetics? GUNKS vs GUNK vs GNK vs GNX?
- Precision and keyspace
- Is 3 digits precise enough for a destination?
- Is 3 characters enough keyspace for a destination?
jtree has >20,000 routes
(see this citing
this)
Math.pow('abcdefghijklmnopqrstuvwxyz0123456789'.length, 4) == 1679616
Math.pow('abcdefghijklmnopqrstuvwxyz0123456789'.length, 3) == 46656
- Is 6 digits precise enough?
- Are there enough options in three letters?
-
is there a canonical form?
(
{geohash}.{climb code}
vs{geohash}.{destination codes}.{climb code}
) again, what are the consequences of this being unspecificed? - the separator between codes (using ":" for now) (perhaps it should be url friendly since this is intended for apps)
- is there an upper limit on characters?
- is there a lower limit on characters? (see Go! and Go)
- Is Unicode okay? (see MaƱana)