Geocode

A geocode is a code that represents a geographic entity (location or object). It is a unique identifier of the entity, to distinguish it from others in a finite set of geographic entities. In general the geocode is a human-readable and short identifier.

Typical geocodes and entities represented by it: The main examples are ISO codes: ISO 3166-1 alpha-2 code (e.g.   for Afghanistan or   for Brazil), and its subdivision conventions, such as AF subdivision codes  (e.g.   for Ghor province) or BR subdivision codes (e.g.   for Amazonas state).
 * Country code and subdivision code. Polygon of the administrative boundaries of a country or a subdivision.
 * DGG cell ID. Identifier of a cell of a discrete global grid:  a Geohash code (e.g. ~0.023 km2 cell   at the  Brazilian's center) or an OLC code (e.g. ~0.004 km2 cell   at the same point).
 * Postal code. Polygon of a postal area: a CEP code (e.g.   represents a Brazilian's central area for postal distribution).

The ISO 19112:2019 standard (section 3.1.2) adopted the term "geographic identifier" instead geocode, to encompass long labels: spatial reference in the form of a label or code that identifies a location. For example, for ISO, the country name “People's Republic of China” is a label.

Geocodes are mainly used (in general as an atomic data type) for labelling, data integrity, geotagging and spatial indexing.

In theoretical computer science a geocode system is a locality-preserving hashing function.

Classification


There are some common aspects of many geocodes (or geocode systems) that can be used as classification criteria:
 * Ownership: proprietary or free, differing by its licences.
 * Formation: the geocode can be originated from a name (ex. abbreviation of official name the country) or from mathematical function (encoding algorithm to compress latitude-longitude). See geocode system types below (of names and of grids).
 * Hierarchy: geocode's syntax hierarchy corresponding to the spatial hierarchy of its represented entities. A geocode system can hierarchical (name or grid) or non-hierarchical.
 * Covering: global or partial. The entities (represented by the geocodes) are in all globe (e. g. geographical points) or is delimited the theme (e.g. only terrestrial areas) or by the ownership's jurisdiction (e.g. only into a country).
 * Type of the represented entity: type of geometry. Point (the geocode can be translated to a Geo URI), grid cell (the geocode system is related with a DGG) or polygon (typically administrative boundaries delimitations).


 * special hierarchical grids, with global covering and equal-area cells, can be classified as DGGS cell
 * some non-standard geographic entities, can be classified also by its coordinate system and elipsoid of reference (e.g. UTM). The de facto standard is the WGS84.
 * Scope of use: general use vs specialized (e.g. airport geocodes).

Geocode system
The set of all geocodes used as unique identifiers of the cells of a full-coverage of the geographic surface (or any well-defined area like a country or the oceans), is a geocode system (also named geocode scheme). The syntax and semantic of the geocodes are also components of the system definition: In general the semantic can be deduced by its formation or encoding/decoding process. Example: each Geohash code can be expressed by a rectangular area in the map, and the rectangle coordinates is obtained by its decoding process.
 * geocode syntax: the characters that can be used, blocks of characters and its size and order. Example: country codes use two letters of the alphabet (chacacter set A-Z). The most common way to describe formally is by regular expression (e.g. ).
 * geocode semantic: the meaning of the geocode, usually expressed by associating the code with a geographical entity type. Can be described formally is by an ontology, an UML class diagram or any Entity-relationship model.

Many syntax and semantic characteristics are also summarized by classification.

Encode and decode
Any geocode can be translated from a formal (and expanded) expression of the geographical entity, or vice versa, the geocode translated to entity. The first is named encode process, the second decode. The actors and process involved, as defined by OGC, are:


 * geocoder: A software agent that transforms the description of a geographic entity (e.g. location name or latitude/longitude coordinates), into a normalized data and encodes it as a geocode.


 * geocoder service: A geocoder implemented as web service (or similar service interface), that accepts a set of geographic entity descriptors as input. The request is "sent" to the Geocoder Service, which processes the request and returns the resulting geocodes. More general services can also return geographic features (e.g. GeoJSON object) represented by the geocodes.

Note: when a physical addressing schemes (street name and house number) is expressed in a standardized and simplified way, it can be conceived as geocode. So, the term geocoding (used for addresses) sometimes is generalized for geocodes.
 * geocoding: Geocoding refers to the assignment of geocodes or coordinates to geographically reference data provided in a textual format. Examples are the two letter country codes and coordinates computed from addresses.

In spatial indexing applications the geocode can also be translated between human-readable (e.g. hexadecimal) and internal (e.g. binary 64-bit unsigned integer) representations.

Systems of standard names
Geocodes like country codes, city codes, etc. comes from a table of official names, and the corresponding official codes and geometries (typically polygon of administrative areas). "Official" in the context of control and consensus, typically a table controlled by a standards organization or governmental authority. So, the most general case is a table of standard names and the corresponding standard codes (and its official geometries).





Strictly speaking, the "name" related to a geocode is a toponym, and the table (e.g. toponym to standard code) is the resource for toponym resolution: is the relationship process, usually effectuated by a software agent, between a toponym and "an unambiguous spatial footprint of the same place". Any standardized system of toponym resolution, having codes or encoded abbreviations, can be used as geocode system. The "resolver" agent in this context is also a geocoder.

Sometimes names are translated into numeric codes, to be compact or machine-readable. Since numbers, in this case, are name identifiers, we can consider "numeric names" &mdash; so this set of codes will be a kind of "system of standard names".

Hierarchical naming
In the geocode context, space partitioning is the process of dividing a geographical space into two or more disjoint subsets, resulting in a mosaic of subdivisions. Each subdivision can be partitioned again, recursively, resulting in an hierarchical mosaic.

When subdivisions's names are expressed as codes, and code syntax can be decomposed into a parent-child relations, through a well-defined syntactic scheme, the geocode set configures a hierarchical system. A geocode fragment (associated to a subdivision name) can be an abbreviation, numeric or alphanumeric code.

A popular example is the ISO 3166-2 geocode system, representing country names and the names of respective administrative subdivisions separated by hyphen. For example  is Germany, a simple geocode, and its subdivisions (illustrated) are   for Baden-Württemberg,   for Bayern, ...,     for Nordrhein-Westfalen, etc. The scope is only the first level of the hierarchy. For more levels there are other conventions, like HASC code. The HASC codes are alphabetic and its fragments have constant length (2 letters). Examples:


 * - North Rhine-Westphalia. A two-level hierarchical geocode.
 * - Kreis Coesfeld. A 3-level hierarchical geocode.

Two geocodes of a hierarchical geocode system with same prefix represents different parts of the same location. For instance  and   represents geographically interior parts of , the common prefix.

Changing the subdivision criteria we can obtain other hierarchical systems. For example, for hydrological criteria there is a geocode system, the US's hydrologic unit code (HUC), that is a numeric representation of basin names in a hierarchical syntax schema (first level illustred). For example, the HUC   is the identifier of "Pacific Northwest Columbia basin"; HUC   of "Lower Snake basin", a spatial subset of HUC   and a superset of   ("Imnaha River").

Systems of regular grids


Inspired in the classic alphanumeric grids, a discrete global grid (DGG) is a regular mosaic which covers the entire Earth's surface (the globe). The regularity of the mosaic is defined by the use of cells of same shape in all the grid, or "near the same shape and near same area" in a region of interest, like a country.

All cells of the grid have an identifier (DGG's cell ID), and the center of the cell can be used as reference for cell ID conversion into geographical point. When a compact human-readable expression of the cell ID is standardized, it becomes a geocode.

Geocodes of different geocode systems can represent the same position in the globe, with same shape and precision, but differ in string-length, digit-alphabet, separators, etc. Non-global grids also differ by scope, and in general are geometrically optimized (avoid overlaps, gaps or loss of uniformity) for the local use.

Hierarchical grids
Each cell of a grid can be transformed into a new local grid, in a recurring process. In the illustrated example, the cell  is a sub-cell of , that is a sub-cell of. A system of geographic regular grid references is the base of a hierarchical geocode system.

Two geocodes of a hierarchical geocode grid system can use the prefix rule: geocodes with same prefix represents different parts of the same broader location. Using again the side illustration:  and   represents geographically interior parts of , the common prefix.

Hierarchical geocode can be split into keys. The Geohash  is the key   of the cell , that is a cell of   (key  ), and so on, per-digit keys. The OLC  is the key   of the cell , that is a cell of   (key  ), and so on, two-digit keys. In the case of OLC there is a second key schema, after the  separator:    is the key   of the cell. It uses two key schemas. Some geocodes systems (e.g. S2 geometry) also use initial prefix with non-hierarchical key schema.

In general, as technical and non-compact optional representation, geocode systems (based on hierarchical grids) also offer the possibility of expressing their cell identifier with a fine-grained schema, by longer path of keys. For example, the Geohash , which is a base32 code, can be expanded to base4  , which is also a schema with per-digit keys. Geometrically, each Geohash cell is a rectangle that subdivides space recurrently into 32 new rectangles, so, base4 subdividing into 4, is the encoding-expansion limit.

The uniformity of shape and area of cells in a grid can be important for other uses, like spatial statistics. There are standard ways to build a grid covering the entire globe with cells of equal area, regular shape and other properties: Discrete Global Grid System (DGGS) is a series of discrete global grids satisfying all standardized requirements defined in 2017 by the OGC. When human-readable codes obtained from cell identifiers of a DGGS are also standardized, it can be classified as DGGS based geocode system.

Name-and-grid systems
There are also mixed systems, using a syntactical partition, where for example the first part (code prefix) is a name-code and the other part (code suffix) is a grid-code. Example:


 * Mapcode entrance to the elevator of the Eiffel Tower in Paris is, where   is the name-code and   is the grid-code. Semantically France is the context, to obtain its local grid.

For mnemonic coherent semantics, in fine-grained geocode applications, the mixed solutions are most suitable.

Shortening grid-based codes by context
Any geocode system based on regular grid, in general is also a shorter way to express a latitudinal/longitudinal coordinate. But a geocode with more than 6 characters is difficult for remember. On the other hand, a geocode based on standard name (or abbreviation or the complete name) is easier to remember.

This suggests that a "mixed code" can solve the problem, reducing the number of characters when a name can be used as the "context" for the grid-based geocode. For example, in a book where the author says "all geocodes here are contextualized by the chapter's city". In the chapter about Paris, where all places have a Geohash with prefix, that code can be removed &mdash;. For instance Geohash  can be reduced to , or, by an explicit code for context "FR-Paris  ". This is only possible when the context resolution (e.g. translation from "FR-Paris" to the prefix ) is well-known.

In fact a methodology exists for hierarchical grid-based geocodes with non-variable size, where the code prefix describes a broader area, which can be associated with a name. So, it is possible to shorten by replacing the prefix to the associated context. The most usual context is an official name. Examples:

The examples of the Mixed reference column are significantly easier than remembering DGG code column. The methods vary, for example OLC can be shortened by elimination of its first four digits and attaching a suitable sufficiently close locality.

When the mixed reference is also short (9 characters in the second example) and there are a syntax convention to express it (suppose ), this convention is generating a new  name-and-grid geocode system. This is not the case of the first example because, strictly speaking, "Cape Verde, Praia" is not a code.

To be both, a name-and-grid system and also a mixed reference convention, the system must be reversible. Pure name-and-grid systems, like Mapcode, with no way to transform it into a global code, is not a mixed reference, because there is no algorithm to transform the mixed geocode into a grid-based geocode.

In use, general scope
Geocodes in use and with general scope:

In use, alternative address
Geocodes can be used in place of official street names and/or house numbers, particularly when a given location has not been assigned an address by authorities. They can also be used as an "alternative address" if it can be converted to a Geo URI. Even if the geocode is not the official designation for a location, it can be used as a "local standard" to allow homes to receive deliveries, access emergency services, register to vote, etc.

In use, postal codes
Geocodes in use, as postal codes. A geocode recognized by Universal Postal Union and adopted as "official postal code" by a country, is also a valid postal code. Not all postal codes are geographic, and for some postal code systems, there are codes that are not geocodes (e.g. in UK system). Samples, not a complete list:

In use, telephony and radio
Geocodes in use for telephony or radio broadcasting scope:
 * ITU-R country codes
 * ITU-T country calling codes
 * ITU-T mobile calling codes
 * Maidenhead Locator System (used by amateur radio operators)
 * Marsden Squares

In use, others
Geocodes in use and with specific scope:

Other examples
Other geocodes:
 * S2: a geocoding scheme using spherical geometry and the space-filling Hilbert curve, developed at Google
 * H3: Hexagonal Hierarchical Spatial Index a geocoding scheme initially developed at Uber source code available and documented at h3geo
 * Munich Orientation Convention: converts lat/lon to metrical monopolar codes for targets, crossings, stations, stop points, bridges, tunnels, towns, islands, volcanoes, highway exits etc.
 * SALB (Second Administrative Level Boundaries), by UN
 * OpenPostcode, opensource global algorithm (local adaptations as Irish & Hong Kong postcodes).
 * WOEID
 * OpenStreetMap shortlink, used as a short permanent link to map locations
 * Quarter Degree Grid Cells
 * NAC (patended), area codes (area can be indefinitely small)
 * GEOID, the name of United States Census Bureau geographic identifiers.
 * In the United States, the American National Standards Institute (ANSI) Codes are often used. ANSI INCITS 446-2008 is entitled "Identifying Attributes for Named Physical and Cultural Geographic Features (Except Roads and Highways) of the United States, Its Territories, Outlying Areas, and Freely Associated Areas, and the Waters of the Same to the Limit of the Twelve-Mile Statutory Zone".
 * National Topographic System in Canada

Other standards
Some standards and name servers include: ISO 3166, FIPS, INSEE, Geonames, IATA and ICAO.

A number of commercial solutions have also been proposed:


 * WOEID (Where on Earth IDentifier) is a unique 32-bit reference identifier that identifies any feature on Earth.
 * NAC Locator provides a universal geocoding address for all locations on the planet.