three-gpx-loader
Load .gpx files as Three.js geometry.
three-gpx-loader
can:
- Parse
.gpx
files & convert to vertices withx
,y
, andz
coordinates...- ...as though the map is a plane.
- ...as though the map is a sphere.
- Normalize or center the coordinates around the origin.
Install
$ npm install --save three-gpx-loader
Usage
let Three = ;// You can name it "THREE" instead of "Three" if you want, but it's just another// module and therefore it has no business having an all-capital name. let GPXLoader = Three ; let scene = ;let loader = ;let path = "../input/gpx/col-du-galibier.gpx";let { console;}let { let material = color: 0xffff00 ; let line = result material ; scene;} loader;
FAQ
Q: Why?
A: To use within my GPX -> OBJ converter (CLI & GUI).
Q: How does the loader "flatten" the GPX coordinates?
A: Z-axis (changable in the future) is used for elevation so the elevation coordinates in meters are directly copied to the z
value of each vertex. For x
and y
, the first point is considered to be at 0,0
. Each point after that is computed to be a certain distance and a certain bearing from the last point. This distance in that direction is added to the last point to find the coordinates of the next point. In code this looks like:
let vertices = 0 0 points 0 ele ;let d b; // d = distance, b = bearing for let i = 0; i < pointslength; i++ // If there is a next point... if points i + 1 // Compute distance and bearing between the current and next point: d = ; b = ; // Using the results, push a new vertex to the vertices array: vertices;
In the future, it should be possible as well to place coordinates in a sphere of a given radius, for the purpose of displaying them on a 3D globe, although this was exactly the opposite of my intention when originally creating it (creating maps for racing games).
License
© 2018, Ian Paschal.