ISO 6709

ISO 6709, Standard representation of geographic point location by coordinates, is the international standard for representation of latitude, longitude and altitude for geographic point locations.

The first edition (ISO 6709:1983) was developed by ISO/IEC JTC 1/SC 32. Later the standard was transferred to ISO/TC211, Geographic information/Geomatics in 2001. The committee completely revised the second edition (ISO 6709:2008). There was a short technical corrigendum (ISO 6709:2008/Cor 1:2009) released in 2009. The third edition ISO 6709:2022 was published in 2022.

The second edition consists of a main part and eight annexes (Annexes A through H). The main part and Annexes A and C give encoding-independent general rules to define items to specify geographic point(s). Annex D suggests a display style for human interface. Annexes F and G suggest styles of XML expression. Annex H suggests string expression, which supersedes the first edition of the standard.

Items
A geographical point is specified by the following four items:
 * First horizontal position coordinate (ϕ or y), such as latitude (negative number south of equator and positive north of equator)
 * Second horizontal coordinate (λ or x), such as longitude (negative values west of Prime Meridian and positive values east of Prime Meridian)
 * Vertical coordinate, i.e. height or depth (optional)
 * Identification of coordinate reference system (CRS) (optional)

The first three items are numerical values called coordinates. The CRS gives the relationship between the coordinates and a point on the earth. The identification of CRS could be a full description of properties defined in ISO 19111; only an identifier given by some registry (such as EPSG) is used in most cases, since only such identification is enough for most information exchange purposes.

Order, sign, and units
Order, positive direction, and units of coordinates are supposed to be defined by the CRS. When CRS identification is missing, the data must be interpreted by the following conventions:
 * Latitude comes before longitude
 * North latitude is positive
 * East longitude is positive
 * Fraction of degrees (decimal degrees) is preferred in digital data exchange, while sexagesimal notation is tolerated for compatibility

There is no such interpretation rule for vertical coordinates.

Representation at the human interface (Annex D)
When there is no guideline given from the user community, the following styles are suggested:


 * 1) Coordinate values (latitude, longitude, and altitude) should be delimited by spaces.
 * 2) The decimal point is a part of the value, thus must usually be configured by the operating system.
 * 3) Multiple locations should be represented by multiple lines.
 * 4) Latitude and longitude should be displayed by sexagesimal fractions (i.e. minutes and seconds).
 * 5) When minutes and seconds are less than ten, leading zeroes should be shown.
 * 6) Degree, minutes and seconds should be followed by the symbols ° (U+00B0), ′ (U+2032), and ″ (U+2033), without spaces between the number and symbol.
 * 7) North and south latitudes should be indicated by N and S following immediately after the digits.
 * 8) East and west longitudes should be indicated by E and W following immediately after the digits.
 * 9) Units of elevation or depth should be given by symbols, immediately after the digits.
 * 10) Elevation below zero-level reference or depth above reference level should be indicated by a minus sign − (U+2212).

Examples:
 * 50°40′46″N 95°48′26″W 123.45m
 * 50°03′46″S 125°48′26″E 978.90m

The standard does not specify how coordinates at the equator, prime meridian or antimeridian should be written.

XML representation (Annex F)
The XML representation based on the conceptual model of Annex C uses XML namespace http://www.isotc211.org/2006/gpl. However, there is no published XML schema at the time of writing (August 2011).

String expression (Annex H)
A string expression of a point consists of latitude, longitude, height or depth, CRS identifier, and trailing solidus without any delimiting character. When height or depth is used, there must be CRS identifier.

Latitude
Latitude is a number preceded by a sign character. A plus sign denotes northern hemisphere or the equator, and a minus sign  denotes southern hemisphere.

The integer part of the number is a fixed length. The number of digits in that part indicates the units, thus leading zero(es) must be filled when necessary. The fractional part must have the appropriate number of digits to represent the required precision of the coordinate.

Longitude
Longitude is a number preceded by a sign character. A plus sign denotes east longitude or the prime meridian, and a minus sign  denotes west longitude or 180° meridian (opposite of the prime meridian).

Rules about the number of digits are the same as for latitude.

Height or depth

 * When height or depth is present, CRS identifier must follow.
 * Positive direction and units are defined by CRS.
 * Negative number does not necessarily mean position below reference level.
 * Positive is up for height, down for depth.

CRS identifier
The CRS identifier begins with "CRS". There are three styles:


 * 1) When a registry provides online resolver, CRS
 * 2) When a registry is offline, CRSregistry:crsid
 * 3) When the data creator provides full definition of CRS using ISO 19111, CRS

The example of original Annex H always use "CRSWGS_84".

Examples

 * Atlantic Ocean +00-025/
 * France +46+002/
 * Paris +48.52+002.20/
 * Eiffel Tower +48.8577+002.295/
 * Mount Everest +27.5916+086.5640+8850CRSWGS_84/
 * North Pole +90+000/
 * Pacific Ocean +00-160/
 * South Pole -90+000+2800CRSWGS_84/
 * United States +38-097/
 * New York City +40.75-074.00/
 * Statue of Liberty +40.6894-074.0447/

Standards

 * Catalogue entry for ISO 6709:2022 (Edition 3)
 * Final draft of ISO 6709:2008 (archived)
 * Profile by W3C GeoXG

Implementations

 * Point Location 6709 - an open-source Java parser and formatter on GitHub
 * Point Location 6709 - an open-source JavaScript implementation on GitHub
 * C# Implementation at Codeplex
 * Objective-C Implementation on GitHub