X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/5a9cffb11d58c725f425828c09c814d1139bbae1..4a050412da32aa6f237c358cfa0c5a3775f21e9a:/src/viktrack.c?ds=sidebyside diff --git a/src/viktrack.c b/src/viktrack.c index 2a02b1e4..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 ) { @@ -1081,9 +1096,8 @@ void vik_track_steal_and_append_trackpoints ( VikTrack *t1, VikTrack *t2 ) } /* starting at the end, looks backwards for the last "double point", a duplicate trackpoint. - * this is indicative of magic scissors continued use. If there is no double point, - * deletes all the trackpoints. Returns the new end of the track (or the start if - * there are no double points + * If there is no double point, deletes all the trackpoints. + * Returns the new end of the track (or the start if there are no double points) */ VikCoord *vik_track_cut_back_to_double_point ( VikTrack *tr ) {