Docker container for processing GPX files using the processGPX by @djconnel - an advanced Perl tool for GPX file analysis and processing.
- 🎲 Generate random GPX routes at default location
- 🌍 Generate random GPX routes at specific coordinates
- 🎯 Generate random GPX routes at completely random worldwide locations
- 🗺️ Generate random GPX routes from an ISO country code
- 🔵 Generate circular GPX routes with custom circumference
- 🟨 Generate square GPX routes with custom perimeter
- ✍️ Generate GPX tracks that draw text
- 🔄 Process and optimize existing GPX files
- 📊 Calculate distance, speed, elevation statistics
- 🐳 Easy Docker deployment
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest randomdocker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest random randomUse a three-letter ISO 3166-1 alpha-3 country code. The starting point is selected randomly inside the country polygon from the embedded GeoJSON dataset.
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest random FRAPick a random country from the embedded GeoJSON dataset (based on its list of ISO 3166-1 alpha-3 codes), then a random starting point inside it.
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest random countrydocker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest random 45.8566 6.8522Generate a perfect circle GPX track with a specified circumference (distance around the circle). The circle is created as a closed track with evenly spaced points.
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest circle 10docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest circle random 25Pick a random country from the embedded GeoJSON dataset, then a random point inside it as the circle center.
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest circle country 5Use a three-letter ISO 3166-1 alpha-3 country code. The circle center is selected randomly inside the country polygon.
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest circle FRA 15docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest circle 45.8566 6.8522 20docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest circle 45.8566 6.8522 20 200 my_circle.gpxGenerate a square GPX track with a specified perimeter (distance around the square). The square is created as a closed track with the start point at the middle of the top side.
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest square 16docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest square random 25Pick a random country from the embedded GeoJSON dataset, then a random point inside it as the square center.
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest square country 5Use a three-letter ISO 3166-1 alpha-3 country code. The square center is selected randomly inside the country polygon.
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest square FRA 15docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest square 45.8566 6.8522 20docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest square 45.8566 6.8522 20 200 my_square.gpxDraw a phrase on the map using 250-meter-high, widely spaced single-line letters. Quote the phrase so it is passed as one argument. The text is drawn eastward from the selected starting point; each pen stroke is stored as a separate track segment. The default location and the random, country, ISO-3, and explicit-coordinate options are the same as for the geometric shapes.
# Draw HELLO at the default location
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest text "HELLO"
# Draw a phrase at a random worldwide location
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest text "HELLO WORLD" random
# Draw text in France
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest text "BONJOUR" FRA
# Draw text at explicit coordinates, with a custom output filename
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest text "HELLO" 45.8566 6.8522 hello.gpxSupported characters are A-Z, 0-9, spaces, and common punctuation (. , ! ? - ' :).
# Basic processing
docker run -v /path/to/gpx/files:/tmp --rm dasgreff/processgpx:latest process
# With options
docker run -v /path/to/gpx/files:/tmp --rm dasgreff/processgpx:latest process -auto -pruneProcess routes from Biketerra using the route ID (numerics only):
# Basic BT Route processing
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest btroute 1234
# With options
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest btroute 1234 -auto -pruneProcess existing Biketerra GPX files using the route ID (numerics only):
# Basic BT GPX processing
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest btgpx 5678
# With options
docker run -v /path/to/output:/tmp --rm dasgreff/processgpx:latest btgpx 5678 -smooth 10-auto: Automatic mode with optimal settings-smooth <meters>: Smooth position/altitude data-smoothZ <meters>: Altitude smoothing only-fixSteps: Fix identical altitude points from Strava Route Editor-prune: Remove redundant points-quiet: Silent mode
- For
btrouteandbtgpxcommands, the Route ID must contain only digits (0-9) - Route IDs are used to fetch data from Biketerra services
# Generate random route at default location (Bonneville Salt Flats)
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest random
# Generate random route at completely random coordinates
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest random random
# Generate random route in France
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest random FRA
# Generate random route in a randomly picked country
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest random country
# Generate random route at specific coordinates (Chamonix, France)
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest random 45.8566 6.8522 --hollow --hexagon --L=100 --N=20# Generate 10km circle at default location
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest circle 10
# Generate 25km circle at random coordinates worldwide
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest circle 25 random
# Generate 5km circle in a random country
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest circle 5 country
# Generate 15km circle in France
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest circle 15 FRA
# Generate 20km circle at specific coordinates
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest circle 20 45.8566 6.8522
# Generate circle with custom parameters: 20km distance, 200 points, custom filename
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest circle 20 45.8566 6.8522 200 my_circle.gpx# Generate 16km perimeter square at default location
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest square 16
# Generate 25km square at random coordinates worldwide
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest square 25 random
# Generate 5km square in a random country
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest square 5 country
# Generate 15km square in France
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest square 15 FRA
# Generate 20km square at specific coordinates
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest square 20 45.8566 6.8522
# Generate square with custom parameters: 20km perimeter, 200 points, custom filename
docker run -v $(pwd):/tmp --rm dasgreff/processgpx:latest square 20 45.8566 6.8522 200 my_square.gpx# Process all GPX files with optimization
docker run -v /home/user/tracks:/tmp --rm dasgreff/processgpx:latest process -auto -prune
# Process BT Route with ID 10399
docker run -v /share/Public/GPX:/tmp --rm dasgreff/processgpx:latest btroute 10399
# Process BT Route with smoothing
docker run -v /share/Public/GPX:/tmp --rm dasgreff/processgpx:latest btroute 10399 -smooth 10 -prune
# Process BT GPX with ID 5678
docker run -v /share/Public/GPX:/tmp --rm dasgreff/processgpx:latest btgpx 5678
# Process BT GPX with options
docker run -v /share/Public/GPX:/tmp --rm dasgreff/processgpx:latest btgpx 5678 -auto- No GPX files found: Check that
.gpxfiles exist in the mounted folder - Permission errors: Ensure the mounted folder has proper read/write permissions
- Generation failed: Check container logs for error details
- Invalid Route ID: Route IDs for
btrouteandbtgpxmust be numeric only (e.g.,10399, notroute_10399) - JSON module error: Rebuild the Docker image if you encounter JSON.pm errors