Sparklines are a lightweight chart and are well suited at showing at a glance what the elevation profile of a bushwalk is like.

The graphic above shows the elevation sparklines of all warks on BeyondTracks, if you look long enough you’ll see most walks are either:

• walk down, then back up
• walk up, then back down
• walk up and down a few times

We use vue-trend to draw the sparklines, it’s easy to use.

On the data side we have PostGIS LINESTRING geometries with a z coordinate for elevation (more on that in later post), and use this simple function to generate a PostgreSQL ARRAY of elevation values for a fixed number of points, exactly what we need to pass to vue-trend.

-- create an elevation profile as an array based on a fixed number of points
CREATE OR REPLACE FUNCTION elevation_profile(geom geometry, num_points integer) RETURNS integer[] AS $$DECLARE profile integer[] DEFAULT '{}'; BEGIN FOR i in 0..(num_points - 1) LOOP profile := array_append(profile, round(ST_Z(ST_LineInterpolatePoint(geom, i::double precision / (num_points - 1))))::integer); END LOOP; RETURN profile; END;$$ LANGUAGE plpgsql;