Open Location Code
The Open Location Code (OLC) is a geocode system for identifying an area anywhere on the Earth. It was developed at Google's Zurich engineering office, and released late October 2014. Open Location Codes are also referred to as "plus+codes".
Open Location Codes are a way of encoding location into a form that is easier to use than providing coordinates in the usual form of latitude and longitude. They are designed to be used like street addresses, and may be especially useful in places where there is no formal system to identify buildings, such a street names, number, and post codes.
Open Location Codes are derived from latitude and longitude coordinates, so they already exist everywhere. They are similar in length to a telephone number -- 849VCWC8+R9, for example -- but can often be shortened to only four or six digits when combined with a locality (CWC8+R9, Mountain View). Locations close to each other have similar codes. They can be encoded or decoded offline, and the character set was chosen to avoid spelling words in more than 30 different languages. Similar looking characters are not used to reduce confusion and errors. The Open Location Code is not case-sensitive, and can therefore be easily exchanged over the phone.
Since August 2015, Google Maps supports plus codes in their search engine.
The Open Location Code system is based on latitudes and longitudes in WGS84 coordinates. Each code describes an area bounded by two parallels and two meridians out of a fixed grid, identified by the South-West corner and its size. The largest grid has blocks of 20 by 20 degrees, and is divided in 20 by 20 subblocks up to four times. From that level onwards division is in 5 by 4 subblocks. The table shows the various block sizes.
|Approximately||2200 km||110 km||5.5 km||275 m||14 m||3m|
The full grid uses offsets from the South Pole (-90°) and the antimeridian (-180°) expressed in base 20 representation. To avoid misreading or spelling objectionable words, the encoding excludes vowels and symbols that may be easily confused with each other. The following table shows the mapping.
|Base 20 digit||0||1||2||3||4||5||6||7||8||9||10||11||12||13||14||15||16||17||18||19|
In the code, each time one digit of latitude and one of longitude alternate. The biggest blocks have just two digits. After 8 digits a plus sign "+" is inserted in the code for recognition. After 10 digits at each subdivision, subblocks are coded in a single code digit as follows:
Consider for example zooming in on the Merlion in Singapore. It lies in the block around the equator bounded by -10° and +10° and between 100° and 120° East. It has offsets 80° from the South Pole and 280° from the anti-meridian, or 4 and 14 as first 20-base digit, coded as 6 and P. Thus the code is 6P. This may be padded as 6P000000+
Now refine this block to a subblock between 1° and 2° N and 103° and 104° E. This adds 11° and 3° to the SW corner. So the 20 base coordinate codes added are H and 5. The result is padded to 6PH50000+.
After 4 refinements one lands on Merlion park as 6PH57VP3+PQ.
The next step takes the rightmost block on the second row from the bottom in this block: 6PH57VP3+PQ9.
Other geocode systems
- See Open Location Code Github and Open Location Code forum.
- The Open Location Code website provides an overview. The document "An Evaluation of Location Encoding Systems" provides a rationale.
- Specification: "Open Location Code: An Open Source Standard for Addresses, Independent of Building Numbers And Street Names"
- Official Blog
- Open Location Code definition