| < draft-ietf-netmod-geo-location-03.txt | draft-ietf-netmod-geo-location-04.txt > | |||
|---|---|---|---|---|
| Network Working Group C. Hopps | Network Working Group C. Hopps | |||
| Internet-Draft LabN Consulting, L.L.C. | Internet-Draft LabN Consulting, L.L.C. | |||
| Intended status: Standards Track 13 February 2020 | Intended status: Standards Track 1 March 2020 | |||
| Expires: 16 August 2020 | Expires: 2 September 2020 | |||
| YANG Geo Location | A YANG Grouping for Geographic Locations | |||
| draft-ietf-netmod-geo-location-03 | draft-ietf-netmod-geo-location-04 | |||
| Abstract | Abstract | |||
| This document defines a generic geographical location object YANG | This document defines a generic geographical location object YANG | |||
| grouping. The geographical location grouping is intended to be used | grouping. The geographical location grouping is intended to be used | |||
| in YANG models for specifying a location on or in reference to the | in YANG models for specifying a location on or in reference to the | |||
| Earth or any other astronomical object. | Earth or any other astronomical object. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at page 1, line 33 ¶ | skipping to change at page 1, line 33 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 16 August 2020. | This Internet-Draft will expire on 2 September 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 3, line 28 ¶ | skipping to change at page 3, line 28 ¶ | |||
| 2. The Geo Location Object | 2. The Geo Location 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 The Earth or Mars, a | astronomical body. It could be a planet such as The 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". | |||
| skipping to change at page 13, line 28 ¶ | skipping to change at page 13, line 28 ¶ | |||
| all the location values. As the URI is a string, all values are | all the location values. As the URI is a string, all values are | |||
| specifies as strings and so are capable of as much precision as | specifies as strings and so are capable of as much precision as | |||
| required. | 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 | |||
| See https://w3c.github.io/geolocation-api/#dom-geolocationposition. | ||||
| W3C Defines a geo-location API in [W3CGEO]. We show a snippet of | W3C Defines a geo-location API in [W3CGEO]. We show a snippet of | |||
| code below which defines the geo-location data for this API. This is | code below which defines the geo-location data for this API. This is | |||
| used by many application (e.g., Google Maps API). | used by many application (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? speed; | readonly attribute double? speed; | |||
| }; | }; | |||
| Figure 1: Snippet Showing Geo-Location Definition | Figure 1: Snippet Showing Geo-Location Definition | |||
| 5.1.2.1. Compare with YANG Model | 5.1.2.1. Compare with YANG Model | |||
| +------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
| | Field | Type | YANG | Type | | | Field | Type | YANG | Type | | |||
| +==================+==============+=================+=============+ | +==================+==============+=================+=============+ | |||
| | accuracy | double | coord-accuracy | dec64 fr 6 | | | accuracy | double | coord-accuracy | dec64 fr 6 | | |||
| +------------------+--------------+-----------------+-------------+ | +------------------+--------------+-----------------+-------------+ | |||
| skipping to change at page 16, line 8 ¶ | skipping to change at page 16, line 8 ¶ | |||
| "gml:validTime" can either be an Instantaneous measure | "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 using the | seconds for "gml:TimePeriod" can be mapped using the using the | |||
| "valid-for" node of the YANG grouping. | "valid-for" 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 Open Geospatial Consortium (OGC) | Google to the Open Geospatial Consortium, | |||
| https://www.opengeospatial.org/ and was adopted. The latest version | (https://www.opengeospatial.org/) and was adopted. The latest | |||
| 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 [W3CGEO] values. The timestamp value is also | |||
| specified as a string as in our YANG grouping. | 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 useful for | |||
| visualization software, "kml:altitudeMode". These values for | visualization software, "kml:altitudeMode". These values for | |||
| "kml:altitudeMode" include indicating the height is ignored | "kml:altitudeMode" include indicating the height is ignored | |||
| ("clampToGround"), in relation to the location's ground level | ("clampToGround"), in relation to the location's ground level | |||
| ("relativeToGround"), or in relation to the geodetic datum | ("relativeToGround"), or in relation to the geodetic datum | |||
| skipping to change at page 18, line 34 ¶ | skipping to change at page 18, line 34 ¶ | |||
| [ISO.6709.2008] | [ISO.6709.2008] | |||
| International Organization for Standardization, "ISO | International Organization for Standardization, "ISO | |||
| 6709:2008 Standard representation of geographic point | 6709:2008 Standard representation of geographic point | |||
| location by coordinates.", 2008. | location by coordinates.", 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>. | |||
| [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>. | ||||
| [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>. | ||||
| [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 | [WGS84] National Imagery and Mapping Agency., "National Imagery | |||
| and Mapping Agency Technical Report 8350.2, Third | and Mapping Agency Technical Report 8350.2, Third | |||
| Edition.", 3 January 2000, <http://earth- | Edition.", 3 January 2000, | |||
| info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf>. | <http://earth-info.nga.mil/GandG/publications/tr8350.2/ | |||
| wgs84fin.pdf>. | ||||
| 9. Informative References | 9. Informative References | |||
| [ISO.19136.2007] | [ISO.19136.2007] | |||
| International Organization for Standardization, "ISO | International Organization for Standardization, "ISO | |||
| 19136:2007 Geographic information -- Geography Markup | 19136:2007 Geographic information -- Geography Markup | |||
| Language (GML)". | Language (GML)", March 2020. | |||
| [KML22] Wilson, T., Ed., "OGC KML (Version 2.2)", 14 April 2008, | [KML22] Wilson, T., Ed., "OGC KML (Version 2.2)", 14 April 2008, | |||
| <http://portal.opengeospatial.org/ | <http://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 2.3", 4 August 2015, | |||
| <http://docs.opengeospatial.org/ | <http://docs.opengeospatial.org/ | |||
| is/12-007r2/12-007r2.html>. | is/12-007r2/12-007r2.html>. | |||
| [RFC5870] Mayrhofer, A. and C. Spanring, "A Uniform Resource | [RFC5870] Mayrhofer, A. and C. Spanring, "A Uniform Resource | |||
| skipping to change at page 19, line 34 ¶ | skipping to change at page 19, line 34 ¶ | |||
| [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>. | |||
| [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>. | |||
| [W3CGEO] Popescu, A., "Geolocation API Specification", 8 November | [W3CGEO] Popescu, A., "Geolocation API Specification", 8 November | |||
| 2016, <https://www.w3.org/TR/2016/REC-geolocation-API- | 2016, <https://www.w3.org/TR/2016/ | |||
| 20161108/>. | 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 "Example use of geo-location"; | |||
| revision 2019-02-02 { reference "None"; } | revision 2019-02-02 { reference "None"; } | |||
| container locatable-items { | container locatable-items { | |||
| description "container of locatable items"; | description "container of locatable items"; | |||
| list locatable-item { | list locatable-item { | |||
| key name; | key name; | |||
| description "A of locatable item"; | description "A of locatable item"; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description "name of locatable item"; | description "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 geo location. | |||
| Below is a the YANG tree for the fictitious module that uses the geo- | Below is a 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 | |||
| skipping to change at page 21, line 36 ¶ | skipping to change at page 21, line 36 ¶ | |||
| +--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? types:date-and-time | +--rw timestamp? types:date-and-time | |||
| +--rw valid-until? types:date-and-time | +--rw valid-until? types:date-and-time | |||
| 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> | |||
| </locatable-item> | </locatable-item> | |||
| <locatable-item> | <locatable-item> | |||
| <name>Pont des Arts</name> | <name>Pont des Arts</name> | |||
| <geo-location> | <geo-location> | |||
| <timestamp>2012-03-31T16:00:00Z</timestamp> | <timestamp>2012-03-31T16:00:00Z</timestamp> | |||
| <latitude>48.8583424</latitude> | <latitude>48.8583424</latitude> | |||
| <longitude>2.3375084</longitude> | <longitude>2.3375084</longitude> | |||
| <height>35</height> | <height>35</height> | |||
| </geo-location> | </geo-location> | |||
| </locatable-item> | </locatable-item> | |||
| <locatable-item> | <locatable-item> | |||
| <name>Saint Louis Cathedral</name> | <name>Saint Louis Cathedral</name> | |||
| <geo-location> | <geo-location> | |||
| <timestamp>2013-10-12T15:00:00-06:00</timestamp> | <timestamp>2013-10-12T15:00:00-06:00</timestamp> | |||
| <latitude>29.9579735</latitude> | <latitude>29.9579735</latitude> | |||
| <longitude>-90.0637281</longitude> | <longitude>-90.0637281</longitude> | |||
| </geo-location> | </geo-location> | |||
| </locatable-item> | </locatable-item> | |||
| <locatable-item> | <locatable-item> | |||
| <name>Apollo 11 Landing Site</name> | <name>Apollo 11 Landing Site</name> | |||
| <geo-location> | <geo-location> | |||
| <timestamp>1969-07-21T02:56:15Z</timestamp> | <timestamp>1969-07-21T02:56:15Z</timestamp> | |||
| <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> | |||
| <latitude>0.67409</latitude> | <latitude>0.67409</latitude> | |||
| <longitude>23.47298</longitude> | <longitude>23.47298</longitude> | |||
| </geo-location> | </geo-location> | |||
| </locatable-item> | </locatable-item> | |||
| <locatable-item> | <locatable-item> | |||
| <name>Reference Frame Only</name> | <name>Reference Frame Only</name> | |||
| <geo-location> | <geo-location> | |||
| <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 3: Example XML data of geo location use. | |||
| Appendix B. Acknowledgements | Appendix B. Acknowledgements | |||
| 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, and Acee Lindem and Qin Wu for their work | |||
| on a geographic location object that led to this documents creation. | on a geographic location object that led to this documents creation. | |||
| End of changes. 16 change blocks. | ||||
| 105 lines changed or deleted | 104 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/ | ||||