viktrack

viktrack

Functions

#define VIK_TRACK()
#define VIK_TRACKPOINT()
VikTrack * vik_track_new ()
void vik_track_set_defaults ()
void vik_track_set_name ()
void vik_track_set_comment ()
void vik_track_set_description ()
void vik_track_ref ()
void vik_track_free ()
VikTrack * vik_track_copy ()
void vik_track_set_comment_no_copy ()
VikTrackpoint * vik_trackpoint_new ()
void vik_trackpoint_free ()
VikTrackpoint * vik_trackpoint_copy ()
void vik_trackpoint_set_name ()
void vik_track_add_trackpoint ()
gdouble vik_track_get_length_to_trackpoint ()
gdouble vik_track_get_length ()
gdouble vik_track_get_length_including_gaps ()
gulong vik_track_get_tp_count ()
guint vik_track_get_segment_count ()
VikTrack ** vik_track_split_into_segments ()
guint vik_track_merge_segments ()
void vik_track_reverse ()
time_t vik_track_get_duration ()
gulong vik_track_get_dup_point_count ()
gulong vik_track_remove_dup_points ()
gulong vik_track_get_same_time_point_count ()
gulong vik_track_remove_same_time_points ()
void vik_track_to_routepoints ()
gdouble vik_track_get_max_speed ()
gdouble vik_track_get_average_speed ()
gdouble vik_track_get_average_speed_moving ()
void vik_track_convert ()
gdouble * vik_track_make_elevation_map ()
void vik_track_get_total_elevation_gain ()
VikTrackpoint * vik_track_get_tp_by_dist ()
VikTrackpoint * vik_track_get_closest_tp_by_percentage_dist ()
VikTrackpoint * vik_track_get_closest_tp_by_percentage_time ()
VikTrackpoint * vik_track_get_tp_by_max_speed ()
VikTrackpoint * vik_track_get_tp_by_max_alt ()
VikTrackpoint * vik_track_get_tp_by_min_alt ()
VikTrackpoint * vik_track_get_tp_first ()
VikTrackpoint * vik_track_get_tp_last ()
VikTrackpoint * vik_track_get_tp_prev ()
gdouble * vik_track_make_gradient_map ()
gdouble * vik_track_make_speed_map ()
gdouble * vik_track_make_distance_map ()
gdouble * vik_track_make_elevation_time_map ()
gdouble * vik_track_make_speed_dist_map ()
gboolean vik_track_get_minmax_alt ()
void vik_track_marshall ()
VikTrack * vik_track_unmarshall ()
void vik_track_calculate_bounds ()
void vik_track_anonymize_times ()
void vik_track_interpolate_times ()
gulong vik_track_apply_dem_data ()
void vik_track_apply_dem_data_last_trackpoint ()
gulong vik_track_smooth_missing_elevation_data ()
void vik_track_steal_and_append_trackpoints ()
VikCoord * vik_track_cut_back_to_double_point ()
int vik_track_compare_timestamp ()
void vik_track_set_property_dialog ()
void vik_track_clear_property_dialog ()

Types and Values

Description

Functions

VIK_TRACK()

#define VIK_TRACK(x) ((VikTrack *)(x))

VIK_TRACKPOINT()

#define VIK_TRACKPOINT(x) ((VikTrackpoint *)(x))

vik_track_new ()

VikTrack *
vik_track_new ();

vik_track_set_defaults ()

void
vik_track_set_defaults (VikTrack *tr);

Set some default values for a track. ATM This uses the 'settings' method to get values, so there is no GUI way to control these yet...


vik_track_set_name ()

void
vik_track_set_name (VikTrack *tr,
                    const gchar *name);

vik_track_set_comment ()

void
vik_track_set_comment (VikTrack *tr,
                       const gchar *comment);

vik_track_set_description ()

void
vik_track_set_description (VikTrack *tr,
                           const gchar *description);

vik_track_ref ()

void
vik_track_ref (VikTrack *tr);

vik_track_free ()

void
vik_track_free (VikTrack *tr);

vik_track_copy ()

VikTrack *
vik_track_copy (const VikTrack *tr,
                gboolean copy_points);

Normally for copying the track it's best to copy all the trackpoints However for some operations such as splitting tracks the trackpoints will be managed separately, so no need to copy them.

Parameters

tr

The Track to copy

 

copy_points

Whether to copy the track points or not

 

Returns

the copied VikTrack


vik_track_set_comment_no_copy ()

void
vik_track_set_comment_no_copy (VikTrack *tr,
                               gchar *comment);

vik_trackpoint_new ()

VikTrackpoint *
vik_trackpoint_new ();

vik_trackpoint_free ()

void
vik_trackpoint_free (VikTrackpoint *tp);

vik_trackpoint_copy ()

VikTrackpoint *
vik_trackpoint_copy (VikTrackpoint *tp);

vik_trackpoint_set_name ()

void
vik_trackpoint_set_name (VikTrackpoint *tp,
                         const gchar *name);

vik_track_add_trackpoint ()

void
vik_track_add_trackpoint (VikTrack *tr,
                          VikTrackpoint *tp,
                          gboolean recalculate);

The trackpoint is added to the end of the existing trackpoint list

Parameters

tr

The track to which the trackpoint will be added

 

tp

The trackpoint to add

 

recalculate

Whether to perform any associated properties recalculations Generally one should avoid recalculation via this method if adding lots of points (But ensure calculate_bounds() is called after adding all points!!)

 

vik_track_get_length_to_trackpoint ()

gdouble
vik_track_get_length_to_trackpoint (const VikTrack *tr,
                                    const VikTrackpoint *tp);

vik_track_get_length ()

gdouble
vik_track_get_length (const VikTrack *tr);

vik_track_get_length_including_gaps ()

gdouble
vik_track_get_length_including_gaps (const VikTrack *tr);

vik_track_get_tp_count ()

gulong
vik_track_get_tp_count (const VikTrack *tr);

vik_track_get_segment_count ()

guint
vik_track_get_segment_count (const VikTrack *tr);

vik_track_split_into_segments ()

VikTrack **
vik_track_split_into_segments (VikTrack *tr,
                               guint *ret_len);

vik_track_merge_segments ()

guint
vik_track_merge_segments (VikTrack *tr);

vik_track_reverse ()

void
vik_track_reverse (VikTrack *tr);

vik_track_get_duration ()

time_t
vik_track_get_duration (const VikTrack *trk);

Parameters

trk

The track

 

Returns

The time in seconds that covers the whole track including gaps NB this may be negative particularly if the track has been reversed


vik_track_get_dup_point_count ()

gulong
vik_track_get_dup_point_count (const VikTrack *vt);

vik_track_remove_dup_points ()

gulong
vik_track_remove_dup_points (VikTrack *vt);

vik_track_get_same_time_point_count ()

gulong
vik_track_get_same_time_point_count (const VikTrack *vt);

vik_track_remove_same_time_points ()

gulong
vik_track_remove_same_time_points (VikTrack *vt);

vik_track_to_routepoints ()

void
vik_track_to_routepoints (VikTrack *tr);

vik_track_get_max_speed ()

gdouble
vik_track_get_max_speed (const VikTrack *tr);

vik_track_get_average_speed ()

gdouble
vik_track_get_average_speed (const VikTrack *tr);

vik_track_get_average_speed_moving ()

gdouble
vik_track_get_average_speed_moving (const VikTrack *tr,
                                    int stop_length_seconds);

vik_track_convert ()

void
vik_track_convert (VikTrack *tr,
                   VikCoordMode dest_mode);

vik_track_make_elevation_map ()

gdouble *
vik_track_make_elevation_map (const VikTrack *tr,
                              guint16 num_chunks);

vik_track_get_total_elevation_gain ()

void
vik_track_get_total_elevation_gain (const VikTrack *tr,
                                    gdouble *up,
                                    gdouble *down);

vik_track_get_tp_by_dist ()

VikTrackpoint *
vik_track_get_tp_by_dist (VikTrack *trk,
                          gdouble meters_from_start,
                          gboolean get_next_point,
                          gdouble *tp_metres_from_start);

TODO: Consider changing the boolean get_next_point into an enum with these options PREVIOUS, NEXT, NEAREST

Parameters

trk

The Track on which to find a Trackpoint

 

meters_from_start

The distance along a track that the trackpoint returned is near

 

get_next_point

Since there is a choice of trackpoints, this determines which one to return

 

tp_metres_from_start

For the returned Trackpoint, returns the distance along the track

 

Returns

The VikTrackpoint fitting the criteria or NULL


vik_track_get_closest_tp_by_percentage_dist ()

VikTrackpoint *
vik_track_get_closest_tp_by_percentage_dist
                               (VikTrack *tr,
                                gdouble reldist,
                                gdouble *meters_from_start);

vik_track_get_closest_tp_by_percentage_time ()

VikTrackpoint *
vik_track_get_closest_tp_by_percentage_time
                               (VikTrack *tr,
                                gdouble reldist,
                                time_t *seconds_from_start);

vik_track_get_tp_by_max_speed ()

VikTrackpoint *
vik_track_get_tp_by_max_speed (const VikTrack *tr);

vik_track_get_tp_by_max_alt ()

VikTrackpoint *
vik_track_get_tp_by_max_alt (const VikTrack *tr);

vik_track_get_tp_by_min_alt ()

VikTrackpoint *
vik_track_get_tp_by_min_alt (const VikTrack *tr);

vik_track_get_tp_first ()

VikTrackpoint *
vik_track_get_tp_first (const VikTrack *tr);

vik_track_get_tp_last ()

VikTrackpoint *
vik_track_get_tp_last (const VikTrack *tr);

vik_track_get_tp_prev ()

VikTrackpoint *
vik_track_get_tp_prev (const VikTrack *tr,
                       VikTrackpoint *tp);

vik_track_make_gradient_map ()

gdouble *
vik_track_make_gradient_map (const VikTrack *tr,
                             guint16 num_chunks);

vik_track_make_speed_map ()

gdouble *
vik_track_make_speed_map (const VikTrack *tr,
                          guint16 num_chunks);

vik_track_make_distance_map ()

gdouble *
vik_track_make_distance_map (const VikTrack *tr,
                             guint16 num_chunks);

vik_track_make_elevation_time_map ()

gdouble *
vik_track_make_elevation_time_map (const VikTrack *tr,
                                   guint16 num_chunks);

vik_track_make_speed_dist_map ()

gdouble *
vik_track_make_speed_dist_map (const VikTrack *tr,
                               guint16 num_chunks);

vik_track_get_minmax_alt ()

gboolean
vik_track_get_minmax_alt (const VikTrack *tr,
                          gdouble *min_alt,
                          gdouble *max_alt);

vik_track_marshall ()

void
vik_track_marshall (VikTrack *tr,
                    guint8 **data,
                    guint *len);

vik_track_unmarshall ()

VikTrack *
vik_track_unmarshall (guint8 *data,
                      guint datalen);

vik_track_calculate_bounds ()

void
vik_track_calculate_bounds (VikTrack *trk);

vik_track_anonymize_times ()

void
vik_track_anonymize_times (VikTrack *tr);

Shift all timestamps to be relatively offset from 1901-01-01


vik_track_interpolate_times ()

void
vik_track_interpolate_times (VikTrack *tr);

Interpolate the timestamps between first and last trackpoint, so that the track is driven at equal speed, regardless of the distance between individual trackpoints.

NB This will overwrite any existing trackpoint timestamps


vik_track_apply_dem_data ()

gulong
vik_track_apply_dem_data (VikTrack *tr,
                          gboolean skip_existing);

Set elevation data for a track using any available DEM information

Parameters

skip_existing

When TRUE, don't change the elevation if the trackpoint already has a value

 

vik_track_apply_dem_data_last_trackpoint ()

void
vik_track_apply_dem_data_last_trackpoint
                               (VikTrack *tr);

vik_track_smooth_missing_elevation_data ()

gulong
vik_track_smooth_missing_elevation_data
                               (VikTrack *tr,
                                gboolean flat);

For each point with a missing elevation, set it to use the last known available elevation value. Primarily of use for smallish DEM holes where it is missing elevation data. Eg see Austria: around N47.3 & E13.8

Parameters

flat

Specify how the missing elevations will be set. When TRUE it uses a simple flat method, using the last known elevation When FALSE is uses an interpolation method to the next known elevation

 

Returns

The number of points that were adjusted


vik_track_steal_and_append_trackpoints ()

void
vik_track_steal_and_append_trackpoints
                               (VikTrack *t1,
                                VikTrack *t2);

appends t2 to t1, leaving t2 with no trackpoints


vik_track_cut_back_to_double_point ()

VikCoord *
vik_track_cut_back_to_double_point (VikTrack *tr);

starting at the end, looks backwards for the last "double point", a duplicate trackpoint. 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)


vik_track_compare_timestamp ()

int
vik_track_compare_timestamp (const void *x,
                             const void *y);

vik_track_set_property_dialog ()

void
vik_track_set_property_dialog (VikTrack *tr,
                               GtkWidget *dialog);

vik_track_clear_property_dialog ()

void
vik_track_clear_property_dialog (VikTrack *tr);

Types and Values

struct VikTrackpoint

struct VikTrackpoint {
  gchar* name;
  VikCoord coord;
  gboolean newsegment;
  gboolean has_timestamp;
  time_t timestamp;
  gdouble altitude; /* VIK_DEFAULT_ALTITUDE if data unavailable */
  gdouble speed;  	/* NAN if data unavailable */
  gdouble course;   /* NAN if data unavailable */
  guint nsats;      /* number of satellites used. 0 if data unavailable */
#define VIK_GPS_MODE_NOT_SEEN 0	/* mode update not seen yet */
#define VIK_GPS_MODE_NO_FIX 1	/* none */
#define VIK_GPS_MODE_2D  	2 /* good for latitude/longitude */
#define VIK_GPS_MODE_3D  	3 /* good for altitude/climb too */
#define VIK_GPS_MODE_DGPS 4
#define VIK_GPS_MODE_PPS 	5 /* military signal used */
  gint fix_mode;    /* VIK_GPS_MODE_NOT_SEEN if data unavailable */
  gdouble hdop;     /* VIK_DEFAULT_DOP if data unavailable */
  gdouble vdop;     /* VIK_DEFAULT_DOP if data unavailable */
  gdouble pdop;     /* VIK_DEFAULT_DOP if data unavailable */
};

enum VikTrackDrawnameType

Members

TRACK_DRAWNAME_NO

   

TRACK_DRAWNAME_CENTRE

   

TRACK_DRAWNAME_START

   

TRACK_DRAWNAME_END

   

TRACK_DRAWNAME_START_END

   

TRACK_DRAWNAME_START_END_CENTRE

   

NUM_TRACK_DRAWNAMES

   

struct VikTrack

struct VikTrack {
  GList *trackpoints;
  gboolean visible;
  gboolean is_route;
  VikTrackDrawnameType draw_name_mode;
  guint8 max_number_dist_labels;
  gchar *comment;
  gchar *description;
  guint8 ref_count;
  gchar *name;
  GtkWidget *property_dialog;
  gboolean has_color;
  GdkColor color;
  LatLonBBox bbox;
};