8 unstable releases (3 breaking)
Uses new Rust 2024
| 0.6.1 | Jul 21, 2025 |
|---|---|
| 0.6.0 | Jan 26, 2025 |
| 0.5.5 | Jan 25, 2025 |
| 0.2.0 | Jul 5, 2024 |
| 0.1.2 | Jul 4, 2024 |
#82 in Geospatial
432 downloads per month
22KB
286 lines
fit2gpx-rs: efficient fit to gpx converter
Installation
download binary
- Go to releases and download the binary for your os and arch.
If one's not available, file an issue and build from source. - unzip
- If on mac or linux:
chmod +x $fit2gpx-binary
You could use eget or something similar as well: eget jarjk/fit2gpx-rs
finally: ./fit2gpx --help
build
- have a Rust supported platform, eg.: linux, macos, windows
- have Rust installed
- install
git clone --depth 1 "https://github.com/jarjk/fit2gpx-rs"
cd fit2gpx-rs
cargo install --locked --path .
# without installing to ...cargo/bin/fit2gpx: cargo r (--release) -- -h
Usage
binary
see fit2gpx --help
let's say you want to convert a_lovely_evening_walk.fit to a_lovely_evening_walk.gpx
in that case, you'd do the following
fit2gpx a_lovely_evening_walk.fit
if you also want to add elevation data, as the .fit file didn't contain any, follow these steps
library
short:
fit2gpx::Fit::file_to_gpx("walk.fit").unwrap();
see docs or examples for more detailed usage
Purpose
This is a simple Rust library and binary for converting .fit files to .gpx files.
I've written it, being fed up waiting for conversion of a strava bulk export while creating
awesome plots with this tool: stravavis.
A significantly faster alternative to the great (but not frequently updated) fit2gpx with the ability to add elevation data while converting.
- FIT is a GIS data file format used by Garmin GPS sport devices and Garmin software
- GPX is an XML based format for GNSS tracks
Is it any good?
Yes.
Why
- it's damn fast
- it can add elevation data
- should be fairly well maintained
- providing Rust library
- it's fun
How to add elevation data
- first of all, have DTM data:
.hgtfiles downloaded one great source is Sonny's collection, it's only for Europe though - then unzip everything, place all of the
.hgtfiles to a single directory - set
$ELEV_DATA_DIRto that very directory or pass--elev_data_dir ~/my_elevation_data_dir - make sure that
elevationfeature is enabled, it's the default - pass the
--add_elevation | -aflag tofit2gpx
Why might this one not be the right choice
gpx lib doesn't support gpx extensions, so neither do we. After this issue is resolved, this shall be resolved soon.
it doesn't support strava bulk-export stuff
- unzipping
.gzfiles. solution: in your activities directory rungzip -d *.gz - adding metadata to gpx files from the
activities.csvfile
Direct dependencies
Dependencies
~6.5MB
~113K SLoC