Your GPS-Tracks in 3D
Topography is what makes Skiing, Hiking, Trailrunning and Mountainbiking so exciting.
You conquer those Vertical Distances with a lot of sweat and effort, but your Tracking Software only shows a boring 2D Map.
That's where CubeTrek comes in.
Upload and View your GPS-Track
Click here or drag your file into this Box.
Accepted file types: GPX and FIT.
|File name||Track Name||Type||Date||Distance||Elevation Gain||Time|
All uploaded tracks will be publicly visible.
No guarantees on accuracy, no guarantees on how long the uploaded tracks will be available via the link.
But if you encounter any problems, please tell me via email (include your GPS Track if possible).
Only activities that cover an area which is smaller than 100km x 100km (62x62 miles in medieval units).
Max. file size is 10 MB (that's more than it sounds)
The Track must contain time data.
Elevation data is automatically added if not present (yes, that's actually not a limitation).
CubeTrek's still in an experimental stage.
The Vision is to become the home for all your Mountain related GPS Tracks.
To receive updates, sign up for the mailing list. Or get in touch via Email.
For the technically inclined people, here's a short summary of the underlying tech stack used by CubeTrek.
The actual 3D magic is performed by the awesome Babylon.js library (check it out, if you've never heard of it), the graph is handled by D3.js (very versatile, but a steep learning curve), the 2D map is rendered with MapLibre GL JS (which is very straightforward to use in this particular case).
So here's what happens when you upload a FIT or GPX file: the server reads the tracks, downsamples them to a reasonable resolution and calculates some descriptive values (such as the geographical bounding box, distance, time, etc.).
The elevation data is cross-checked with the elevation model on the server. This is done to check if the device's height sensors were propely calibrated and a simple correction is applied if necessary. If elevation data is completely absent in the file (because the recording device doesn't have a height sensor) the elevation data is interpolated completely from the model.
The elevation model consists of HGT files retrieved from the NASA SRTM dataset.
To guess the activity name, we take the highest point in the track data (making the assumption that this is the most prominent point of the whole activity, e.g. the summit). This is cross-checked against a peak database on the server. The data comes from OpenStreetMap and contains all OSM features annotated as 'Peak', and contains >520k entries.
If there's no peak in the vicinity, a reverse geocoding request is sent to Maptiler.
Once all the data is gathered, it's stored in a PostGIS extended PostgreSQL database and the activity is ready be to put on the spotlight.
When you view the activity in the 3D viewer: the server provides two key files for each activity. An extended GeoJSON file, describing the track latitude/longitude data, time, and elevation data. A gLTF file which contains the 3D Model of the topography. Babylon.js is used to display the gLTF file and loads the texture (map tiles) from Maptiler.
A custom script than draws the track on top of the texture of the 3D model.
The script also handles the D3.js graph data conversion from the GeoJSON file, the mouse interaction etc.
The 2D map is very straightforward: just show the GeoJSON data in a MapLibre map (again using Maptiler as source for the map data).