A Uniform Resource Identifier for Geographic Locations ('geo' URI)
nic.at GmbH
Karlsplatz 1/9
Wien
A-1010
Austria
+43 1 5056416 34
alexander.mayrhofer@nic.at
http://www.nic.at/
OIR-ID GmbH
Franz-Josefs-Kai 27
Wien
A-1010
+43 1 5338747 36
spanring@oir.at
http://www.oir.at/
RAI
GEOPRIV -- Geographic Location/Privacy Working Group
geography
geo
URI
scheme
This document specifies an Uniform Resource Identifier (URI)
for geographic locations using the 'geo' scheme name. A 'geo'
URI identifies a physical location by latitude, longitude and
optionally altitude in a compact, simple, human-readable, and
protocol independent way.
[Note to editors: This section is to be removed before publication - XML source available on request]
draft-mayrhofer-geopriv-geo-uri-01
added terminology text about WGS-84 (credits Carl Reed)
removed "resolution" / "uncertainty" text
added considerations regarding poles
added text about invalid URIs
draft-mayrhofer-geopriv-geo-uri-00
Initial version under new name, reverting to "plain" lat/lon
scheme, with the "tiling" scheme moved to seperate draft
(potentially published as "draft-mayrhofer-geopriv-geotile-uri").
refer to draft-mayrhofer-geo-uri-01 for the history of this
document.
Added GML mapping section
draft-mayrhofer-geo-uri-01
removed parameters
draft-mayrhofer-geo-uri-00
initial draft
An increasing number of Internet protocols and data formats are
extended by specifications for adding spatial
(geographic) location. In most cases, latitude as well as
longitude of simple points are added as new attributes to existing data structures.
However, all those methods are very specific to a certain data format
or protocol, and don't provide a protocol independent, compact and
generic way to refer to a physical geographic location.
Over the past few years, fast emerging location aware applications
and location based services were observable on the Internet.
Most web search engines use geographic information, and a vivid
open source mapping community brought an enormous momentum into
location aware
technology. A wide range and former to professionals exclusive
tools and data were provided free of charge for an everyday use
on the mass market.
The 'geo' URI scheme is another step into that direction and aims
to facilitate, support and standardize the problem of location
identification
in geospatial services and applications. Accessing information about
or trigger further services based on a particular place on earth
shouldn't be any harder for users than clicking on a 'mailto:' link
and write an email straight away.
According to , a Uniform Resource Identifier (URI)
is "a compact sequence of
characters that identifies an abstract or physical resource". The
'geo' URI scheme defined in this document identifies geographic
locations (a physical resource) in the
World Geodetic System 1984 (WGS-84)
reference system.
'Geo' URIs identify a geographic location using a
textual representation of the location's spatial coordinates in
either two or three dimensions (latitude, longitude, and optionally
altitude). Such URIs are independent from a specific protocol,
application, or data format, and can be used in any other protocol
or data format that supports inclusion of arbitrary URIs.
The definition of the URI scheme is strictly focused on the most
simplest representation of a spatial location - a single point. The
provision of more complex geometries or locations described by
civic addresses is out of scope of this document.
Note: The choice of WGS-84
is based on the widespread availability of Global Positioning System
(GPS) devices, which use the WGS-84 reference system. It is anticipated
that such devices serve as one of the primary data sources for authoring
'geo' URIs, hence the adoption of the native GPS reference system
for the URI scheme. Also, many other data formats for representing
geographic locations use the WGS-84 reference system, which makes
transposing from and to such data formats less error prone (no
re-projection involved).
Geographic locations in this document are defined using WGS 84 (World Geodetic System 1984), equivalent to the OGP Surveying and Positioning Committee EPSG code 4326 (2 dimensions) and 4979 (3 dimensions). This document does not assign responsibilities for coordinate transformations from and to other Spatial Reference Systems.
A 2-dimensional WGS-84 coordinate value is here represented as a comma-delimited latitude/longitude pair, measured in decimal degrees (un-projected). A 3-dimensional WGS-84 coordinate value is here represented by appending a comma-delimited altitude value in meters to such pairs.
Latitudes range from -90 to 90 and longitudes range from -180 to 180. Coordinates in the Southern and Western hemispheres as well as altitudes below the WGS-84 reference geoid are signed negative with a leading dash.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
this document are to be interpreted as described in
RFC 2119.
This section contains the fields required for the URI scheme
registration, following the guidelines in section 5.4 of
.
The syntax of the 'geo' URI scheme is specified below in
Augmented Backus-Naur Form (ABNF)
:
geo-URI = geo-scheme ":" geo-path
geo-scheme = "geo"
geo-path = geo-location
geo-location = latitude "," longitude [ "," altitude ]
latitude = [ "-" ] 1*2DIGIT [ "." *DIGIT ]
longitude = [ "-" ] 1*3DIGIT [ "." *DIGIT ]
altitude = [ "-" ] *DIGIT [ "." *DIGIT ]
Data contained in a 'geo' URI identifies
a physical resource: A spatial location on earth in the
WGS-84 references system, identified by
the geographic coordinates encoded in the URI.
The "latitude", "longitude" and "altitude"
components as specified in the URI scheme syntax (
) are to be used as follows:
The "latitude" component MUST contain the latitude of
the identified location in decimal degrees
in the reference system WGS-84.
The "latitude" component MUST contain the latitude of
the identified location in decimal degrees
in the reference system WGS-84.
If present, the OPTIONAL "altitude" component MUST contain
the WGS-84 altitude of the identified location
in meters.
If the altitude of the location is unknown, the "altitude"
component MUST NOT be present in the URI. Specifically,
unknown altitude MUST NOT be represented by setting the 'altitude'
component to "0" (or any other arbitrary value).
The "longitude" components of coordinate values reflecting the
poles (latitude set to -90 or 90 degrees) SHOULD be set to "0",
although consumers of "geo" URIs MUST
accept such URIs with any longitude value between -180 and 180.
'geo' URIs with longitude values outside the range of -180 to 180
decimal degrees or with latitude values outside the range of
-90 to 90 degrees MUST be considered invalid.
Two 'geo' URIs are equal when their 'longitude',
'latitude' and 'altitude' values are mathematically identical.
Where the 'latitude' component of a 'geo' URI is set to either
90 or -90 degrees, the 'longitude' component MUST be ignored
in comparison operations.
An URI with undefined (missing) 'altitude' value MUST NOT be
considered equal to an URI containing an 'altitude' value,
even if the remaining values 'latitude'
and 'longitude' are equivalent.
A consumer of a 'geo' URI with undefined 'altitude' MAY
assume that the URI refers to the respective location on earth's
physical surface at the given 'latitude' and 'longitude'
coordinate.
However, as defined above, altitudes are relative to the WGS-84
reference geoid rather than earth's surface. Hence, an altitude
value of 0 MUST NOT be interpreted as "on earth's surface".
The 'geo-location' path component of the 'geo' URI
(see ) uses a comma (",") as a
delimiter for subcomponents. This delimiter MUST NOT be
percent encoded.
It is RECOMMENDED that for readability the contents of
'latitude', 'longitude' and 'altitude' subcomponents are
never percent encoded.
As many other URI scheme definitions, the 'geo' URI
provides resource identification independent of
a specific application or protocol. Examples of potential
protocol mappings and use cases can be found in
.
As with any other new URI scheme, the 'geo' URI requires
support in client applications. Users of applications which are
not aware of the 'geo' scheme are likely unable to make use of
the information in the URI. However, the simple structure of the
'geo' URI would even allow manual dereference by users.
Poorly authored 'geo' URI instances could contain whitespace
and numbers with leading plus signs ("+").
Clients SHOULD try to dereference such URIs after removing
such whitespace and plus signs.
This specification does not define any URI parameters nor
a query component. Future
revisions might define such parameters, using the ";"
and "?" characters to delimit parameter and query components from
the path component specified above. Clients MUST be prepared to
encounter
such 'geo' URI instances, and MUST reduce the URI to the components
specified in before they dereference
the URI.
See of [insert reference to this document]
Christian Spanring (mailto:spanring@oir.at, http://spanring.eu/ ),
Alexander Mayrhofer (mailto:alexander.mayrhofer@nic.at, http://timatio.com/ )
The 'geo' URI scheme is registered under the IETF part of the
URI tree. As such, change control is up to the IETF.
RFC XXXX [change to RFC number once assigned]
Currently, just one operation on a 'geo' URI is defined - location
dereference: In that operation, a client dereferences the URI by
extracting the geographical coordinates from the URI path component.
Further use of those coordinates is then up to the application
processing the URI.
An application may then use this location information for various
purposes, for example:
A web browser could use that information to open a
web mapping service of the user's choice, and display a map of
the location
A navigational device such as a Global Positioning System (GPS)
receiver could offer the user to start navigation to the location.
The following 3-dimensional 'geo' URI example references
to the office location of one of the authors in
Vienna, Austria:
geo:48.2010,16.3695,183
A user could type the data extracted from this URI into a
electronic navigation device, or even use it to locate the
identified location on a paper map.
'geo' URIs (like any other URI scheme) could also be embedded
as hyperlinks in web pages. A Hyper Text Markup Language (HTML)
snippet with such a hyperlink could look like:
<p>one of Vienna's popular sights is the
<a href='geo:48.198634,16.371648'>Karlskirche</a>.
A web brower could extract the coordinates from the HTML snippet, and offer the user various options (based on
configuration, context), for example:
display a small map thumbnail when the mouse pointer hovers over the link
switch to a mapping service of the user's choice once the
link is selected
Locate nearby resources, for example by comparing the
'geo' URI with locations extracted from GeoRSS
feeds the user has subscribed to.
Convert the coordinates to a format suitable for uploading
to a navigation device
Due to it's short length, a 'geo' URI could easily be encoded
in 2-dimensional barcodes. Such barcodes could be printed on
business cards, flyers, paper maps and subsequently used by mobile
devices, for example as follows:
User identifies such a barcode on a flyer, uses the camera
on his mobile phone to photograph and decode the barcode
The mobile phone dereferences the 'geo' URI, and offers
the user to calculate a navigation route to the identified
location.
Using the builtin GPS, the user follows the navgiation
instructions from his phone to reach the destination
The Geographic Markup Language (GML) by the Open Geospatial
Consortium (OGC) is a set of XML schemas
to represent geographical features. Since GML is widely accepted,
this document includes instructions on how to transpose 'geo' URIs
from and to GML documents.
A 'geo' URI can be authored from a GML "point", and any 'geo' URI
can be mapped to a GML "point".
For the following sections, "%lat%", "%lon%" and "%alt%" are
placeholders for latitude, longitude, and altitude
values. Mappings are defined as follows:
An instance of the 'geo' URI without the altitude element is
mapped to a two-dimensional GML "Point" as follows:
'geo' URI:
geo:%lat%,%lon%
GML document:
%lat% %lon%
]]>
A 'geo' URI instance with the altitude element is mapped to
a three-dimensional GML "Point" as follows:
'geo' URI:
geo:%lat%,%lon%,%alt%
GML document:
%lat% %lon% %alt%
]]>
A GML 'Point' in the reference system identified as "urn:ogc:def:crs:EPSG:6.6:4326" is mapped to a 'geo' URI as follows:
GML document:
%lat% %lon%
]]>
'geo' URI:
geo:%lat%,%lon%
Note: GML documents in other reference systems MAY be used
as well if a transformation into
"urn:ogc:def:crs:EPSG:6.6:4326" is defined and applied before
the mapping step.
A GML 'Point' in the reference system identified as "urn:ogc:def:crs:EPSG:6.6:4979" is mapped to a 'geo' URI as follows:
GML document:
%lat% %lon%
]]>
'geo' URI:
geo:%lat%,%lon%
Note: GML 'Point' instances in other reference systems MAY be used
as well if a transformation into
"urn:ogc:def:crs:EPSG:6.6:4326" is defined and applied before
the mapping step.
This document requests assignment of the 'geo' URI scheme
in the IETF part of the URI scheme tree, according to the
guidelines in BCP 115 (RFC 4395).
The definitions required
for the assignment are contained in .
Because the 'geo' URI is not tied to any specific protocol,
and identifies a physical location rather than a network
resource,
most of the general security considerations on URIs (Section 7 of
RFC 3986) do not apply. However, the following (additional)
issues apply:
The URI syntax
makes it possible to construct valid 'geo' URIs which don't
identify a valid location on earth. Applications MUST NOT use
URIs which such invalid values, and SHOULD warn the user when such
URIs are encountered.
An example of such an invalid URI
would be <geo:94,0> (latitude "beyond" north pole).
Location information about individuals is an extremely
sensitive topic, especially when location is combined with
Personally Identifyable Information (PII). Authors of 'geo'
URIs MUST consider data protection and privacy before publishing
such URIs.
The authors wish to acknowledge the helpful contributions from
Carl Reed,
Bill McQuillan, Martin Kofal, Andrew Turner and Kim Sanders.