X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/7ff7d7281656a3e089e0e155cea130e93a5fa576..4a050412da32aa6f237c358cfa0c5a3775f21e9a:/src/viktrack.c diff --git a/src/viktrack.c b/src/viktrack.c index 236d5e29..6eb685ad 100644 --- a/src/viktrack.c +++ b/src/viktrack.c @@ -412,7 +412,8 @@ gdouble *vik_track_make_elevation_map ( const VikTrack *tr, guint16 num_chunks ) **/ if ( ignore_it ) - pts[current_chunk] = VIK_DEFAULT_ALTITUDE; + // Seemly can't determine average for this section - so use last known good value (much better than just sticking in zero) + pts[current_chunk] = altitude1; else pts[current_chunk] = altitude1 + (altitude2-altitude1)*((dist_along_seg - (chunk_length/2))/current_seg_length); @@ -1066,6 +1067,20 @@ void vik_track_apply_dem_data ( VikTrack *tr ) } } +/* + * Apply DEM data (if available) - to only the last trackpoint + */ +void vik_track_apply_dem_data_last_trackpoint ( VikTrack *tr ) +{ + gint16 elev; + if ( tr->trackpoints ) { + /* As in vik_track_apply_dem_data above - use 'best' interpolation method */ + elev = a_dems_get_elev_by_coord ( &(VIK_TRACKPOINT(g_list_last(tr->trackpoints)->data)->coord), VIK_DEM_INTERPOL_BEST ); + if ( elev != VIK_DEM_INVALID_ELEVATION ) + VIK_TRACKPOINT(g_list_last(tr->trackpoints)->data)->altitude = elev; + } +} + /* appends t2 to t1, leaving t2 with no trackpoints */ void vik_track_steal_and_append_trackpoints ( VikTrack *t1, VikTrack *t2 ) {