The first version of the port was done by Peter Vasil and I decided to continue from there. But my main aim was to implement a complete GPX 1.0 and GPX 1.1 specification. But, since his library was based on an older version of gpxpy, it was difficult to "reconcile" the different object models --so, I decided to change the library API. And this is how a new library is born.
Usage example:
import (
...
"github.com/tkrajina/gpxgo/gpx"
...
)
gpxBytes := ...
gpxFile, err := gpx.ParseBytes(gpxBytes)
if err != nil {
...
}
// Analyize/manipulate your track data here...
for _, track := range gpxFile.Tracks {
for _, segment := range track.Segments {
for _, point := range segment.Points {
fmt.Print(point)
}
}
}
// (Check the API for GPX manipulation and analyzing utility methods)
// When ready, you can write the resulting GPX file:
xmlBytes, err := gpxFile.ToXml(gpx.ToXmlParams{Version: "1.1", Indent: true})
...
Like gpxpy, gpxgo includes a command line utility to get some basic stats from .gpx files:
$ gpxinfo Mojstrovka.gpx
File: /Users/puzz/golang/src/github.com/tkrajina/gpxgo/test_files/Mojstrovka.gpx
GPX name:
GPX desctiption:
GPX version: 1.0
Author:
Email:
Global stats:
Points: 184
Length 2D: 2.6958067369682577
Length 3D: 3.00439590990862
Bounds: 46.430350, 46.435641, 13.738842, 13.748333
Moving time: 0
Stopped time: 0
Max speed: 0.000000m/s = 0.000000km/h
Total uphill: 446.4893280000001
Total downhill: 417.65524800000026
Started: 1901-12-13 20:45:52 +0000 UTC
Ended: 1901-12-13 20:45:52 +0000 UTC
Track #1:
Points: 184
Length 2D: 2.6958067369682577
Length 3D: 3.00439590990862
Bounds: 46.430350, 46.435641, 13.738842, 13.748333
Moving time: 0
Stopped time: 0
Max speed: 0.000000m/s = 0.000000km/h
Total uphill: 446.4893280000001
...etc...
No comments:
Post a Comment