Precision and Data Sources — SendaOne GPX files
This page documents the upstream services, coordinate precision, vertical datums and known limitations of the GPX files generated by SendaOne. It is written for professional audiences (pilots, military operators, search and rescue coordinators, surveyors, maritime navigators) who must decide whether a downloaded file is suitable for a specific operational scenario before relying on it.
The tone is technical. No marketing. If a section seems too cautious for your use case (a casual ride in town), it probably is — skip to What this file IS suitable for.
Derived data — what is measured and what is NOT
Your file is a faithful mirror of the Google Maps route: the coordinates and the path are the same ones you see on the map — nothing is recomputed or trimmed. But some fields are DERIVED, not measured, and we flag them honestly — because mistaking them for real measurements would be a false positive. Zero invention: whatever is derived, we tell you.
- The TIMES are estimated. A Google Maps route is a
plan, not a recorded activity. The timestamps
(
<time>) are computed from a typical speed for the transport mode, not read from a GPS clock. Do not upload them as a real effort to Strava or similar. Details in §4 Timestamp synthesis. - The ELEVATION comes from a model, not a sensor. Heights come from the Google Elevation API, which queries a digital terrain model (DEM) — this is exactly the same kind of data Strava labels as "corrected elevation". It is real, but modeled, not read from a barometric altimeter. Details in §3 Elevation source.
- The GRADE (% slope) is calculated. It is derived from that modeled elevation and the distance between points. It is not a field measurement; it inherits the DEM's uncertainty.
1. Routing source
Routes are computed by the Google Maps Routes API v2,
endpoint routes.googleapis.com/directions/v2:computeRoutes,
with routingPreference=TRAFFIC_AWARE_OPTIMAL. According to
Google's own documentation, this is the same routing engine that powers
the Google Maps mobile and web app. SendaOne does NOT recompute the route
with a different engine.
Polyline quality is requested at HIGH_QUALITY (step-level
granularity). In urban areas this typically yields 50 to 100 points per
kilometer; on long open roads it drops to 10–20 points per kilometer.
2. Coordinate precision
- Coordinates are emitted with 7 decimal places (~1.1 cm theoretical precision per the WGS84 ellipsoid).
- Effective precision is approximately ±5 m horizontal: Google snaps to street geometry, and street geometry itself is collected from a mixture of authoritative datasets, GPS traces and aerial photography.
- Datum: WGS84 (the GPX 1.1 default; this is the same datum used by every consumer GPS device on the market).
- Coordinates are NOT in BD-09 or GCJ-02 (the obfuscated datums that Google uses for mainland China). SendaOne is unsuitable for use inside mainland China by design.
3. Elevation source
- Elevations come from the Google Elevation API.
- Vertical datum: EGM96 (orthometric heights, referenced to mean sea level).
- For ellipsoidal heights (the datum used by aviation and surveying),
add the geoid offset, which SendaOne embeds in the
<geoidheight>tag of each waypoint. - Effective vertical precision: ±10 m. Better than SRTM in urban centers, worse than a calibrated barometric altimeter.
4. Timestamp synthesis
Each GPX <trkpt> carries a <time>
tag synthesized from the typical velocity of the selected transport mode
(cycling 18 km/h, walking 5 km/h, driving 30 km/h, transit 25 km/h). This
is NOT recorded GPS time — it is reconstructed time so
that Strava, TrainingPeaks and Garmin Connect accept the file as an
Activity rather than rejecting it as static.
Format: ISO 8601 UTC with milliseconds
(2026-05-24T19:53:18.234Z).
Two models, on purpose. TCX, FIT, KML and GeoJSON use a different model: they distribute the route's real estimated duration (from the routing engine) proportionally to the distance traveled — consistent with their planned-route role: in those four formats, end minus start equals exactly the trip's estimated duration. GPX instead models a plausible activity at the mode's typical speed, because its use cases include uploading to Strava as an Activity. This is a deliberate divergence, each model serving its use case. In every format the times are synthetic and declared as such.
Label language. Generic labels inside the files
(Start, End, Stop 2/5) are in
neutral English: GPS devices do not translate file content, and English
is what the whole ecosystem interprets consistently. The real names of
your places (with accents, CJK or any script) are always preserved
as-is.
5. Schema compliance
- Every file is validated against the official topografix GPX 1.1 XSD before being served. If validation fails, the file is NOT served (the request returns 500). There is no silent corruption path.
- The
gpxtpxnamespace (Garmin TrackPointExtension v1) is declared on the root, making the file Activity-ready in Garmin Connect. - A custom
m2gnamespace (https://maps-to-gpx.dev/xmlns/v1) carries the audit metadata. Strict XSD validation tolerates foreign namespaces underextensionsTypeper the GPX 1.1 spec §9.
6. What this file IS NOT certified for
SendaOne is provided AS-IS for recreational use. The following scenarios are explicitly out of scope:
- Primary navigation in safety-critical contexts: aviation, maritime search and rescue (SAR), military operations, expedition rescue.
- Drone / UAS flight (Litchi, DJI and similar): the drone export is a convenience conversion of a ground route, NOT a vetted flight plan. You are solely responsible for verifying altitude, airspace, no-fly zones and every waypoint, and for complying with the drone regulations of your jurisdiction (FAA Part 107, EASA, ANAC Colombia and equivalents). Default altitudes are capped at 120 m AGL but MUST be confirmed before flight. Never fly an imported mission without human supervision and pre-flight review.
- Aviation (IGC), marine (NMEA) and binary navigation (FIT) formats: provided for recreational planning only, never for primary navigation. Always cross-check against official charts, NOTAMs and the regulations that apply to you before relying on them.
- Marine routing over open water: Google Maps does not compute sea navigation routes. Over open water it typically returns a straight line or a ferry route that may cross shoals or land. Use the exported route as a waypoint reference only, and ALWAYS verify against official nautical charts before navigating.
- Decision-making where coordinate error >5 m is operationally significant.
- Emergency response routing or coordination.
- Land surveying or land registry.
- Any context requiring data sovereignty. The service is hosted in the United States (Fly.io Ashburn region) behind Cloudflare (global edge). Routing queries leave the European Union and are processed by Google's infrastructure.
7. What this file IS suitable for
- Cycling, hiking, running, motorcycling — recreational planning and sharing.
- Sharing routes between friends, family or club members.
- Backup to a Garmin Edge, Wahoo ELEMNT, COROS APEX, Suunto or similar handheld device for a ride or run.
- Importing into Strava, Komoot, RideWithGPS, Gaia GPS, OsmAnd, Locus Map or any GPX-1.1-compliant platform for activity logging.
- Coastal cabotage and recreational pleasure boating (NOT offshore primary navigation).
8. Verification
- Every downloaded GPX includes a
<m2g:audit>JSON block with:generated_at_utc,server_version,server_commit_sha,polyline_sha256, sample counts, and aschema_validatedflag. - Cross-verify any downloaded GPX with the public
POST /verifyendpoint. It returns a structural and integrity report including SHA-256 of the file, schema validation, declared vs computed bounds match and polyline integrity check. - The server SHA of the downloaded file is also exposed in the
X-M2G-File-SHA256response header at download time.
9. Caveats and known limitations
- Magnetic variation (
<magvar>) is an approximation, not the full WMM-2025 model. For aviation, consult an FAA- or EASA-approved source. - Geoid height (
<geoidheight>) approximates EGM96, not EGM2008. For surveying, use NGS GEOID18 or equivalent. - Routing reflects Google's data at the moment of the request. Roads close, ciclorrutas open, redirections happen — always verify locally before traveling.
- SendaOne does NOT integrate real-time traffic incidents, weather warnings, road closures or wildfire alerts.
- Elevation gain/loss is not bit-for-bit reproducible across
tools. Cumulative gain depends on the DEM, the sampling and
the smoothing each tool applies: Strava, Garmin Connect and SendaOne
will report different figures for the SAME track. SendaOne rejects
spurious DEM spikes and applies moving-window smoothing only for the
gain/loss figure; the file's
<ele>values carry the spike filter but not the smoothing. - Physical limit of the source data: Google's polyline is ~1 m precise at best and the SRTM DEM has a ~30 m cell. No downstream transformation can create precision the source data does not have.
- Text addresses are inherently ambiguous. If your link carries text ("Cra 7 #138-60") instead of coordinates, geocoding picks ONE candidate; for addresses duplicated across cities it may not be the one you saw. Coordinates shared from the Google Maps pin do not suffer this ambiguity.
- The Apple Maps button uses the public maps.apple.com URL scheme built from your original input; Apple resolves text with its own geocoder, which may pick a different place than Google. A future integration with the Apple Maps Server API would allow validating that destination before handing you the link.
10. Disclaimer
The service is provided AS-IS, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and non-infringement. See the full legal notice on the home page.
Operator: Sergio Marroquín Cabrera, Bogotá, Colombia.
Source code: github.com/smarroquinc10/maps-to-gpx
(proprietary, all rights reserved).