Exercise Analyzer is a tool to extract and manipulate exercise data from GPX and TCX files.
This is a screen shot of the Exercise Analyzer interface.
Acknowledgements are at the end.
Exercise Analyzer has a number of options for dealing with GPX and TCX files. The main purpose is to process groups of files to get summary data and to make summary and weekly reports. Each file has an associated data structure with items like
FileName | StartTime | EndTime | Distance | Duration |
NTracks | NSegments | NTrackPoints | NHrValues | HrDuration |
HrStartTime | HrEndTime | Creator | Category | Location |
LatStart | LatMax | LatMin | TzId | TzInformationFromLatLon |
LonStart | LonMax | LonMin | EleAvg | |
EleStart | EleMax | EleMin | EleLoss | EleGain |
SpeedAvg | SpeedAvgSimple | SpeedAvgMoving | SpeedMax | SpeedMin |
HrAvg | HrMax | HrMin |
The sets of data from processed files can be exported as JSON files, and these can be imported to avoid re-processing. The JSON elements contain the data items above, but not the tracks themselves. These data can be used to make CSV summary files and Monthly Reports with weekly statistics. There is a Tools menu that allows you to perform various tasks on GPX and TCX files, sometimes on groups of files (for example, formatting into a readable form instead of a single line) and sometimes on specific files. Of course, a group can be a single file. The specific details of each menu operation are described below.
Any output produced is shown in the output area, which can be cleared. You can do the usual select, copy, and paste operations to use the information elsewhere.
The main data structure is a data list of the data from each of the files that is processed.
Category and Location are useful information about your exercise, but these are not part of the TCX nor GPX specification. The Weekly Report described below uses the four Categories: Walking, Cycling, Workout, and Other. Otherwise Exercise Analyzer does not use the Category or Location except to print it out.
If your files are not from Polar (https://flow.polar.com/) or SportTrackLive (http://www.sportstracklive.com/), which are treated specially, then you can add Category and Location to the data by editing the JSON file that is exported from Exercise Analyzer. (See below.) A JSON file is a human-readable text file, and this is not that hard to do.
You can also add them to the file itself if it is a GPX file. You do this by modifying the metadata. Neither of these is a standard metadata element, but Exercise Analyzer will find them if they are there. The form is:
<metadata> .... <category>Walking</category> <location>Swan Lake</location> </metadata>
These elements are already included in GPX files from SportsTrackLive.
If your files are from Polar or SportsTrackLive, Exercise Analyzer can determine the Category and Location from the file names, but the file names must be of a specific form.
Polar
PyorTchaikovsky_2019-02-18_11-52-55_Walking_Swan_Lake.gpx (or .tcx)
If the name is divided into parts based on the underscores (_), then the fourth part is the Category, and the remaining parts up to the extension are the Location.
Note that the default file name format for files downloaded from Polar does not include these parts. They need to be added. Moreover Polar does not have categories for either Walking or Workout. The closest are "Other outdoor" and "Other indoor".
SportsTrackLive
track2019-01-06-Walking-Swan-Lake-2533356.gpx
In this case if the name is divided into parts separated by dash (-), then the Category is the first part after the date, and the Location is the remaining parts up to the number. This is the default format for tracks downloaded from SportsTrackLive.
Selects one or more files for processing. The results will be displayed in the output window and appended to the data list.
Saves the current data list as a CSV file with columns for time in h/m/s format (e.g. 1h 10m 29s), time in minutes, and miles for the four Categories: Walking Cycling, Workout, and Other. The CSV also has columns for total time in h/m/s format, time in minutes, and miles. It is commonly suggested that you get 200 minutes of exercise per week. You can use this to check that. You can also perform your own calculations and graphs with the data.
The CSV Weekly Report depends on having a Category for your exercise. The Categories considered specially are Walking, Cycling, and Workout. The rest gets lumped into Other.
Saves the current data list as a CSV file. This includes columns for"Category, Location, Start", Finish, Time Zone, Distance, Duration, Duration(s), Avg Speed, Min HR, Avg HR, and Max HR.
Saves the current data list as a CSV file as is / was generated by SportTrackLive (http://www.sportstracklive.com/). This includes columns for id, category event, location, tags, year, month, week of year, start, finish, distance, duration, duration(s), calories, ave speed, ave pace, ave pace(s), ave moving speed, ave moving pace, ave moving pace(s), max speed, ave heart rate, elevation gain, elevation loss, and max elevation.
Exits the program.
Checks for exercise data that has approximately the same StartTime and allows you to select which to keep. This allows you to remove duplicate exercises that will make the summaries invalid.
Sorts the data list by StartTime.
Clears the data list. Note that clearing the output window does not clear the data list. Also note that new data is appended to the data list and does not replace it.
Gives a summary of what is in the data list.
Gives a summary of what is in the data list including file names.
Gives a list of all the file names in the data list and allows you to select the ones to show in the output window.
Exports the current data list as a JSON file. The JSON file is readable by humans. You can choose indent or unindented (a single line and not so readable but uses less storage space).
Imports a saved JSON file and appends its data to the data list.
The GPX / TCX Menu is a menu that provides a number of useful utility methods for manipulating GPX files and TCX files in general, not specific to this application. It is maintained as a separate C# class library. The same menu is used in multiple applications. For more information on the available commands and how to use them see https://kenevans.net/opensource/GPSUtils/Help/Overview.html.
Shows this page.
Brings up a dialog with information about this program.
If you are installing from a download, just unzip the files into a directory somewhere convenient. Then run it from there. If you are installing from a build, copy these files and directories from the bin/Release directory to a convenient directory.
To uninstall, just delete these files.
Exercise Analyzer uses the NuGet packages GeoTimeZone, TimeZoneConverter, TimeZoneNames, Newtonsoft.JSON, and LinqToXsd.