rfc9179.original | rfc9179.txt | |||
---|---|---|---|---|
Network Working Group C. Hopps | Internet Engineering Task Force (IETF) C. Hopps | |||
Internet-Draft LabN Consulting, L.L.C. | Request for Comments: 9179 LabN Consulting, L.L.C. | |||
Intended status: Standards Track 24 October 2021 | Category: Standards Track February 2022 | |||
Expires: 27 April 2022 | ISSN: 2070-1721 | |||
A YANG Grouping for Geographic Locations | A YANG Grouping for Geographic Locations | |||
draft-ietf-netmod-geo-location-11 | ||||
Abstract | Abstract | |||
This document defines a generic geographical location YANG grouping. | This document defines a generic geographical location YANG grouping. | |||
The geographical location grouping is intended to be used in YANG | The geographical location grouping is intended to be used in YANG | |||
models for specifying a location on or in reference to Earth or any | data models for specifying a location on or in reference to Earth or | |||
other astronomical object. | any other astronomical object. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 27 April 2022. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9179. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
as described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Simplified BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
2. The Geo Location Object . . . . . . . . . . . . . . . . . . . 3 | 2. The Geolocation Object | |||
2.1. Frame of Reference . . . . . . . . . . . . . . . . . . . 3 | 2.1. Frame of Reference | |||
2.2. Location . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Location | |||
2.3. Motion . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.3. Motion | |||
2.4. Nested Locations . . . . . . . . . . . . . . . . . . . . 5 | 2.4. Nested Locations | |||
2.5. Non-location Attributes . . . . . . . . . . . . . . . . . 5 | 2.5. Non-location Attributes | |||
2.6. Tree . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.6. Tree | |||
3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. YANG Module | |||
4. ISO 6709:2008 Conformance . . . . . . . . . . . . . . . . . . 12 | 4. ISO 6709:2008 Conformance | |||
5. Usability . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 5. Usability | |||
5.1. Portability . . . . . . . . . . . . . . . . . . . . . . . 13 | 5.1. Portability | |||
5.1.1. IETF URI Value . . . . . . . . . . . . . . . . . . . 14 | 5.1.1. IETF URI Value | |||
5.1.2. W3C . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 5.1.2. W3C | |||
5.1.3. Geography Markup Language (GML) . . . . . . . . . . . 16 | 5.1.3. Geography Markup Language (GML) | |||
5.1.4. KML . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 5.1.4. KML | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 6. IANA Considerations | |||
6.1. Geodetic System Values Registry . . . . . . . . . . . . . 17 | 6.1. Geodetic System Values Registry | |||
6.2. Updates to the IETF XML Registry . . . . . . . . . . . . 18 | 6.2. Updates to the IETF XML Registry | |||
6.3. Updates to the YANG Module Names Registry . . . . . . . . 19 | 6.3. Updates to the YANG Module Names Registry | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 7. Security Considerations | |||
8. Normative References . . . . . . . . . . . . . . . . . . . . 20 | 8. Normative References | |||
9. Informative References . . . . . . . . . . . . . . . . . . . 21 | 9. Informative References | |||
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 22 | Appendix A. Examples | |||
Appendix B. Acknowledgments . . . . . . . . . . . . . . . . . . 25 | Acknowledgments | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 26 | Author's Address | |||
1. Introduction | 1. Introduction | |||
In many applications we would like to specify the location of | In many applications, we would like to specify the location of | |||
something geographically. Some examples of locations in networking | something geographically. Some examples of locations in networking | |||
might be the location of data center, a rack in an internet exchange | might be the location of data centers, a rack in an Internet exchange | |||
point, a router, a firewall, a port on some device, or it could be | point, a router, a firewall, a port on some device, or it could be | |||
the endpoints of a fiber, or perhaps the failure point along a fiber. | the endpoints of a fiber, or perhaps the failure point along a fiber. | |||
Additionally, while this location is typically relative to Earth, it | Additionally, while this location is typically relative to Earth, it | |||
does not need to be. Indeed, it is easy to imagine a network or | does not need to be. Indeed, it is easy to imagine a network or | |||
device located on The Moon, on Mars, on Enceladus (the moon of | device located on the Moon, on Mars, on Enceladus (the moon of | |||
Saturn) or even a comet (e.g., 67p/churyumov-gerasimenko). | Saturn), or even on a comet (e.g., 67p/churyumov-gerasimenko). | |||
Finally, one can imagine defining locations using different frames of | Finally, one can imagine defining locations using different frames of | |||
reference or even alternate systems (e.g., simulations or virtual | reference or even alternate systems (e.g., simulations or virtual | |||
realities). | realities). | |||
This document defines a "geo-location" YANG grouping that allows for | This document defines a 'geo-location' YANG grouping that allows for | |||
all the above data to be captured. | all the above data to be captured. | |||
This specification conforms to [ISO.6709.2008]. | This specification conforms to [ISO.6709.2008]. | |||
The YANG data model described in this document conforms to the | The YANG data model described in this document conforms to the | |||
Network Management Datastore Architecture defined in [RFC8342]. | Network Management Datastore Architecture (NMDA) defined in | |||
[RFC8342]. | ||||
1.1. Terminology | 1.1. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
[RFC2119] [RFC8174] when, and only when, they appear in all capitals, | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
as shown here. | capitals, as shown here. | |||
2. The Geo Location Object | 2. The Geolocation Object | |||
2.1. Frame of Reference | 2.1. Frame of Reference | |||
The frame of reference ("reference-frame") defines what the location | The frame of reference ('reference-frame') defines what the location | |||
values refer to and their meaning. The referred to object can be any | values refer to and their meaning. The referred-to object can be any | |||
astronomical body. It could be a planet such as Earth or Mars, a | astronomical body. It could be a planet such as Earth or Mars, a | |||
moon such as Enceladus, an asteroid such as Ceres, or even a comet | moon such as Enceladus, an asteroid such as Ceres, or even a comet | |||
such as 1P/Halley. This value is specified in "astronomical-body" | such as 1P/Halley. This value is specified in 'astronomical-body' | |||
and is defined by the International Astronomical Union | and is defined by the International Astronomical Union | |||
(http://www.iau.org). The default "astronomical-body" value is | <http://www.iau.org>. The default 'astronomical-body' value is | |||
"earth". | 'earth'. | |||
In addition to identifying the astronomical body, we also need to | In addition to identifying the astronomical body, we also need to | |||
define the meaning of the coordinates (e.g., latitude and longitude) | define the meaning of the coordinates (e.g., latitude and longitude) | |||
and the definition of 0-height. This is done with a "geodetic-datum" | and the definition of 0-height. This is done with a 'geodetic-datum' | |||
value. The default value for "geodetic-datum" is "wgs-84" (i.e., the | value. The default value for 'geodetic-datum' is 'wgs-84' (i.e., the | |||
World Geodetic System, [WGS84]), which is used by the Global | World Geodetic System [WGS84]), which is used by the Global | |||
Positioning System (GPS) among many others. We define an IANA | Positioning System (GPS) among many others. We define an IANA | |||
registry for specifying standard values for the "geodetic-datum". | registry for specifying standard values for the 'geodetic-datum'. | |||
In addition to the "geodetic-datum" value, we allow overriding the | In addition to the 'geodetic-datum' value, we allow overriding the | |||
coordinate and height accuracy using "coord-accuracy" and "height- | coordinate and height accuracy using 'coord-accuracy' and 'height- | |||
accuracy" respectively. When specified, these values override the | accuracy', respectively. When specified, these values override the | |||
defaults implied by the "geodetic-datum" value. | defaults implied by the 'geodetic-datum' value. | |||
Finally, we define an optional feature which allows for changing the | Finally, we define an optional feature that allows for changing the | |||
system for which the above values are defined. This optional feature | system for which the above values are defined. This optional feature | |||
adds an "alternate-system" value to the reference frame. This value | adds an 'alternate-system' value to the reference frame. This value | |||
is normally not present which implies the natural universe is the | is normally not present, which implies the natural universe is the | |||
system. The use of this value is intended to allow for creating | system. The use of this value is intended to allow for creating | |||
virtual realities or perhaps alternate coordinate systems. The | virtual realities or perhaps alternate coordinate systems. The | |||
definition of alternate systems is outside the scope of this | definition of alternate systems is outside the scope of this | |||
document. | document. | |||
2.2. Location | 2.2. Location | |||
This is the location on, or relative to, the astronomical object. It | This is the location on, or relative to, the astronomical object. It | |||
is specified using 2 or 3 coordinates values. These values are given | is specified using two or three coordinate values. These values are | |||
either as "latitude", "longitude", and an optional "height", or as | given either as 'latitude', 'longitude', and an optional 'height', or | |||
Cartesian coordinates of "x", "y" and "z". For the standard location | as Cartesian coordinates of 'x', 'y', and 'z'. For the standard | |||
choice "latitude" and "longitude" are specified as decimal degrees, | location choice, 'latitude' and 'longitude' are specified as decimal | |||
and the "height" value is in fractions of meters. For the Cartesian | degrees, and the 'height' value is in fractions of meters. For the | |||
choice "x", "y" and "z" are in fractions of meters. In both choices | Cartesian choice, 'x', 'y', and 'z' are in fractions of meters. In | |||
the exact meanings of all the values are defined by the "geodetic- | both choices, the exact meanings of all the values are defined by the | |||
datum" value in the Section 2.1. | 'geodetic-datum' value in Section 2.1. | |||
2.3. Motion | 2.3. Motion | |||
Support is added for objects in relatively stable motion. For | Support is added for objects in relatively stable motion. For | |||
objects in relatively stable motion the grouping provides a | objects in relatively stable motion, the grouping provides a three- | |||
3-dimensional vector value. The components of the vector are | dimensional vector value. The components of the vector are | |||
"v-north", "v-east" and "v-up" which are all given in fractional | 'v-north', 'v-east', and 'v-up', which are all given in fractional | |||
meters per second. The values "v-north" and "v-east" are relative to | meters per second. The values 'v-north' and 'v-east' are relative to | |||
true north as defined by the reference frame for the astronomical | true north as defined by the reference frame for the astronomical | |||
body, "v-up" is perpendicular to the plane defined by "v-north" and | body; 'v-up' is perpendicular to the plane defined by 'v-north' and | |||
"v-east", and is pointed away from the center of mass. | 'v-east', and is pointed away from the center of mass. | |||
To derive the 2-dimensional heading and speed one would use the | To derive the two-dimensional heading and speed, one would use the | |||
following formulas: | following formulas: | |||
,------------------------------ | ,------------------------------ | |||
speed = V v_{north}^{2} + v_{east}^{2} | speed = V v_{north}^{2} + v_{east}^{2} | |||
heading = arctan(v_{east} / v_{north}) | heading = arctan(v_{east} / v_{north}) | |||
For some applications that demand high accuracy, and where the data | For some applications that demand high accuracy and where the data is | |||
is infrequently updated this velocity vector can track very slow | infrequently updated, this velocity vector can track very slow | |||
movement such as continental drift. | movement such as continental drift. | |||
Tracking more complex forms of motion is outside the scope of this | Tracking more complex forms of motion is outside the scope of this | |||
work. The intent of the grouping being defined here is to identify | work. The intent of the grouping being defined here is to identify | |||
where something is located, and generally this is expected to be | where something is located, and generally this is expected to be | |||
somewhere on, or relative to, Earth (or another astronomical body). | somewhere on, or relative to, Earth (or another astronomical body). | |||
At least two options are available to YANG data models that wish to | ||||
At least two options are available to YANG models that wish to use | use this grouping with objects that are changing location frequently | |||
this grouping with objects that are changing location frequently in | in non-simple ways. A data model can either add additional motion | |||
non-simple ways. They can add additional motion data to their model | data to its model directly, or if the application allows, it can | |||
directly. Or, if the application allows, it can require more | require more frequent queries to keep the location data current. | |||
frequent queries to keep the location data current. | ||||
2.4. Nested Locations | 2.4. Nested Locations | |||
When locations are nested (e.g., a building may have a location which | When locations are nested (e.g., a building may have a location that | |||
houses routers that also have locations) the module using this | houses routers that also have locations), the module using this | |||
grouping is free to indicate in its definition that the "reference- | grouping is free to indicate in its definition that the 'reference- | |||
frame" is inherited from the containing object so that the | frame' is inherited from the containing object so that the | |||
"reference-frame" need not be repeated in every instance of location | 'reference-frame' need not be repeated in every instance of location | |||
data. | data. | |||
2.5. Non-location Attributes | 2.5. Non-location Attributes | |||
During the development of this module, the question of whether it | During the development of this module, the question of whether it | |||
would support data such as orientation arose. These types of | would support data such as orientation arose. These types of | |||
attributes are outside the scope of this grouping because they do not | attributes are outside the scope of this grouping because they do not | |||
deal with a location but rather describe something more about the | deal with a location but rather describe something more about the | |||
object that is at the location. Module authors are free to add these | object that is at the location. Module authors are free to add these | |||
non-location attributes along with their use of this location | non-location attributes along with their use of this location | |||
grouping. | grouping. | |||
2.6. Tree | 2.6. Tree | |||
The following is the YANG tree diagram [RFC8340] for the geo-location | The following is the YANG tree diagram [RFC8340] for the geo-location | |||
grouping. | grouping. | |||
module: ietf-geo-location | module: ietf-geo-location | |||
grouping geo-location | grouping geo-location: | |||
+-- geo-location | +-- geo-location | |||
+-- reference-frame | +-- reference-frame | |||
| +-- alternate-system? string {alternate-systems}? | | +-- alternate-system? string {alternate-systems}? | |||
| +-- astronomical-body? string | | +-- astronomical-body? string | |||
| +-- geodetic-system | | +-- geodetic-system | |||
| +-- geodetic-datum? string | | +-- geodetic-datum? string | |||
| +-- coord-accuracy? decimal64 | | +-- coord-accuracy? decimal64 | |||
| +-- height-accuracy? decimal64 | | +-- height-accuracy? decimal64 | |||
+-- (location)? | +-- (location)? | |||
| +--:(ellipsoid) | | +--:(ellipsoid) | |||
skipping to change at page 6, line 34 ¶ | skipping to change at line 242 ¶ | |||
+-- velocity | +-- velocity | |||
| +-- v-north? decimal64 | | +-- v-north? decimal64 | |||
| +-- v-east? decimal64 | | +-- v-east? decimal64 | |||
| +-- v-up? decimal64 | | +-- v-up? decimal64 | |||
+-- timestamp? yang:date-and-time | +-- timestamp? yang:date-and-time | |||
+-- valid-until? yang:date-and-time | +-- valid-until? yang:date-and-time | |||
3. YANG Module | 3. YANG Module | |||
This model imports Common YANG Data Types [RFC6991]. It uses YANG | This model imports Common YANG Data Types [RFC6991]. It uses YANG | |||
version 1.1 [RFC7950] | version 1.1 [RFC7950]. | |||
<CODE BEGINS> file "ietf-geo-location@2019-02-17.yang" | <CODE BEGINS> file "ietf-geo-location@2022-2-7.yang" | |||
module ietf-geo-location { | module ietf-geo-location { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-geo-location"; | namespace "urn:ietf:params:xml:ns:yang:ietf-geo-location"; | |||
prefix geo; | prefix geo; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
reference "RFC 6991: Common YANG Data Types."; | reference "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD Working Group (NETMOD)"; | "IETF NETMOD Working Group (NETMOD)"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/wg/netmod/> | "WG Web: <https://datatracker.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
Editor: Christian Hopps | Editor: Christian Hopps | |||
<mailto:chopps@chopps.org>"; | <mailto:chopps@chopps.org>"; | |||
// RFC Ed.: replace XXXX with actual RFC number or IANA reference | ||||
// and remove this note. | ||||
description | description | |||
"This module defines a grouping of a container object for | "This module defines a grouping of a container object for | |||
specifying a location on or around an astronomical object (e.g., | specifying a location on or around an astronomical object (e.g., | |||
'earth'). | 'earth'). | |||
Copyright (c) 2019 IETF Trust and the persons identified as | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here. | ||||
Copyright (c) 2022 IETF Trust and the persons identified as | ||||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Revised BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.e of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC 9179 | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfc9179); see the RFC itself | |||
for full legal notices. | for full legal notices."; | |||
// RFC Ed.: replace XXXX with the actual RFC number or IANA | ||||
// reference and remove this note. | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here."; | ||||
revision 2019-02-17 { | revision 2022-2-7 { | |||
description "Initial Revision"; | description | |||
reference "RFC XXXX: A YANG Grouping for Geographic Locations"; | "Initial Revision"; | |||
reference | ||||
"RFC 9179: A YANG Grouping for Geographic Locations"; | ||||
} | } | |||
feature alternate-systems { | feature alternate-systems { | |||
description | description | |||
"This feature means the device supports specifying locations | "This feature means the device supports specifying locations | |||
using alternate systems for reference frames."; | using alternate systems for reference frames."; | |||
} | } | |||
grouping geo-location { | grouping geo-location { | |||
description | description | |||
"Grouping to identify a location on an astronomical object."; | "Grouping to identify a location on an astronomical object."; | |||
container geo-location { | container geo-location { | |||
description | description | |||
"A location on an astronomical body (e.g., 'earth') | "A location on an astronomical body (e.g., 'earth') | |||
somewhere in a universe."; | somewhere in a universe."; | |||
container reference-frame { | container reference-frame { | |||
description | description | |||
"The Frame of Reference for the location values."; | "The Frame of Reference for the location values."; | |||
leaf alternate-system { | leaf alternate-system { | |||
if-feature alternate-systems; | if-feature "alternate-systems"; | |||
type string; | type string; | |||
description | description | |||
"The system in which the astronomical body and | "The system in which the astronomical body and | |||
geodetic-datum is defined. Normally, this value is not | geodetic-datum is defined. Normally, this value is not | |||
present and the system is the natural universe; however, | present and the system is the natural universe; however, | |||
when present this value allows for specifying alternate | when present, this value allows for specifying alternate | |||
systems (e.g., virtual realities). An alternate-system | systems (e.g., virtual realities). An alternate-system | |||
modifies the definition (but not the type) of the other | modifies the definition (but not the type) of the other | |||
values in the reference frame."; | values in the reference frame."; | |||
} | } | |||
leaf astronomical-body { | leaf astronomical-body { | |||
type string { | type string { | |||
pattern '[ -@\[-\^_-~]*'; | pattern '[ -@\[-\^_-~]*'; | |||
} | } | |||
default "earth"; | default "earth"; | |||
description | description | |||
"An astronomical body as named by the International | "An astronomical body as named by the International | |||
Astronomical Union (IAU) or according to the alternate | Astronomical Union (IAU) or according to the alternate | |||
system if specified. Examples include 'sun' (our star), | system if specified. Examples include 'sun' (our star), | |||
'earth' (our planet), 'moon' (our moon), 'enceladus' (a | 'earth' (our planet), 'moon' (our moon), 'enceladus' (a | |||
moon of Saturn), 'ceres' (an asteroid), | moon of Saturn), 'ceres' (an asteroid), and | |||
'67p/churyumov-gerasimenko (a comet). The ASCII value | '67p/churyumov-gerasimenko (a comet). The ASCII value | |||
SHOULD have upper case converted to lower case and not | SHOULD have uppercase converted to lowercase and not | |||
include control characters (i.e., values 32..64, and | include control characters (i.e., values 32..64, and | |||
91..126). Any preceding 'the' in the name SHOULD NOT be | 91..126). Any preceding 'the' in the name SHOULD NOT be | |||
included."; | included."; | |||
reference "https://www.iau.org/"; | reference | |||
"https://www.iau.org/"; | ||||
} | } | |||
container geodetic-system { | container geodetic-system { | |||
description | description | |||
"The geodetic system of the location data."; | "The geodetic system of the location data."; | |||
leaf geodetic-datum { | leaf geodetic-datum { | |||
type string { | type string { | |||
pattern '[ -@\[-\^_-~]*'; | pattern '[ -@\[-\^_-~]*'; | |||
} | } | |||
description | description | |||
"A geodetic-datum defining the meaning of latitude, | "A geodetic-datum defining the meaning of latitude, | |||
longitude and height. The default when the | longitude, and height. The default when the | |||
astronomical body is 'earth' is 'wgs-84' which is | astronomical body is 'earth' is 'wgs-84', which is | |||
used by the Global Positioning System (GPS). The | used by the Global Positioning System (GPS). The | |||
ASCII value SHOULD have upper case converted to lower | ASCII value SHOULD have uppercase converted to | |||
case and not include control characters (i.e., values | lowercase and not include control characters | |||
32..64, and 91..126). The IANA registry further | (i.e., values 32..64, and 91..126). The IANA registry | |||
restricts the value by converting all spaces (' ') to | further restricts the value by converting all spaces | |||
dashes ('-'). | (' ') to dashes ('-'). | |||
The specification for the geodetic-datum indicates | The specification for the geodetic-datum indicates | |||
how accurately it models the astronomical body in | how accurately it models the astronomical body in | |||
question, both for the 'horizontal' | question, both for the 'horizontal' | |||
latitude/longitude coordinates and for height | latitude/longitude coordinates and for height | |||
coordinates."; | coordinates."; | |||
reference | reference | |||
"IANA XXXX YANG Geographic Location Parameters, | "RFC 9179: A YANG Grouping for Geographic Locations, | |||
Geodetic System Values"; | Section 6.1"; | |||
} | } | |||
leaf coord-accuracy { | leaf coord-accuracy { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 6; | fraction-digits 6; | |||
} | } | |||
description | description | |||
"The accuracy of the latitude longitude pair for | "The accuracy of the latitude/longitude pair for | |||
ellipsoidal coordinates, or the X, Y and Z components | ellipsoidal coordinates, or the X, Y, and Z components | |||
for Cartesian coordinates. When coord-accuracy is | for Cartesian coordinates. When coord-accuracy is | |||
specified, it indicates how precisely the coordinates | specified, it indicates how precisely the coordinates | |||
in the associated list of locations have been | in the associated list of locations have been | |||
determined with respect to the coordinate system | determined with respect to the coordinate system | |||
defined by the geodetic-datum. For example, there | defined by the geodetic-datum. For example, there | |||
might be uncertainty due to measurement error if an | might be uncertainty due to measurement error if an | |||
experimental measurement was made to determine each | experimental measurement was made to determine each | |||
location."; | location."; | |||
} | } | |||
leaf height-accuracy { | leaf height-accuracy { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 6; | fraction-digits 6; | |||
} | } | |||
units "meters"; | units "meters"; | |||
description | description | |||
"The accuracy of height value for ellipsoidal | "The accuracy of the height value for ellipsoidal | |||
coordinates, this value is not used with Cartesian | coordinates; this value is not used with Cartesian | |||
coordinates. When height-accuracy is specified, it | coordinates. When height-accuracy is specified, it | |||
indicates how precisely the heights in the | indicates how precisely the heights in the | |||
associated list of locations have been determined | associated list of locations have been determined | |||
with respect to the coordinate system defined by the | with respect to the coordinate system defined by the | |||
geodetic-datum. For example, there might be | geodetic-datum. For example, there might be | |||
uncertainty due to measurement error if an | uncertainty due to measurement error if an | |||
experimental measurement was made to determine each | experimental measurement was made to determine each | |||
location."; | location."; | |||
} | } | |||
} | } | |||
} | } | |||
choice location { | choice location { | |||
description | description | |||
"The location data either in lat/long or Cartesian values"; | "The location data either in latitude/longitude or | |||
Cartesian values"; | ||||
case ellipsoid { | case ellipsoid { | |||
leaf latitude { | leaf latitude { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 16; | fraction-digits 16; | |||
} | } | |||
units "decimal degrees"; | units "decimal degrees"; | |||
description | description | |||
"The latitude value on the astronomical body. The | "The latitude value on the astronomical body. The | |||
definition and precision of this measurement is | definition and precision of this measurement is | |||
indicated by the reference-frame."; | indicated by the reference-frame."; | |||
} | } | |||
leaf longitude { | leaf longitude { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 16; | fraction-digits 16; | |||
} | } | |||
units "decimal degrees"; | units "decimal degrees"; | |||
description | description | |||
"The longitude value on the astronomical body. The | "The longitude value on the astronomical body. The | |||
definition and precision of this measurement is | definition and precision of this measurement is | |||
indicated by the reference-frame."; | indicated by the reference-frame."; | |||
} | } | |||
leaf height { | leaf height { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 6; | fraction-digits 6; | |||
} | } | |||
units "meters"; | units "meters"; | |||
description | description | |||
"Height from a reference 0 value. The precision and '0' | "Height from a reference 0 value. The precision and | |||
value is defined by the reference-frame."; | '0' value is defined by the reference-frame."; | |||
} | } | |||
} | } | |||
case cartesian { | case cartesian { | |||
leaf x { | leaf x { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 6; | fraction-digits 6; | |||
} | } | |||
units "meters"; | units "meters"; | |||
description | description | |||
"The X value as defined by the reference-frame."; | "The X value as defined by the reference-frame."; | |||
skipping to change at page 11, line 23 ¶ | skipping to change at line 470 ¶ | |||
fraction-digits 6; | fraction-digits 6; | |||
} | } | |||
units "meters"; | units "meters"; | |||
description | description | |||
"The Z value as defined by the reference-frame."; | "The Z value as defined by the reference-frame."; | |||
} | } | |||
} | } | |||
} | } | |||
container velocity { | container velocity { | |||
description | description | |||
"If the object is in motion the velocity vector describes | "If the object is in motion, the velocity vector describes | |||
this motion at the the time given by the timestamp. For a | this motion at the time given by the timestamp. For a | |||
formula to convert these values to speed and heading see | formula to convert these values to speed and heading, see | |||
RFC XXXX."; | RFC 9179."; | |||
reference | reference | |||
"RFC XXXX: A YANG Grouping for Geographic Locations"; | "RFC 9179: A YANG Grouping for Geographic Locations"; | |||
leaf v-north { | leaf v-north { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 12; | fraction-digits 12; | |||
} | } | |||
units "meters per second"; | units "meters per second"; | |||
description | description | |||
"v-north is the rate of change (i.e., speed) towards | "v-north is the rate of change (i.e., speed) towards | |||
truth north as defined by the geodetic-system."; | true north as defined by the geodetic-system."; | |||
} | } | |||
leaf v-east { | leaf v-east { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 12; | fraction-digits 12; | |||
} | } | |||
units "meters per second"; | units "meters per second"; | |||
description | description | |||
"v-east is the rate of change (i.e., speed) perpendicular | "v-east is the rate of change (i.e., speed) perpendicular | |||
to the right of true north as defined by | to the right of true north as defined by | |||
skipping to change at page 12, line 15 ¶ | skipping to change at line 510 ¶ | |||
fraction-digits 12; | fraction-digits 12; | |||
} | } | |||
units "meters per second"; | units "meters per second"; | |||
description | description | |||
"v-up is the rate of change (i.e., speed) away from the | "v-up is the rate of change (i.e., speed) away from the | |||
center of mass."; | center of mass."; | |||
} | } | |||
} | } | |||
leaf timestamp { | leaf timestamp { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description "Reference time when location was recorded."; | description | |||
"Reference time when location was recorded."; | ||||
} | } | |||
leaf valid-until { | leaf valid-until { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The timestamp for which this geo-location is valid until. | "The timestamp for which this geo-location is valid until. | |||
If unspecified the geo-location has no specific expiration | If unspecified, the geo-location has no specific | |||
time."; | expiration time."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
4. ISO 6709:2008 Conformance | 4. ISO 6709:2008 Conformance | |||
[ISO.6709.2008] provides an appendix with a set of tests for | [ISO.6709.2008] provides an appendix with a set of tests for | |||
conformance to the standard. The tests and results are given in the | conformance to the standard. The tests and results are given in the | |||
following table along with an explanation of non-applicable tests. | following table along with an explanation of inapplicable tests. | |||
+---------+----------------------+------------------+ | +=========+===========================+====================+ | |||
| Test | Description | Pass Explanation | | | Test | Description | Pass Explanation | | |||
+=========+======================+==================+ | +=========+===========================+====================+ | |||
| A.1.2.1 | elements reqd. for a | CRS is always | | | A.1.2.1 | elements required for a | CRS is always | | |||
| | geo. point location | indicated | | | | geographic point location | indicated | | |||
+---------+----------------------+------------------+ | +---------+---------------------------+--------------------+ | |||
| A.1.2.2 | Description of a CRS | CRS register is | | | A.1.2.2 | description of a CRS from | CRS register is | | |||
| | from a register | defined | | | | a register | defined | | |||
+---------+----------------------+------------------+ | +---------+---------------------------+--------------------+ | |||
| A.1.2.3 | definition of CRS | N/A - Don't | | | A.1.2.3 | definition of CRS | N/A - Don't define | | |||
| | | define CRS | | | | | CRS | | |||
+---------+----------------------+------------------+ | +---------+---------------------------+--------------------+ | |||
| A.1.2.4 | representation of | lat/long values | | | A.1.2.4 | representation of | latitude/longitude | | |||
| | horizontal position | conform | | | | horizontal position | values conform | | |||
+---------+----------------------+------------------+ | +---------+---------------------------+--------------------+ | |||
| A.1.2.5 | representation of | height value | | | A.1.2.5 | representation of | height value | | |||
| | vertical position | conforms | | | | vertical position | conforms | | |||
+---------+----------------------+------------------+ | +---------+---------------------------+--------------------+ | |||
| A.1.2.6 | text string | N/A - No string | | | A.1.2.6 | text string | N/A - No string | | |||
| | representation | format | | | | representation | format | | |||
+---------+----------------------+------------------+ | +---------+---------------------------+--------------------+ | |||
Table 1: Conformance Test Results | Table 1: Conformance Test Results | |||
For test "A.1.2.1" the YANG geo location object either includes a | For test 'A.1.2.1', the YANG geo-location object either includes a | |||
Coordinate Reference System (CRS) ("reference-frame") or has a | Coordinate Reference System (CRS) ('reference-frame') or has a | |||
default defined ([WGS84]). | default defined [WGS84]. | |||
For "A.1.2.3" we do not define our own CRS, and doing so is not | For 'A.1.2.3', we do not define our own CRS, and doing so is not | |||
required for conformance. | required for conformance. | |||
For "A.1.2.6" we do not define a text string representation, which is | For 'A.1.2.6', we do not define a text string representation, which | |||
also not required for conformance. | is also not required for conformance. | |||
5. Usability | 5. Usability | |||
The geo-location object defined in this document and YANG module have | The geo-location object defined in this document and YANG module has | |||
been designed to be usable in a very broad set of applications. This | been designed to be usable in a very broad set of applications. This | |||
includes the ability to locate things on astronomical bodies other | includes the ability to locate things on astronomical bodies other | |||
than Earth, and to utilize entirely different coordinate systems and | than Earth, and to utilize entirely different coordinate systems and | |||
realities. | realities. | |||
5.1. Portability | 5.1. Portability | |||
In order to verify portability while developing this module the | In order to verify portability while developing this module, the | |||
following standards and standard APIs were considered. | following standards and standard APIs were considered. | |||
5.1.1. IETF URI Value | 5.1.1. IETF URI Value | |||
[RFC5870] defines a standard URI value for geographic location data. | [RFC5870] defines a standard URI value for geographic location data. | |||
It includes the ability to specify the "geodetic-value" (it calls | It includes the ability to specify the 'geodetic-value' (it calls | |||
this "crs") with the default being "wgs-84" [WGS84]. For the | this 'crs') with the default being 'wgs-84' [WGS84]. For the | |||
location data it allows 2 to 3 coordinates defined by the "crs" | location data, it allows two to three coordinates defined by the | |||
value. For accuracy, it has a single "u" parameter for specifying | 'crs' value. For accuracy, it has a single 'u' parameter for | |||
uncertainty. The "u" value is in fractions of meters and applies to | specifying uncertainty. The 'u' value is in fractions of meters and | |||
all the location values. As the URI is a string, all values are | applies to all the location values. As the URI is a string, all | |||
specified as strings and so are capable of as much precision as | values are specified as strings and so are capable of as much | |||
required. | precision as required. | |||
URI values can be mapped to and from the YANG grouping, with the | URI values can be mapped to and from the YANG grouping with the | |||
caveat that some loss of precision (in the extremes) may occur due to | caveat that some loss of precision (in the extremes) may occur due to | |||
the YANG grouping using decimal64 values rather than strings. | the YANG grouping using decimal64 values rather than strings. | |||
5.1.2. W3C | 5.1.2. W3C | |||
W3C Defines a geo-location API in [W3CGEO]. We show a snippet of | W3C defines a geolocation API in [W3CGEO]. We show a snippet of code | |||
code below which defines the geo-location data for this API. This is | below that defines the geolocation data for this API. This is used | |||
used by many applications (e.g., Google Maps API). | by many applications (e.g., Google Maps API). | |||
interface GeolocationPosition { | interface GeolocationPosition { | |||
readonly attribute GeolocationCoordinates coords; | readonly attribute GeolocationCoordinates coords; | |||
readonly attribute DOMTimeStamp timestamp; | readonly attribute DOMTimeStamp timestamp; | |||
}; | }; | |||
interface GeolocationCoordinates { | interface GeolocationCoordinates { | |||
readonly attribute double latitude; | readonly attribute double latitude; | |||
readonly attribute double longitude; | readonly attribute double longitude; | |||
readonly attribute double? altitude; | readonly attribute double? altitude; | |||
readonly attribute double accuracy; | readonly attribute double accuracy; | |||
readonly attribute double? altitudeAccuracy; | readonly attribute double? altitudeAccuracy; | |||
readonly attribute double? heading; | readonly attribute double? heading; | |||
readonly attribute double? speed; | readonly attribute double? speed; | |||
}; | }; | |||
Figure 1: Snippet Showing Geo-Location Definition | Figure 1: Snippet Showing Geolocation Definition | |||
5.1.2.1. Compare with YANG Model | 5.1.2.1. Comparison with YANG Data Model | |||
+------------------+--------------+-----------------+-------------+ | +==================+==============+=================+=============+ | |||
| Field | Type | YANG | Type | | | Field | Type | YANG | Type | | |||
+==================+==============+=================+=============+ | +==================+==============+=================+=============+ | |||
| accuracy | double | coord-accuracy | dec64 fr 6 | | | accuracy | double | coord-accuracy | dec64 fr 6 | | |||
+------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
| altitude | double | height | dec64 fr 6 | | | altitude | double | height | dec64 fr 6 | | |||
+------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
| altitudeAccuracy | double | height-accuracy | dec64 fr 6 | | | altitudeAccuracy | double | height-accuracy | dec64 fr 6 | | |||
+------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
| heading | double | v-north, v-east | dec64 fr 12 | | | heading | double | v-north, v-east | dec64 fr 12 | | |||
+------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
skipping to change at page 15, line 19 ¶ | skipping to change at line 641 ¶ | |||
+------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
| longitude | double | longitude | dec64 fr 16 | | | longitude | double | longitude | dec64 fr 16 | | |||
+------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
| speed | double | v-north, v-east | dec64 fr 12 | | | speed | double | v-north, v-east | dec64 fr 12 | | |||
+------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
| timestamp | DOMTimeStamp | timestamp | string | | | timestamp | DOMTimeStamp | timestamp | string | | |||
+------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
Table 2 | Table 2 | |||
accuracy (double) Accuracy of "latitude" and "longitude" values in | accuracy (double): Accuracy of 'latitude' and 'longitude' values in | |||
meters. | meters. | |||
altitude (double) Optional height in meters above the [WGS84] | altitude (double): Optional height in meters above the [WGS84] | |||
ellipsoid. | ellipsoid. | |||
altitudeAccuracy (double) Optional accuracy of "altitude" value in | altitudeAccuracy (double): Optional accuracy of 'altitude' value in | |||
meters. | meters. | |||
heading (double) Optional Direction in decimal deg from true north | heading (double): Optional direction in decimal degrees from true | |||
increasing clock-wise. | north increasing clockwise. | |||
latitude, longitude (double) Standard lat/long values in decimal | latitude, longitude (double): Standard latitude/longitude values in | |||
degrees. | decimal degrees. | |||
speed (double) Speed along heading in meters per second. | speed (double): Speed along the heading in meters per second. | |||
timestamp (DOMTimeStamp) Specifies milliseconds since the Unix EPOCH | timestamp (DOMTimeStamp): Specifies milliseconds since the UNIX | |||
in 64 bit unsigned integer. The YANG model defines the timestamp | Epoch in a 64-bit unsigned integer. The YANG data model defines | |||
with arbitrarily large precision by using a string which | the timestamp with arbitrarily large precision by using a string | |||
encompasses all representable values of this timestamp value. | that encompasses all representable values of this timestamp value. | |||
W3C API values can be mapped to the YANG grouping, with the caveat | W3C API values can be mapped to the YANG grouping with the caveat | |||
that some loss of precision (in the extremes) may occur due to the | that some loss of precision (in the extremes) may occur due to the | |||
YANG grouping using decimal64 values rather than doubles. | YANG grouping using decimal64 values rather than doubles. | |||
Conversely, only YANG values for Earth using the default "wgs-84" | Conversely, only YANG values for Earth using the default 'wgs-84' | |||
[WGS84] as the "geodetic-datum", can be directly mapped to the W3C | [WGS84] as the 'geodetic-datum' can be directly mapped to the W3C | |||
values, as W3C does not provide the extra features necessary to map | values as W3C does not provide the extra features necessary to map | |||
the broader set of values supported by the YANG grouping. | the broader set of values supported by the YANG grouping. | |||
5.1.3. Geography Markup Language (GML) | 5.1.3. Geography Markup Language (GML) | |||
ISO adopted the Geography Markup Language (GML) defined by OGC 07-036 | ISO adopted the Geography Markup Language (GML) defined by OGC 07-036 | |||
as [ISO.19136.2007]. GML defines, among many other things, a | [OGC] as [ISO.19136.2007]. GML defines, among many other things, a | |||
position type "gml:pos" which is a sequence of "double" values. This | position type 'gml:pos', which is a sequence of 'double' values. | |||
sequence of values represents coordinates in a given CRS. The CRS is | This sequence of values represents coordinates in a given CRS. The | |||
either inherited from containing elements or directly specified as | CRS is either inherited from containing elements or directly | |||
attributes "srsName" and optionally "srsDimension" on the "gml:pos". | specified as attributes 'srsName' and optionally 'srsDimension' on | |||
the 'gml:pos'. | ||||
GML defines an Abstract CRS type which Concrete CRS types derive | GML defines an Abstract CRS type from which Concrete CRS types are | |||
from. This allows for many types of CRS definitions. We are | derived. This allows for many types of CRS definitions. We are | |||
concerned with the Geodetic CRS type which can have either | concerned with the Geodetic CRS type, which can have either | |||
ellipsoidal or Cartesian coordinates. We believe that other non- | ellipsoidal or Cartesian coordinates. We believe that other non- | |||
Earth based CRS as well as virtual CRS should also be representable | Earth-based CRSs as well as virtual CRSs should also be representable | |||
by the GML CRS types. | by the GML CRS types. | |||
Thus, GML "gml:pos" values can be mapped directly to the YANG | Thus, GML 'gml:pos' values can be mapped directly to the YANG | |||
grouping, with the caveat that some loss of precision (in the | grouping with the caveat that some loss of precision (in the | |||
extremes) may occur due to the YANG grouping using decimal64 values | extremes) may occur due to the YANG grouping using decimal64 values | |||
rather than doubles. | rather than doubles. | |||
Conversely, YANG grouping values can be mapped to GML as directly as | Conversely, mapping YANG grouping values to GML is fully supported | |||
the GML CRS available definitions allow with a minimum of Earth-based | for Earth-based geodetic systems. | |||
geodetic systems fully supported. | ||||
GML also defines an observation value in "gml:Observation" which | GML also defines an observation value in 'gml:Observation', which | |||
includes a timestamp value "gml:validTime" in addition to other | includes a timestamp value 'gml:validTime' in addition to other | |||
components such as "gml:using" "gml:target" and "gml:resultOf". Only | components such as 'gml:using', 'gml:target', and 'gml:resultOf'. | |||
the timestamp is mappable to and from the YANG grouping. | Only the timestamp is mappable to and from the YANG grouping. | |||
Furthermore, "gml:validTime" can either be an Instantaneous measure | Furthermore, 'gml:validTime' can either be an instantaneous measure | |||
("gml:TimeInstant") or a time period ("gml:TimePeriod"). The | ('gml:TimeInstant') or a time period ('gml:TimePeriod'). The | |||
instantaneous "gml:TimeInstant" is mappable to and from the YANG | instantaneous 'gml:TimeInstant' is mappable to and from the YANG | |||
grouping "timestamp" value, and values down to the resolution of | grouping 'timestamp' value, and values down to the resolution of | |||
seconds for "gml:TimePeriod" can be mapped using the "valid-until" | seconds for 'gml:TimePeriod' can be mapped using the 'valid-until' | |||
node of the YANG grouping. | node of the YANG grouping. | |||
5.1.4. KML | 5.1.4. KML | |||
KML 2.2 [KML22] (formerly Keyhole Markup Language) was submitted by | KML 2.2 [KML22] (formerly Keyhole Markup Language) was submitted by | |||
Google to the Open Geospatial Consortium, | Google to the Open Geospatial Consortium | |||
(https://www.opengeospatial.org/) and was adopted. The latest | (https://www.opengeospatial.org/) and was adopted. The latest | |||
version as of this writing is KML 2.3 [KML23]. This schema includes | version as of this writing is KML 2.3 [KML23]. This schema includes | |||
geographic location data in some of its objects (e.g., "kml:Point" or | geographic location data in some of its objects (e.g., 'kml:Point' or | |||
"kml:Camera" objects). This data is provided in string format and | 'kml:Camera' objects). This data is provided in string format and | |||
corresponds to the [W3CGEO] values. The timestamp value is also | corresponds to the values specified in [W3CGEO]. The timestamp value | |||
specified as a string as in our YANG grouping. | is also specified as a string as in our YANG grouping. | |||
KML has some special handling for the height value useful for | KML has some special handling for the height value that is useful for | |||
visualization software, "kml:altitudeMode". These values for | visualization software, 'kml:altitudeMode'. The values for | |||
"kml:altitudeMode" include indicating the height is ignored | 'kml:altitudeMode' include 'clampToGround', which indicates the | |||
("clampToGround"), in relation to the location's ground level | height is ignored; 'relativeToGround', which indicates the height | |||
("relativeToGround"), or in relation to the geodetic datum | value is relative to the location's ground level; or 'absolute', | |||
("absolute"). The YANG grouping can directly map the ignored and | which indicates the height value is an absolute value within the | |||
absolute cases, but not the relative to ground case. | geodetic datum. The YANG grouping can directly map the ignored and | |||
absolute cases but not the relative-to-ground case. | ||||
In addition to the "kml:altitudeMode" KML also defines two seafloor | In addition to the 'kml:altitudeMode', KML also defines two seafloor | |||
height values using "kml:seaFloorAltitudeMode". One value is to | height values using 'kml:seaFloorAltitudeMode'. One value is to | |||
ignore the height value ("clampToSeaFloor") and the other is relative | ignore the height value ('clampToSeaFloor') and the other is relative | |||
("relativeToSeaFloor"). As with the "kml:altitudeMode" value, the | ('relativeToSeaFloor'). As with the 'kml:altitudeMode' value, the | |||
YANG grouping supports the ignore case but not the relative case. | YANG grouping supports the ignore case but not the relative case. | |||
The KML location values use a geodetic datum defined in Annex A by | The KML location values use a geodetic datum defined in Annex A of | |||
the GML Coordinate Reference System (CRS) [ISO.19136.2007] with | [ISO.19136.2007] with identifier 'LonLat84_5773'. The altitude value | |||
identifier "LonLat84_5773". The altitude value for KML absolute | for KML absolute height mode is measured from the vertical datum | |||
height mode is measured from the vertical datum specified by [WGS84]. | specified by [WGS84]. | |||
Thus, the YANG grouping and KML values can be directly mapped in both | Thus, the YANG grouping and KML values can be directly mapped in both | |||
directions (when using a supported altitude mode) with the caveat | directions (when using a supported altitude mode) with the caveat | |||
that some loss of precision (in the extremes) may occur due to the | that some loss of precision (in the extremes) may occur due to the | |||
YANG grouping using decimal64 values rather than strings. For the | YANG grouping using decimal64 values rather than strings. For the | |||
relative height cases, the application doing the transformation is | relative height cases, the application doing the transformation is | |||
expected to have the data available to transform the relative height | expected to have the data available to transform the relative height | |||
into an absolute height, which can then be expressed using the YANG | into an absolute height, which can then be expressed using the YANG | |||
grouping. | grouping. | |||
6. IANA Considerations | 6. IANA Considerations | |||
6.1. Geodetic System Values Registry | 6.1. Geodetic System Values Registry | |||
IANA is asked to create a new registry "Geodetic System Values" under | IANA has created the "Geodetic System Values" registry under the | |||
a new protocol category group "YANG Geographic Location Parameters". | "YANG Geographic Location Parameters" registry. | |||
This registry allocates names for standard geodetic systems. Often | This registry allocates names for standard geodetic systems. Often, | |||
these values are referred to using multiple names (e.g., full names | these values are referred to using multiple names (e.g., full names | |||
or multiple acronyms). The intent of this registry is to provide a | or multiple acronyms). The intent of this registry is to provide a | |||
single standard value for any given geodetic system. | single standard value for any given geodetic system. | |||
The values SHOULD use an acronym when available, they MUST be | The values SHOULD use an acronym when available, they MUST be | |||
converted to lower case, and spaces MUST be changed to dashes "-". | converted to lowercase, and spaces MUST be changed to dashes "-". | |||
Each entry should be sufficient to define the 2 coordinate values, | Each entry should be sufficient to define the two coordinate values | |||
and to define height if height is required. So, for example, the | and to define height if height is required. So, for example, the | |||
"wgs-84" is defined as WGS-84 with the geoid updated by at least | 'wgs-84' is defined as WGS-84 with the geoid updated by at least | |||
[EGM96] for height values. Specific entries for [EGM96] and [EGM08] | [EGM96] for height values. Specific entries for [EGM96] and [EGM08] | |||
are present if a more precise definition of the data is required. | are present if a more precise definition of the data is required. | |||
It should be noted that [RFC5870] also creates a registry for | It should be noted that [RFC5870] also created a registry for | |||
Geodetic Systems (it calls CRS); however, this registry has a very | geodetic systems (the "'geo' URI 'crs' Parameter Values" registry); | |||
strict modification policy. The authors of [RFC5870] have the stated | however, this registry has a very strict modification policy. The | |||
goal of making CRS registration hard to avoid proliferation of CRS | authors of [RFC5870] have the stated goal of making CRS registration | |||
values. As our module defines alternate systems and has a broader | hard to avoid proliferation of CRS values. As our module defines | |||
(beyond Earth) scope, the registry defined below is meant to be more | alternate systems and has a broader scope (i.e., beyond Earth), the | |||
easily modified. | registry defined below is meant to be more easily modified. | |||
The allocation policy for this registry is First Come, First Served, | The allocation policy for this registry is First Come First Served | |||
[RFC8126] as the intent is simply to avoid duplicate values. | [RFC8126], as the intent is simply to avoid duplicate values. | |||
The Reference value can either be a document or a contact person as | The Reference value can either be a document or a contact person as | |||
defined in [RFC8126]. The Change Control (i.e., Owner) is also | defined in [RFC8126]. The Change Controller (i.e., Owner) is also | |||
defined by [RFC8126]. | defined by [RFC8126]. | |||
The initial values for this registry are as follows. They include | The initial values for this registry are as follows. They include | |||
the non-Earth based geodetic-datum value for the moon based on [ME]. | the non-Earth-based geodetic-datum value for the Moon based on | |||
[MEAN-EARTH]. | ||||
+-----------+------------------------------+-----------+---------+ | +===========+==================+===========+===================+ | |||
| Name | Description | Reference | Change | | | Name | Description | Reference | Change Controller | | |||
+-----------+------------------------------+-----------+---------+ | +===========+==================+===========+===================+ | |||
| | | /Contact | Control | | | me | Mean Earth/Polar | RFC 9179 | IETF | | |||
+===========+==============================+===========+=========+ | | | Axis (Moon) | | | | |||
| me | Mean Earth/Polar Axis (Moon) | this | IESG | | +-----------+------------------+-----------+-------------------+ | |||
+-----------+------------------------------+-----------+---------+ | | wgs-84-96 | World Geodetic | RFC 9179 | IETF | | |||
| wgs-84-96 | World Geodetic System 1984 | this | IESG | | | | System 1984 | | | | |||
+-----------+------------------------------+-----------+---------+ | +-----------+------------------+-----------+-------------------+ | |||
| wgs-84-08 | World Geodetic System 1984 | this | IESG | | | wgs-84-08 | World Geodetic | RFC 9179 | IETF | | |||
+-----------+------------------------------+-----------+---------+ | | | System 1984 | | | | |||
| wgs-84 | World Geodetic System 1984 | this | IESG | | +-----------+------------------+-----------+-------------------+ | |||
+-----------+------------------------------+-----------+---------+ | | wgs-84 | World Geodetic | RFC 9179 | IETF | | |||
| | System 1984 | | | | ||||
+-----------+------------------+-----------+-------------------+ | ||||
Table 3 | Table 3 | |||
6.2. Updates to the IETF XML Registry | 6.2. Updates to the IETF XML Registry | |||
This document registers a URI in the "IETF XML Registry" [RFC3688]. | This document registers a URI in the "IETF XML Registry" [RFC3688]. | |||
Following the format in [RFC3688], the following registration has | Following the format in [RFC3688], the following registration has | |||
been made: | been made: | |||
URI urn:ietf:params:xml:ns:yang:ietf-geo-location | URI: urn:ietf:params:xml:ns:yang:ietf-geo-location | |||
Registrant Contact: The IESG. | ||||
Registrant Contact The IESG. | XML: N/A; the requested URI is an XML namespace. | |||
XML N/A; the requested URI is an XML namespace. | ||||
6.3. Updates to the YANG Module Names Registry | 6.3. Updates to the YANG Module Names Registry | |||
This document registers one YANG module in the "YANG Module Names" | This document registers one YANG module in the "YANG Module Names" | |||
registry [RFC6020]. Following the format in [RFC6020], the following | registry [RFC6020]. Following the format in [RFC6020], the following | |||
registration has been made: | registration has been made: | |||
name ietf-geo-location | Name: ietf-geo-location | |||
Maintained by IANA: N | ||||
namespace urn:ietf:params:xml:ns:yang:ietf-geo-location | Namespace: urn:ietf:params:xml:ns:yang:ietf-geo-location | |||
Prefix: geo | ||||
prefix geo | Reference: RFC 9179 | |||
reference RFC XXXX (RFC Ed.: replace XXXX with RFC number and remove | ||||
this note.) | ||||
7. Security Considerations | 7. Security Considerations | |||
The YANG module specified in this document defines a schema for data | The YANG module specified in this document defines a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as the Network Configuration Protocol (NETCONF) [RFC6241] or RESTCONF | |||
is the secure transport layer, and the mandatory-to-implement secure | [RFC8040]. The lowest NETCONF layer is the secure transport layer, | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | and the mandatory-to-implement secure transport is Secure Shell (SSH) | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to- | |||
[RFC8446]. | implement secure transport is TLS [RFC8446]. | |||
The NETCONF access control model [RFC8341] provides the means to | The NETCONF access control model [RFC8341] provides the means to | |||
restrict access for particular NETCONF or RESTCONF users to a | restrict access for particular NETCONF or RESTCONF users to a | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | preconfigured subset of all available NETCONF or RESTCONF protocol | |||
operations and content. | operations and content. | |||
Since the modules defined in this document only define groupings, | Since the modules defined in this document only define groupings, | |||
these considerations are primarily for the designers of other modules | these considerations are primarily for the designers of other modules | |||
that use these groupings. | that use these groupings. | |||
skipping to change at page 20, line 12 ¶ | skipping to change at line 867 ¶ | |||
important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
notification) to these data nodes. | notification) to these data nodes. | |||
Since the grouping defined in this module identifies locations, | Since the grouping defined in this module identifies locations, | |||
authors using this grouping SHOULD consider any privacy issues that | authors using this grouping SHOULD consider any privacy issues that | |||
may arise when the data is readable (e.g., customer device locations, | may arise when the data is readable (e.g., customer device locations, | |||
etc). | etc). | |||
8. Normative References | 8. Normative References | |||
[EGM08] Pavlis, N.K., Holmes, S.A., Kenyon, S.C., and J.K. Factor, | [EGM08] Pavlis, N., Holmes, S., Kenyon, S., and J. Factor, "An | |||
"An Earth Gravitational Model to Degree 2160: EGM08.", | Earth Gravitational Model to Degree 2160: EGM08.", | |||
Presented at the 2008 General Assembly of the European | Presented at the 2008 General Assembly of the European | |||
Geosciences Union, Vienna, Arpil13-18, 2008, 2008. | Geosciences Union, Vienna, April 2008. | |||
[EGM96] Lemoine, F.G., Kenyon, S.C., Factor, J.K., Trimmer, R.G., | [EGM96] Lemoine, F., Kenyon, S., Factor, J., Trimmer, R., Pavlis, | |||
Pavlis, N.K., Chinn, D.S., Cox, C.M., Klosko, S.M., | N., Chinn, D., Cox, C., Klosko, S., Luthcke, S., Torrence, | |||
Luthcke, S.B., Torrence, M.H., Wang, Y.M., Williamson, | M., Wang, Y., Williamson, R., Pavlis, E., Rapp, R., and T. | |||
R.G., Pavlis, E.C., Rapp, R.H., and T.R. Olson, "The | Olson, "The Development of the Joint NASA GSFC and the | |||
Development of the Joint NASA GSFC and the National | National Imagery and Mapping Agency (NIMA) Geopotential | |||
Imagery and Mapping Agency (NIMA) Geopotential Model | Model EGM96.", NASA/TP-1998-206861, July 1998. | |||
EGM96.", Technical Report NASA/TP-1998-206861, NASA, | ||||
Greenbelt., 1998. | ||||
[ISO.6709.2008] | [ISO.6709.2008] | |||
International Organization for Standardization, "ISO | International Organization for Standardization, "Standard | |||
6709:2008 Standard representation of geographic point | representation of geographic point location by | |||
location by coordinates.", 2008. | coordinates", ISO 6709:2008, 2008. | |||
[ME] National Aeronautics and Space Administration, Goddard | [MEAN-EARTH] | |||
Space Flight Center., "A Standardized Lunar Coordinate | NASA, "A Standardized Lunar Coordinate System for the | |||
System for the Lunar Reconnaissance Orbiter, Version 4.", | Lunar Reconnaissance Orbiter", Version 4, Goddard Space | |||
14 May 2008. | Flight Center, May 2008. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
and A. Bierman, Ed., "Network Configuration Protocol | ||||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
<https://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
<https://www.rfc-editor.org/info/rfc6242>. | ||||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
<https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Access Control Model", STD 91, RFC 8341, | ||||
DOI 10.17487/RFC8341, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8341>. | ||||
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
and R. Wilton, "Network Management Datastore Architecture | and R. Wilton, "Network Management Datastore Architecture | |||
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8342>. | <https://www.rfc-editor.org/info/rfc8342>. | |||
[WGS84] National Imagery and Mapping Agency., "National Imagery | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
and Mapping Agency Technical Report 8350.2, Third | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
Edition.", 3 January 2000. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[WGS84] National Imagery and Mapping Agency, "Department of | ||||
Defense World Geodetic System 1984", NIMA TR8350.2, Third | ||||
Edition, January 2000. | ||||
9. Informative References | 9. Informative References | |||
[ISO.19136.2007] | [ISO.19136.2007] | |||
International Organization for Standardization, "ISO | International Organization for Standardization, | |||
19136:2007 Geographic information -- Geography Markup | "Geographic information -- Geography Markup Language | |||
Language (GML)". | (GML)", ISO 19136:2007. | |||
[KML22] Wilson, T., Ed., "OGC KML (Version 2.2)", 14 April 2008, | [KML22] Wilson, T., Ed., "OGC KML", Version 2.2, April 2008, | |||
<http://portal.opengeospatial.org/ | <https://portal.opengeospatial.org/ | |||
files/?artifact_id=27810>. | files/?artifact_id=27810>. | |||
[KML23] Burggraf, D., Ed., "OGC KML 2.3", 4 August 2015, | [KML23] Burggraf, D., Ed., "OGC KML", Version 2.3, August 2015, | |||
<http://docs.opengeospatial.org/ | <https://docs.opengeospatial.org/ | |||
is/12-007r2/12-007r2.html>. | is/12-007r2/12-007r2.html>. | |||
[OGC] OpenGIS, "OpenGISĀ® Geography Markup Language (GML) | ||||
Encoding Standard", Version: 3.2.1, OGC 07-036, August | ||||
2007, <https://portal.ogc.org/files/?artifact_id=20509>. | ||||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC5870] Mayrhofer, A. and C. Spanring, "A Uniform Resource | [RFC5870] Mayrhofer, A. and C. Spanring, "A Uniform Resource | |||
Identifier for Geographic Locations ('geo' URI)", | Identifier for Geographic Locations ('geo' URI)", | |||
RFC 5870, DOI 10.17487/RFC5870, June 2010, | RFC 5870, DOI 10.17487/RFC5870, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5870>. | <https://www.rfc-editor.org/info/rfc5870>. | |||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
<https://www.rfc-editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
and A. Bierman, Ed., "Network Configuration Protocol | ||||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
<https://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
<https://www.rfc-editor.org/info/rfc6242>. | ||||
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
<https://www.rfc-editor.org/info/rfc8040>. | ||||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | [W3CGEO] Popescu, A., "Geolocation API Specification", 2nd Edition, | |||
Access Control Model", STD 91, RFC 8341, | November 2016, <https://www.w3.org/TR/2016/REC- | |||
DOI 10.17487/RFC8341, March 2018, | geolocation-API-20161108/>. | |||
<https://www.rfc-editor.org/info/rfc8341>. | ||||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
<https://www.rfc-editor.org/info/rfc8446>. | ||||
[W3CGEO] Popescu, A., "Geolocation API Specification", 8 November | ||||
2016, <https://www.w3.org/TR/2016/REC-geolocation-API- | ||||
20161108/>. | ||||
Appendix A. Examples | Appendix A. Examples | |||
Below is a fictitious module that uses the geo-location grouping. | Below is a fictitious module that uses the geo-location grouping. | |||
module example-uses-geo-location { | module example-uses-geo-location { | |||
namespace | namespace | |||
"urn:example:example-uses-geo-location"; | "urn:example:example-uses-geo-location"; | |||
prefix ugeo; | prefix ugeo; | |||
import ietf-geo-location { prefix geo; } | import ietf-geo-location { prefix geo; } | |||
organization "Empty Org"; | organization "Empty Org"; | |||
contact "Example Author <eauthor@example.com>"; | contact "Example Author <eauthor@example.com>"; | |||
description "Example use of geo-location"; | description | |||
revision 2019-02-02 { reference "None"; } | "Example use of geo-location"; | |||
revision 2022-2-7 { reference "None"; } | ||||
container locatable-items { | container locatable-items { | |||
description "container of locatable items"; | description | |||
"The container of locatable items"; | ||||
list locatable-item { | list locatable-item { | |||
key name; | key name; | |||
description "A locatable item"; | description | |||
"A locatable item"; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description "name of locatable item"; | description | |||
"The name of locatable item"; | ||||
} | } | |||
uses geo:geo-location; | uses geo:geo-location; | |||
} | } | |||
} | } | |||
} | } | |||
Figure 2: Example YANG module using geo location. | Figure 2: Example YANG Module Using Geolocation | |||
Below is the YANG tree for the fictitious module that uses the geo- | Below is the YANG tree for the fictitious module that uses the geo- | |||
location grouping. | location grouping. | |||
module: example-uses-geo-location | module: example-uses-geo-location | |||
+--rw locatable-items | +--rw locatable-items | |||
+--rw locatable-item* [name] | +--rw locatable-item* [name] | |||
+--rw name string | +--rw name string | |||
+--rw geo-location | +--rw geo-location | |||
+--rw reference-frame | +--rw reference-frame | |||
skipping to change at page 24, line 34 ¶ | skipping to change at line 1048 ¶ | |||
| +--rw x? decimal64 | | +--rw x? decimal64 | |||
| +--rw y? decimal64 | | +--rw y? decimal64 | |||
| +--rw z? decimal64 | | +--rw z? decimal64 | |||
+--rw velocity | +--rw velocity | |||
| +--rw v-north? decimal64 | | +--rw v-north? decimal64 | |||
| +--rw v-east? decimal64 | | +--rw v-east? decimal64 | |||
| +--rw v-up? decimal64 | | +--rw v-up? decimal64 | |||
+--rw timestamp? yang:date-and-time | +--rw timestamp? yang:date-and-time | |||
+--rw valid-until? yang:date-and-time | +--rw valid-until? yang:date-and-time | |||
Figure 3: Example YANG Tree Using Geolocation | ||||
Below is some example YANG XML data for the fictitious module that | Below is some example YANG XML data for the fictitious module that | |||
uses the geo-location grouping. | uses the geo-location grouping. | |||
<locatable-items xmlns="urn:example:example-uses-geo-location"> | <locatable-items xmlns="urn:example:example-uses-geo-location"> | |||
<locatable-item> | <locatable-item> | |||
<name>Gaetana's</name> | <name>Gaetana's</name> | |||
<geo-location> | <geo-location> | |||
<latitude>40.73297</latitude> | <latitude>40.73297</latitude> | |||
<longitude>-74.007696</longitude> | <longitude>-74.007696</longitude> | |||
</geo-location> | </geo-location> | |||
skipping to change at page 25, line 41 ¶ | skipping to change at line 1105 ¶ | |||
<reference-frame> | <reference-frame> | |||
<astronomical-body>moon</astronomical-body> | <astronomical-body>moon</astronomical-body> | |||
<geodetic-system> | <geodetic-system> | |||
<geodetic-datum>me</geodetic-datum> | <geodetic-datum>me</geodetic-datum> | |||
</geodetic-system> | </geodetic-system> | |||
</reference-frame> | </reference-frame> | |||
</geo-location> | </geo-location> | |||
</locatable-item> | </locatable-item> | |||
</locatable-items> | </locatable-items> | |||
Figure 3: Example XML data of geo location use. | Figure 4: Example XML Data of Geolocation Use | |||
Appendix B. Acknowledgments | Acknowledgments | |||
We would like to thank Jim Biard and Ben Koziol for their reviews and | We would like to thank Jim Biard and Ben Koziol for their reviews and | |||
suggested improvements. We would also like to thank Peter Lothberg | suggested improvements. We would also like to thank Peter Lothberg | |||
for the motivation as well as help in defining a broadly useful | for the motivation as well as help in defining a broadly useful | |||
geographic location object, and Acee Lindem and Qin Wu for their work | geographic location object as well as Acee Lindem and Qin Wu for | |||
on a geographic location object that led to this documents' creation. | their work on a geographic location object that led to this | |||
We would also like to thank the document shepherd Kent Watsen. | document's creation. We would also like to thank the Document | |||
Shepherd Kent Watsen. | ||||
Author's Address | Author's Address | |||
Christian Hopps | Christian Hopps | |||
LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
Email: chopps@chopps.org | Email: chopps@chopps.org | |||
End of changes. 135 change blocks. | ||||
395 lines changed or deleted | 399 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |