diff options
Diffstat (limited to 'vendor/github.com/tkrajina/gpxgo/gpx/gpx11.go')
| -rw-r--r-- | vendor/github.com/tkrajina/gpxgo/gpx/gpx11.go | 283 |
1 files changed, 283 insertions, 0 deletions
diff --git a/vendor/github.com/tkrajina/gpxgo/gpx/gpx11.go b/vendor/github.com/tkrajina/gpxgo/gpx/gpx11.go new file mode 100644 index 0000000..8d3afdf --- /dev/null +++ b/vendor/github.com/tkrajina/gpxgo/gpx/gpx11.go @@ -0,0 +1,283 @@ +// Copyright 2013, 2014 Peter Vasil, Tomo Krajina. All +// rights reserved. Use of this source code is governed +// by a BSD-style license that can be found in the +// LICENSE file. + +package gpx + +import ( + "encoding/xml" +) + +/* + +The GPX XML hierarchy: + +gpx (gpxType) + - attr: version (xsd:string) None + - attr: creator (xsd:string) None + metadata (metadataType) + name (xsd:string) + desc (xsd:string) + author (personType) + name (xsd:string) + email (emailType) + - attr: id (xsd:string) None + - attr: domain (xsd:string) None + link (linkType) + - attr: href (xsd:anyURI) None + text (xsd:string) + type (xsd:string) + copyright (copyrightType) + - attr: author (xsd:string) None + year (xsd:gYear) + license (xsd:anyURI) + link (linkType) + - attr: href (xsd:anyURI) None + text (xsd:string) + type (xsd:string) + time (xsd:dateTime) + keywords (xsd:string) + bounds (boundsType) + - attr: minlat (latitudeType) None + - attr: minlon (longitudeType) None + - attr: maxlat (latitudeType) None + - attr: maxlon (longitudeType) None + extensions (extensionsType) + wpt (wptType) + - attr: lat (latitudeType) None + - attr: lon (longitudeType) None + ele (xsd:decimal) + time (xsd:dateTime) + magvar (degreesType) + geoidheight (xsd:decimal) + name (xsd:string) + cmt (xsd:string) + desc (xsd:string) + src (xsd:string) + link (linkType) + - attr: href (xsd:anyURI) None + text (xsd:string) + type (xsd:string) + sym (xsd:string) + type (xsd:string) + fix (fixType) + sat (xsd:nonNegativeInteger) + hdop (xsd:decimal) + vdop (xsd:decimal) + pdop (xsd:decimal) + ageofdgpsdata (xsd:decimal) + dgpsid (dgpsStationType) + extensions (extensionsType) + rte (rteType) + name (xsd:string) + cmt (xsd:string) + desc (xsd:string) + src (xsd:string) + link (linkType) + - attr: href (xsd:anyURI) None + text (xsd:string) + type (xsd:string) + number (xsd:nonNegativeInteger) + type (xsd:string) + extensions (extensionsType) + rtept (wptType) + - attr: lat (latitudeType) None + - attr: lon (longitudeType) None + ele (xsd:decimal) + time (xsd:dateTime) + magvar (degreesType) + geoidheight (xsd:decimal) + name (xsd:string) + cmt (xsd:string) + desc (xsd:string) + src (xsd:string) + link (linkType) + - attr: href (xsd:anyURI) None + text (xsd:string) + type (xsd:string) + sym (xsd:string) + type (xsd:string) + fix (fixType) + sat (xsd:nonNegativeInteger) + hdop (xsd:decimal) + vdop (xsd:decimal) + pdop (xsd:decimal) + ageofdgpsdata (xsd:decimal) + dgpsid (dgpsStationType) + extensions (extensionsType) + trk (trkType) + name (xsd:string) + cmt (xsd:string) + desc (xsd:string) + src (xsd:string) + link (linkType) + - attr: href (xsd:anyURI) None + text (xsd:string) + type (xsd:string) + number (xsd:nonNegativeInteger) + type (xsd:string) + extensions (extensionsType) + trkseg (trksegType) + trkpt (wptType) + - attr: lat (latitudeType) None + - attr: lon (longitudeType) None + ele (xsd:decimal) + time (xsd:dateTime) + magvar (degreesType) + geoidheight (xsd:decimal) + name (xsd:string) + cmt (xsd:string) + desc (xsd:string) + src (xsd:string) + link (linkType) + - attr: href (xsd:anyURI) None + text (xsd:string) + type (xsd:string) + sym (xsd:string) + type (xsd:string) + fix (fixType) + sat (xsd:nonNegativeInteger) + hdop (xsd:decimal) + vdop (xsd:decimal) + pdop (xsd:decimal) + ageofdgpsdata (xsd:decimal) + dgpsid (dgpsStationType) + extensions (extensionsType) + extensions (extensionsType) + extensions (extensionsType) +*/ + +type gpx11Gpx struct { + XMLName xml.Name `xml:"gpx"` + XMLNs string `xml:"xmlns,attr,omitempty"` + XmlNsXsi string `xml:"xmlns:xsi,attr,omitempty"` + XmlSchemaLoc string `xml:"xsi:schemaLocation,attr,omitempty"` + + Version string `xml:"version,attr"` + Creator string `xml:"creator,attr"` + Name string `xml:"metadata>name,omitempty"` + Desc string `xml:"metadata>desc,omitempty"` + AuthorName string `xml:"metadata>author>name,omitempty"` + AuthorEmail *gpx11GpxEmail `xml:"metadata>author>email,omitempty"` + // TODO: There can be more than one link? + AuthorLink *gpx11GpxLink `xml:"metadata>author>link,omitempty"` + Copyright *gpx11GpxCopyright `xml:"metadata>copyright,omitempty"` + Link *gpx11GpxLink `xml:"metadata>link,omitempty"` + Timestamp string `xml:"metadata>time,omitempty"` + Keywords string `xml:"metadata>keywords,omitempty"` + Bounds *gpx11GpxBounds `xml:"bounds"` + Extensions *gpx11GpxExtensions `xml:"extensions"` + Waypoints []*gpx11GpxPoint `xml:"wpt"` + Routes []*gpx11GpxRte `xml:"rte"` + Tracks []*gpx11GpxTrk `xml:"trk"` +} + +type gpx11GpxBounds struct { + //XMLName xml.Name `xml:"bounds"` + MinLat float64 `xml:"minlat,attr"` + MaxLat float64 `xml:"maxlat,attr"` + MinLon float64 `xml:"minlon,attr"` + MaxLon float64 `xml:"maxlon,attr"` +} + +type gpx11GpxCopyright struct { + XMLName xml.Name `xml:"copyright"` + Author string `xml:"author,attr"` + Year string `xml:"year,omitempty"` + License string `xml:"license,omitempty"` +} + +type gpx11GpxAuthor struct { + Name string `xml:"name,omitempty"` + Email string `xml:"email,omitempty"` + Link *gpx11GpxLink `xml:"link"` +} + +type gpx11GpxEmail struct { + Id string `xml:"id,attr"` + Domain string `xml:"domain,attr"` +} + +type gpx11GpxLink struct { + Href string `xml:"href,attr"` + Text string `xml:"text,omitempty"` + Type string `xml:"type,omitempty"` +} + +type gpx11GpxMetadata struct { + XMLName xml.Name `xml:"metadata"` + Name string `xml:"name,omitempty"` + Desc string `xml:"desc,omitempty"` + Author *gpx11GpxAuthor `xml:"author,omitempty"` + // Copyright *GpxCopyright `xml:"copyright,omitempty"` + // Links []GpxLink `xml:"link"` + Timestamp string `xml:"time,omitempty"` + Keywords string `xml:"keywords,omitempty"` + // Bounds *GpxBounds `xml:"bounds"` +} + +type gpx11GpxExtensions struct { + Bytes []byte `xml:",innerxml"` +} + +/** + * Common struct fields for all points + */ +type gpx11GpxPoint struct { + Lat float64 `xml:"lat,attr"` + Lon float64 `xml:"lon,attr"` + // Position info + Ele NullableFloat64 `xml:"ele,omitempty"` + Timestamp string `xml:"time,omitempty"` + MagVar string `xml:"magvar,omitempty"` + GeoIdHeight string `xml:"geoidheight,omitempty"` + // Description info + Name string `xml:"name,omitempty"` + Cmt string `xml:"cmt,omitempty"` + Desc string `xml:"desc,omitempty"` + Src string `xml:"src,omitempty"` + Links []gpx11GpxLink `xml:"link"` + Sym string `xml:"sym,omitempty"` + Type string `xml:"type,omitempty"` + // Accuracy info + Fix string `xml:"fix,omitempty"` + Sat *int `xml:"sat,omitempty"` + Hdop *float64 `xml:"hdop,omitempty"` + Vdop *float64 `xml:"vdop,omitempty"` + Pdop *float64 `xml:"pdop,omitempty"` + AgeOfDGpsData *float64 `xml:"ageofdgpsdata,omitempty"` + DGpsId *int `xml:"dgpsid,omitempty"` +} + +type gpx11GpxRte struct { + XMLName xml.Name `xml:"rte"` + Name string `xml:"name,omitempty"` + Cmt string `xml:"cmt,omitempty"` + Desc string `xml:"desc,omitempty"` + Src string `xml:"src,omitempty"` + // TODO + //Links []Link `xml:"link"` + Number NullableInt `xml:"number,omitempty"` + Type string `xml:"type,omitempty"` + Points []*gpx11GpxPoint `xml:"rtept"` +} + +type gpx11GpxTrkSeg struct { + XMLName xml.Name `xml:"trkseg"` + Points []*gpx11GpxPoint `xml:"trkpt"` +} + +// Trk is a GPX track +type gpx11GpxTrk struct { + XMLName xml.Name `xml:"trk"` + Name string `xml:"name,omitempty"` + Cmt string `xml:"cmt,omitempty"` + Desc string `xml:"desc,omitempty"` + Src string `xml:"src,omitempty"` + // TODO + //Links []Link `xml:"link"` + Number NullableInt `xml:"number,omitempty"` + Type string `xml:"type,omitempty"` + Segments []*gpx11GpxTrkSeg `xml:"trkseg,omitempty"` +} |
