[Docs] [txt|pdf] [Tracker] [Email] [Nits]
Versions: 00 01 02
Network Working Group A. Mayrhofer
Internet-Draft enum.at
Expires: July 6, 2007 C. Spanring
OIR-ID
January 02, 2007
A Uniform Resource Identifier for Geographic Locations ('geo' URI)
draft-mayrhofer-geo-uri-00
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on July 6, 2007.
Copyright Notice
Copyright (C) The IETF Trust (2007).
Abstract
This document specifies an Uniform Resource Identifier (URI) for
geographic locations using the 'geo' scheme name. A 'geo' URI
provides latitude, longitude and optionally altitude of a location in
a simple, human-readable form. The 'geo' URI is not tied to a
specific application or protocol.
Mayrhofer & Spanring Expires July 6, 2007 [Page 1]
Internet-Draft 'geo' URI scheme January 2007
Table of Contents
1. Changes & Supplemental Information . . . . . . . . . . . . . . 3
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. IANA Registration of the 'geo' URI Scheme . . . . . . . . . . 4
4.1. URI Scheme Name . . . . . . . . . . . . . . . . . . . . . 4
4.2. Status . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.3. URI Scheme Syntax . . . . . . . . . . . . . . . . . . . . 4
4.4. URI Scheme Semantics . . . . . . . . . . . . . . . . . . . 4
4.4.1. Component Description . . . . . . . . . . . . . . . . 5
4.4.2. URI Comparison . . . . . . . . . . . . . . . . . . . . 5
4.4.3. Interpretation of Undefined Altitude . . . . . . . . . 5
4.5. Encoding Considerations . . . . . . . . . . . . . . . . . 5
4.6. Applications/protocols That Use This URI Scheme . . . . . 6
4.7. Interopability Considerations . . . . . . . . . . . . . . 6
4.8. Security Considerations . . . . . . . . . . . . . . . . . 6
4.9. Contact . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.10. Author/Change controller . . . . . . . . . . . . . . . . . 6
4.11. References . . . . . . . . . . . . . . . . . . . . . . . . 6
5. Use of 'geo' URIs . . . . . . . . . . . . . . . . . . . . . . 6
5.1. URI Construction . . . . . . . . . . . . . . . . . . . . . 6
5.2. URI Dereference . . . . . . . . . . . . . . . . . . . . . 8
5.3. URI Operations . . . . . . . . . . . . . . . . . . . . . . 8
6. Examples and Use Cases . . . . . . . . . . . . . . . . . . . . 9
6.1. Plain 'geo' URI . . . . . . . . . . . . . . . . . . . . . 9
6.2. Hyperlink . . . . . . . . . . . . . . . . . . . . . . . . 9
6.3. Header Field . . . . . . . . . . . . . . . . . . . . . . . 9
6.4. Web Mapping Services . . . . . . . . . . . . . . . . . . . 10
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
8. Security Considerations . . . . . . . . . . . . . . . . . . . 10
8.1. Invalid Locations . . . . . . . . . . . . . . . . . . . . 11
8.2. Location Privacy . . . . . . . . . . . . . . . . . . . . . 11
8.3. Malicious Locations . . . . . . . . . . . . . . . . . . . 11
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
9.1. Normative References . . . . . . . . . . . . . . . . . . . 11
9.2. Informative References . . . . . . . . . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12
Intellectual Property and Copyright Statements . . . . . . . . . . 13
Mayrhofer & Spanring Expires July 6, 2007 [Page 2]
Internet-Draft 'geo' URI scheme January 2007
1. Changes & Supplemental Information
[Note to editors: This section is to be removed before publication -
XML source available on request]
o draft-mayrhofer-geo-uri-00
* initial draft
A supplemental web site for the development of this draft and the
'geo' URI in general has been set up at <http://geouri.org/>
2. Introduction
An increasing number of Internet protocols and data formats are being
enriched by specifications on how to add information about geographic
location to them. In most cases, latitude as well as longitude are
added as attributes to existing data structures. However, all those
methods are specific to a certain application, data format or
protocol, and don't provide a generic way to protocol independent
location identification.
Over the past few years, emerging location aware applications and
location based services were observable on the Internet. Most
Internet search engines and a vivid open source mapping community
brought an enormous momentum into location aware technology. A wide
range of tools and data formerly available to professionals only were
provided free of charge for everyday use on the mass market.
The 'geo' Uniform Resorce Identifier (URI) [1] scheme is another step
into that direction and aims to facilitate, support and standardize
part of the interaction with geospatial services and applications.
Accessing information about or trigger further services based on a
particular place on earth shouldn't be any harder than writing an
email by clicking on a 'mailto:' link.
A Uniform Resource Identifier (URI) is a compact sequence of
characters that identifies an abstract or physical resource. This
document specifies the 'geo' URI scheme for identifying geographic
locations in the WGS84 [5] reference system, independent of any
specific application, data format or protocol.
'Geo' URIs identify a geographic location by the textual
representation of the location's spatial coordinates in either two or
3 dimensions (latitude, longitude, and optionally altitude). An
optional query string contains additional parameters.
The provision of civic addresses (street, city, country, etc.) to
identify locations is out of scope for the 'geo' URI scheme.
Mayrhofer & Spanring Expires July 6, 2007 [Page 3]
Internet-Draft 'geo' URI scheme January 2007
3. Terminology
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 [2].
4. IANA Registration of the 'geo' URI Scheme
This section contains information required for the URI scheme
registration, following the guidelines in section 5.4 of RFC 4395
[4].
4.1. URI Scheme Name
geo
4.2. Status
permanent
4.3. URI Scheme Syntax
The syntax of the 'geo' URI scheme is specified below in Augmented
Backus-Naur Form (ABNF) [3]:
geo-URI = geo-scheme ":" geo-path [ "?" geo-query ]
geo-scheme = "geo"
geo-path = geo-location
geo-query = query
geo-location = latitude "," longitude [ "," altitude ]
latitude = [ "-" ] 1*2DIGIT [ "." *DIGIT ]
longitude = [ "-" ] 1*3DIGIT [ "." *DIGIT ]
altitude = [ "-" ] *DIGIT [ "." *DIGIT ]
The 'query' component is specified in secion 3.4 of RFC 3986.
4.4. URI Scheme Semantics
Generally, data contained in a 'geo' URI describes the geographic
coordinates of the identified location, and contains an optional
query string.
Note: In order to achieve high user acceptance it seems inevitable to
adopt commonly known GPS parameters (latitude, longitude, altitude)
where possible.
Mayrhofer & Spanring Expires July 6, 2007 [Page 4]
Internet-Draft 'geo' URI scheme January 2007
4.4.1. Component Description
The "latitude", "longitude", "altitude" and "query" components as
specified in the URI scheme syntax ( Section 4.3) are to be used as
follows:
o The "latitude" component MUST contain the decimal latitude of the
identified location in the reference system WGS84.
o The "longitude" componont MUST contain the decimal longitude of
the identified location in the reference system WGS84.
o If present, the OPTIONAL "altitude" component MUST contain the
WGS84 decimal altitude of the identified location in meters
(elevation above mean seal level).
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 number of decimal places indicates the precision of the value.
As one degree equals 111319.45m at the equator (40075.004km / 360
degrees), five decimal places (0.00001 degree) correspond to roughly
one meter, which seem to provide sufficient accuracy for civil use.
4.4.2. URI Comparison
Two 'geo' URIs MUST be considered equal when their 'longitude',
'latitude' and 'altitude' values are mathematically identical, and
their decoded 'query' strings match.
An URI with undefined (missing) 'altitude' value MUST NOT be
considered identical to an URI with an 'altitude' value, even if the
remaining components 'latitude', 'longitude' and 'query' match.
4.4.3. Interpretation of Undefined Altitude
A consumer of an 'geo' URI with undefined 'altitude' MAY assume that
the URI refers to the location on earth's surface at the given
'latitude' and 'longitude' coordinate.
4.5. Encoding Considerations
The 'geo-location' path component of the 'geo' URI (see Section 4.3)
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.
Mayrhofer & Spanring Expires July 6, 2007 [Page 5]
Internet-Draft 'geo' URI scheme January 2007
Contents of the 'query' component is to be encoded according to RFC
3986.
4.6. Applications/protocols That Use This URI Scheme
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 Section 6.
4.7. Interopability Considerations
While the interpretation of 'latitude', 'longitude' and 'altitude' is
quite clear, the interpretation of the 'query' component may vary by
application or protocol to which a 'geo' URI is being mapped.
Consumers MUST ignore unknown query parameters they encounter while
authors of 'geo' URIs SHOULD only use well known parameters in the
'query' component.
To reduce interopability issues, it might be neccessary to create a
registry of query parameters.
4.8. Security Considerations
See Section 8 of [insert reference to this document]
4.9. Contact
Christian Spanring (mailto:spanring@oir.at, http://spanring.eu/),
Alexander Mayrhofer (mailto:alexander.mayrhofer@enum.at,
http://nona.net/)
4.10. Author/Change controller
The 'geo' URI scheme is registered under the IETF part of the URI
tree. As such, change control is up to the IETF.
4.11. References
The 'geo' URI is specified in [insert reference to this document].
5. Use of 'geo' URIs
5.1. URI Construction
The production of a 'geo' URI involves the following steps:
Mayrhofer & Spanring Expires July 6, 2007 [Page 6]
Internet-Draft 'geo' URI scheme January 2007
1. Aquire coordinates of the location to be identified: latitude,
longitude, and optionally altitude.
2. If coordinates are given in degrees/minutes/seconds, transform
them to their respective decimal representation.
3. Ensure that coordinates are represented in the correct reference
system / units as described in Section 4.4.1. Transform
coordinates if neccessary.
4. Round coordinate values to a sensible number of decimal places,
according to the presumed accuracy of the data source used.
5. Remove abundant leading zero's from values, keeping at least one
digit in the integer part. Make sure that negative values have a
minus sign, while positive values don't have a sign.
6. concatenate prepared latitude, longitude, optionally altitude
strings with the subcomponent delimiter ",", not adding any
whitespace or other characters.
7. prepend the result with the string 'geo:' (the URI scheme and
delimiter)
8. if the final URI is to include a 'query' component, add the
component delimiter "?" to the end of the result, followed by the
encoded query string.
The following example constructs a 'geo' URI from the location
message of a Global Positioning System (GPS) receiver:
1. Aquire coordinates (data split in two lines):
$GPGGA,124951.000,4812.0556,N,01622.1729,E,1,
05,3.3,192.4,M,43.4,M,,0000*5D
latitude = 48 degrees, 12.0556 minutes north.
longitude = 16 degrees, 22.1729 minutes east.
altitude = 192.4 meters (using a geoid height of 43.4 meters)
Horizontal Dilution of Precision (HDOP) = 3.3 (corresponds to
about 10 meters)
2. Transform into decimal values:
latitude = +48.2009266666 degrees
longitude = +16.3695483333 degrees
altitude = 192.4 meters
3. Reference system: longitude and latitude values are already given
in WGS84, altitude already refers to mean sea level (according to
the geoid correction value of 43.4 meters)
4. Round values:
latitude = +48.20093 degrees
longitude = +016.36955 degrees
altitude = 192 meters
Mayrhofer & Spanring Expires July 6, 2007 [Page 7]
Internet-Draft 'geo' URI scheme January 2007
(five decimal rougly correlate to about one meter on the equator.
This is more precise than the indicated HDOP of about 10 meters).
5. Remove abundant stuff:
latitude = 48.200927
longitude = 16.369548
altitude = 192
6. Concatenate:
48.200927,16.369548,192
7. Prepend with URI scheme name and delimiter:
geo:48.200927,16.369548,192
8. In this example, no query component is to be added.
5.2. URI Dereference
A consumer of a 'geo' URI has to perform the following operation for
dereference:
1. Validate the 'geo' URI against the syntax specification
(Section 4.3). URIs which do not match the syntax SHOULD NOT be
used (see note below).
2. Remove the URI scheme and the URI delimiter ("geo:") from the
beginning of the string.
3. If the string contains a query delimiter ("?"), split off the
'query' component and the query delimiter
4. Split the remaining string into subcomponents, using the comma
(",") as the delimiter
5. Use the first subcomponent as latitude, the second one as
longitude. If a thrid subcomponent is present, use it as
altitude.
Note: An application MAY use URIs which contain whitespace in the
'geo-location' component by stripping it off before the dereference
process.
5.3. URI Operations
Currently, just one operation on a 'geo' URI is defined - location
retrieval: In that operation, a client uses the data from the URI to
retrieve the geographical location to which the URI refers to.
A client may then, though, use this location information for various
Mayrhofer & Spanring Expires July 6, 2007 [Page 8]
Internet-Draft 'geo' URI scheme January 2007
purposes:
A web browser may rewrite that information into the URI of 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 may offer the user to start navigation to the location.
Examples of such uses can be found in Section 6.
6. Examples and Use Cases
6.1. Plain 'geo' URI
The following 3-dimensional 'geo' URI example references to the
bottom of the stairs leading to the Karlskirche in Vienna, Austria:
<geo:48.19858,16.37164,171>
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.
6.2. Hyperlink
'geo' URIs could (like any other URI scheme) 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 most popular sights is the <a href='geo:
48.19858,16.37164'>Karlskirche</a>
6.3. Header Field
Many protocols support the use of arbitrary URI schemes, for example
in their header Fields. A Session Initiation Protocol (SIP) [7]
REGISTER request could contain a 'Contact' header with a 'geo' URI,
to reflect the geographic location to be used to contact the
registering entity physically:
REGISTER sip:geoaware.example.com SIP/2.0
Via: SIP/2.0/UDP mypc.example.org:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
To: Joe Geo <sip:joe@example.com>
From: Joe Geo <sip:joe@example.com>;tag=456248
Call-ID: aaafafff-84230@7afagggdd
CSeq: 42 REGISTER
Contact: <sip:joe@192.168.1.1>
Mayrhofer & Spanring Expires July 6, 2007 [Page 9]
Internet-Draft 'geo' URI scheme January 2007
Contact: <geo:48.19858,16.37164>
6.4. Web Mapping Services
A rather common method for accessing geographic information on the
Internet are web mapping services (WMS) [6]. An image containing a
map is delivered by a mapserver as response to a WMS request. WMS
requests usually contain a bounding box (enclosing rectangle), the
spatial reference system (e.g. 'EPSG:4326' for WGS84), displayed
layers (e.g. roads, borders), image dimensions and image format (e.g.
'image/png'):
http://map.example.org/maps/wms.cgi?BBOX=16,48,18,50&SRS=EPSG:4326 \
&LAYERS=roads,borders&WIDTH=400&HEIGHT=400&FORMAT=image/png
A location identified by a 'geo' URI could be used to support input
parameters in terms of a center point of a WMS request. Query
parameters could be used to reflect the requested type of service,
eg. a 'geo' URI could be mapped to a WMS request as follows:
geo:48.20833,16.37278,171?service=wms&scale=5000&layers=roads,borders
\ &height=400&width=400&format=image/png
A bounding box can be calculated by given scale, height and width.
In our case, based on an output scale of 1:5000 and 400px image
height and width the bounding box width and height is 0.00634
degrees. A 'geo' URI is limited to one spatial reference system,
thus 'SRS=EPSG:4326' is a constant parameter in WMS transformations.
The resulting WMS request could look like:
http://map.example.org/maps/wms.cgi?BBOX=16.05690,47.89167, \
16.69142,48.52619&SRS= EPSG:4326&LAYERS=roads,borders&WIDTH=400 \
&HEIGHT=400&FORMAT=image/png
7. IANA Considerations
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) [4]. The definitions required for the assignment are
contained in Section 4.
8. Security Considerations
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
Mayrhofer & Spanring Expires July 6, 2007 [Page 10]
Internet-Draft 'geo' URI scheme January 2007
3986) do not apply. However, the following (additional) issues
apply:
8.1. Invalid Locations
The URI syntax (Section 4.3) 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).
8.2. Location Privacy
Location information about individuals is an extremely sensitive
topic, especially when location is combined with Personally
Identifyable Information (PII).
In cases where location information about individuals is used in a
publicly available 'geo' URI, the explicit consent of the individual
is REQUIRED.
8.3. Malicious Locations
As with other URI schemes, the information provisioned in 'geo' URIs
cannot be trusted unless some kind of trust relation with the author
of a URI is in place. Applications of the 'geo' URI SHOULD consider
methods of validating and protecting URIs.
9. References
9.1. Normative References
[1] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986,
January 2005.
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[3] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 4234, October 2005.
Mayrhofer & Spanring Expires July 6, 2007 [Page 11]
Internet-Draft 'geo' URI scheme January 2007
9.2. Informative References
[4] Hansen, T., Hardie, T., and L. Masinter, "Guidelines and
Registration Procedures for New URI Schemes", BCP 115, RFC 4395,
February 2006.
[5] National Imagery and Mapping Agency, "Department of Defense
World Geodetic System 1984, Third Edition", NIMA TR8350.2,
January 2000.
[6] Open GIS Consortium Inc., "Web Map Service Implementations
Specification, Version 1.1.1", OGC 01-068r3, January 2002.
[7] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
Session Initiation Protocol", RFC 3261, June 2002.
Authors' Addresses
Alexander Mayrhofer
enum.at GmbH
Karlsplatz 1/9
Wien A-1010
Austria
Phone: +43 1 5056416 34
Email: alexander.mayrhofer@enum.at
URI: http://www.enum.at/
Christian Spanring
OIR-Informationsdienste GmbH
Franz-Josefs-Kai 27
Wien A-1010
Phone: +43 1 5338747 36
Email: spanring@oir.at
URI: http://www.oir.at/
Mayrhofer & Spanring Expires July 6, 2007 [Page 12]
Internet-Draft 'geo' URI scheme January 2007
Full Copyright Statement
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
Mayrhofer & Spanring Expires July 6, 2007 [Page 13]
Html markup produced by rfcmarkup 1.129d, available from
https://tools.ietf.org/tools/rfcmarkup/