Library

gpxfile

This module defines GpxFile.

class gpxity.gpxfile.GpxFile(gpx=None)[source]

Bases: object

Represents a file with Gpx data.

If a Backend supports attributes not directly supported by the GPX format like the MapMyTracks track type, they will transparently be encodeded in existing GPX fields like keywords, see keywords.

If a Backend (like WPTrackserver) does not support keywords, the will transparently be encoded in the description.

The GPX part is done by https://github.com/tkrajina/gpxpy.

If a gpxfile is assigned to a backend, all changes will by default be written directly to the backend. Some backends are able to change only one attribute with little time overhead, others always have to rewrite the entire gpxfile.

You can use the context manager batch_changes(). This holds back updating the backend until leaving the context.

If you manipulate the gpx directly, this goes unnoticed to the updating mechanism. Use rewrite() when done.

Not all backends support everything, you could get the exception NotImplementedError.

The data will only be loaded from the backend when it is needed. Backends have two ways of loading data: Either load a list of gpxfiles or load all information about a specific gpxfile. Often loading the list of gpxfiles gives us some attributes for free, so listing those gpxfiles may be much faster if you do not want everything listed.

Absolutely all attributes (like title, distance) are encoded in gpx. However you can always assign values to them even if gpx is None. As soon as gpx is given, it will be updated.

All points are always rounded to 6 decimal digits when they are added to the track. However some backends may support less than 6 decimals. You can query Backend.point_precision.

Parameters

gpx (Gpx) – Initial content. Can be used if you create a new GpxFile from scratch without loading it from some backend.

categories

The legal values for category. The first one is used as default value. This is a superset of the values for the different backends. Every backend maps from its internal values into those when reading and maps them back when writing. Since not all backends support all values defined here and since some backends may define more values than we know, information may get lost when converting.

Type

tuple(str)

exception CannotMerge[source]

Bases: Exception

Is raised if GpxFile.merge() fails.

add_locations(segments=False)[source]

Call locate_point for the first point.

Args: segments: Also do that for the first point of each segment.

add_points(points) → None[source]

Round and add points to last segment in the last gpxfile.

If no track is allocated yet and points is not an empty list, allocates a track.

Parameters

points (list(GPXTrackPoint) – The points to be added

add_segment_waypoints()[source]

Every segment start gets a waypoint.

The name looks like Trk/Seg 2/4 Mainz-Wiesbaden. Existing such waypoints are removed if the no longer belong to a segment start.

For the involved points (first and last of each segment) see locate_point().

adjust_time(delta)[source]

Add a timedelta to all times.

angle(first_point=None, last_point=None, precision=None) → float[source]

For me, the earth is flat.

Parameters
  • first_point – if None, first point of GpxFile

  • last_point – if None, last point of GpxFile

  • precision – After comma digits. Default is as defined by backend or 6.

Returns

the angle in degrees 0..360 between start and end. If we have no two points, return 0

property backend

The backend this gpxfile lives in. If the gpxfile was constructed in memory, backend is None.

This is a read-only property. It is set with Backend.add.

It is not possible to decouple a gpxfile from its backend, use clone().

Returns

The backend

batch_changes()[source]

Context manager: disable the direct update in the backend and saves the entire gpxfile when done.

This may or may not make things faster. Directory and GPSIES profits from this, MMT maybe.

can_merge(other, partial: bool = False)[source]

Check if self and other are mergeable.

Parameters
  • other – The other GpxFile

  • partial – If True, they are mergeable if one of them contains the other one.

Returns: (int, str)

int is either None or the starting index of the shorter gpxfile in the longer gpxfile str is either None or a string explaing why this is not mergeable

categories = ('Cycling', 'Cycling - Road', 'Cycling - Gravel', 'Cycling - MTB', 'Cycling - Indoor', 'Cycling - Hand', 'Cycling - Touring', 'Cycling - Foot', 'Running', 'Running - Trail', 'Running - Urban Trail', 'Running - Road', 'Sailing', 'Walking', 'Hiking', 'Hiking - Speed', 'Swimming', 'Driving', 'Off road driving', 'Motor racing', 'Motorcycling', 'Enduro', 'Skiing', 'Skiing - Touring', 'Skiing - Backcountry', 'Skiing - Crosscountry', 'Skiing - Nordic', 'Skiing - Alpine', 'Skiing - Roller', 'Canoeing', 'Kayaking', 'Sea kayaking', 'Stand up paddle boarding', 'Rowing', 'Windsurfing', 'Kiteboarding', 'Orienteering', 'Mountaineering', 'Skating', 'Skateboarding', 'Horse riding', 'Hang gliding', 'Gliding', 'Flying', 'Snowboarding', 'Paragliding', 'Hot air ballooning', 'Nordic walking', 'Snowshoeing', 'Jet skiing', 'Powerboating', 'Swimrun', 'Pedelec', 'Crossskating', 'Motorhome', 'Cabriolet', 'Coach', 'Pack animal trekking', 'Train', 'Wheelchair', 'Sightseeing', 'Geocaching', 'Longboard', 'River navigation', 'Skating - Inline', 'Wintersports', 'Miscellaneous')
property category

What is this gpxfile doing? If we have no current value, return the default.

The value is automatically translated between our internal value and the value used by the backend. This happens when reading from or writing to the backend. Here we return always the internal value.

Returns

The current value or the default value (see categories)

Type

str

change_keywords(values, replace=False, dry_run=False)[source]

Change keywords.

Duplicate keywords are silently ignored. A keyword may not contain a comma. Keywords with a preceding ‘-‘ are removed, the others are added. Raise an Exception if a keyword is both added and removed.

Parameters
  • values – Either a single str with one or more keywords, separated by commas or an iterable of keywords

  • replace – if True, replace current keywords with the new ones. Ignores keywords preceded with a ‘-‘.

  • dry_run – if True, only return the new keywords but do not make that change

Returns

The new keywords

clone()[source]

Create a new gpxfile with the same content but without backend.

Returns

the new gpxfile

Return type

GpxFile

property description

The description.

Returns

The description

Type

str

property distance

For me, the earth is flat.

This property can only be set while the full gpxfile has not yet been loaded. The setter is used by the backends when scanning for all gpxfiles.

Returns

the distance in km, rounded to m. 0.0 if not computable.

fenced(fences=None)[source]

Suppress points in fences.

While this context manager is running, suppressed points are not visible.

property first_time

start time of gpxfile in UTC.

For a simpler implementation of backends, notably MMT we ignore gpx.time. Instead we return the time of the earliest track point. Only if there is no track point, return gpx.time. If that is unknown too, return None.

For the same reason time is readonly.

We assume that the first point comes first in time and the last point comes last in time. In other words, points should be ordered by their time.

Type

datetime.datetime

fix_orux()[source]

Older Oruxmaps switched the day back by one day after exactly 24 hours.

Try fixing that.

Please backup your gpxfile before doing this.

Returns: A list with messages. Currently nothing.

property gpx

Direct access to the Gpx object.

If you use it to change its content * remember to call rewrite() afterwards. * Since everything is stored in Gpx, all attributes like description, ;attr:public … will change too.

Returns

the Gpx object

property id_in_backend

Every backend has its own scheme for unique ids.

Some backends may change this if the gpxfile data changes.

Some backends support assigning a new value. Those are currently Directory and WPTrackserver. The others will raise NotImplementedError.

See also Backend.add().

Returns

the id in the backend

static identifier(backend, ident: str) → str[source]

The full identifier for a gpxfile.

Since we may want to do this without instantiating a gpxfile, this must be staticmethod or classmethod.

str(gpxfile) uses this. However if a gpxfile has no id_in_backend, str(gpxfile will create one using title, time, id(gpxfile).

Parameters
Returns

the full identifier.

property ids

Return ids for all backends where this gpxfile has already been.

You can modify it but your changes will only be saved if and when the entire gpxfile is saved.

They are sorted by ascending age. Only the 5 youngest are kept. If the same id_in_backend appears in more than one directory, keep only the youngest.

Returns: list( (str))

a list of gpxfile ids

index(other, digits=4)[source]

Check if this gpxfile contains other gpxfile.

This only works if all values for latitude and longitude are nearly identical.

Useful if one of the gpxfiles had geofencing applied.

Parameters

digits – How many after point digits are used

Returns

None or the starting index for other.points in self.points

join_tracks(force=False)[source]

Join all tracks to a single track.

Metadata from all but the first track is thrown away. If metadata will be lost, it is printed and nothing is done unless force is True

Args: force if True, join even if metadata is lost

Returns: list()

A list with text strings about lost metadata

key(with_category: bool = True, with_last_time: bool = True, precision=None) → str[source]

For speed optimized equality checks, not granted to be exact, but sufficiently safe IMHO.

Parameters
  • with_category – If False, do not use self.category. Needed for comparing gpxfiles for equality like in unittests because values can change and information can get lost while copying between different backends

  • with_last_time – If False, do not use self.last_time.

  • precision – For latitude/longitude. After comma digits. Default is as defined by backend or 6.

Returns

a string with selected attributes in printable form.

property keywords

represent them as a sorted list - in GPX they are comma separated.

Content is whatever you want.

Because the GPX format does not have attributes for everything used by all backends, we encode some of the backend arguments in keywords.

Example for mapmytracks: keywords = ‘Status:public, Category:Cycling’.

Gpxity expects keywords to be separated by “,”. When writing them Gpxity uses “, ” (with a space after the comma) as separator.

However this is transparent for you. When parsing theGPX file, those are removed from keywords, and the are re-added in when exporting in xml(). So GpxFile.keywords will never show those special values.

Some backends may change keywords. MMT converts the first character into upper case and will return it like that. Gpxity will not try to hide such problems. So if you save a gpxfile in MMT, its keywords will change. But they will not change if you copy from MMT to Directory - so if you copy from DirectoryA to MMT to DirectoryB, the keywords in DirectoryA and DirectoryB will not be identical, for example “berlin” in DirectoryA but “Berlin” in DirectoryB.

Type

list(str)

last_point()[source]

Return the last point of the track. None if none.

property last_time

The last time we received in UTC.

Returns

The last time we received so far. If none, return None.

locate_point(track=0, segment=0, point=0) → str[source]

Determine name of place for point.

Saves that in point.name for caching. If backend.account.country is given, add the country name only if it is different. If no such point exists, just do nothing and return “nowhere”

Parameters

segment, point (track,) – Indices into the respective arrays

Returns: A string

merge(other, remove: bool = False, dry_run: bool = False, copy: bool = False, partial: bool = False) → list[source]

Merge other gpxfile into this one.

Either the track points must be identical or the other gpxfile may only contain waypoints.

If merging is not possible, raise GpxFile.CannotMerge.

If either is public, the result is public. If self.title seems like a default and other.title does not, use other.title Combine description and keywords. Merge waypoints as defined by _merge_waypoints().

Parameters
  • other (GpxFile) – The gpxfile to be merged

  • remove – After merging succeeded, remove other

  • dry_run – if True, do not really apply the merge

  • copy – This argument is ignored. It is only here to give GpxFile.merge() and Backend.merge() the same interface.

  • partial – merges other gpxfile if either gpxfile is part of the other one

Returns: list(str)

Messages about what has been done.

moving_speed() → float[source]

Speed for time in motion in km/h.

Returns

The moving speed

static overlapping_times(gpxfiles)[source]

Find gpxfiles with overlapping times.

Yields

groups of gpxfiles with overlapping times. Sorted by time.

This may be very slow for many long gpxfiles.

point_list()[source]

A flat list with all points.

Returns

The list

points()[source]

A generator over all points.

Yields

GPXTrackPoint – all points in all tracks and segments

points_equal(other, digits=4) → bool[source]

Compare points for same position.

Parameters

digits – Number of after comma digits to compare

Returns

True if both gpxfiles have identical points.

All points of all gpxfiles and segments are combined. Elevations are ignored.

points_hash() → float[source]

A hash that is hopefully different for every possible track.

It is built using the combination of all points.

Returns

The hash

property public

Is this a private gpxfile (can only be seen by the account holder) or is it public?.

Default value is False

Returns

True if gpxfile is public, False if it is private

Type

bool

refence(force=False)[source]

Re-apply fences. They might now be more restrictive.

Returns:A list of strings describing what happens/would happen

remove()[source]

Remove this gpxfile in the associated backend.

If the gpxfile is not coupled with a backend, raise an Exception.

rewrite() → None[source]

Call this after you directly manipulated gpx.

segments()[source]

A generator over all segments.

Yields

GPXTrackSegment – all segments in all tracks

similarity(others)[source]

Return a float 0..1: 1 is identity.

The highest value for others is returned.

speed() → float[source]

Speed over the entire time in km/h or 0.0.

Returns

The speed

split_at_stops(minutes)[source]

Split where things happen.

Whenever the time jumps back or more than X minutes into the future, split the segment at that point.

minutes: Shortest possible stop for splitting

Returns

A list of message strings, usable for verbose output.

split_points(max_points)[source]

Split into separate segments every # points.

split_segments()[source]

Create separate gpxfiles for every track/segment.

split_waypoints()[source]

Split into separate tracks at waypoints.

time_offset(other)[source]

If time and last_time have the same offset between both gpxfiles, return that time difference. Otherwise return None.

property title

The title.

Returns

the title

Type

str

untangle(force=False)[source]

Locate stops and clean away its local erratic movements.

Returns:A list of strings describing what happens/would happen

warnings()[source]

Return a list of strings with easy to find problems.

xml() → str[source]

Produce exactly one line per trackpoint for easier editing (like removal of unwanted points).

Returns: The xml string.

Accounts

Configuration file for accounts in Backends.

class gpxity.accounts.Fences(config_str: str)[source]

Bases: object

Defines circles.

Parameters

config_str – The string from the accounts file

center

The center

Type

GPXTrackPoint

radius

The radius in meters

Type

meter

outside(point) → bool[source]

Determine if point is outside of all fences.

Returns: True or False.

class gpxity.accounts.Account(name=None, filename=None, **kwargs)[source]

Bases: object

As parsed from the accounts file.

Attributes can be referenced as account.xxxx where xxx is an arbitrary value in the account definition from the accounts file.

Parameters
  • name – The name of the account. Must exist in the accounts file.

  • filename – Name of the accounts file. Default is Account.path

  • kwargs – Additional parameters added to the account. They have precedence.

If both name and file are None, only **kwargs are used.

path

Default value for the accounts file

name

The name of the account

config

A dict with all config values

backend

The name of the backend class

fences

The backend will never write points within fences. You can define any number of fences separated by spaces. Every fence is a circle. It has the form Lat/Long/meter. Lat and Long are the center position in decimal degrees, meter is the radius.

path = '~/.config/Gpxity/accounts'
class gpxity.accounts.DirectoryAccount(url=None, **kwargs)[source]

Bases: gpxity.accounts.Account

This will not use an acocunts file but the optional file .config.

Parameters
  • url – The name of the directory. If it does not exist, create it. “” will translate into “.”. A trailing “/” will raise an Exception. None will create a temporary directory.

  • kwargs – Additional parameters added to the account. They have precedence.

path

Default value for the accounts file

name

The name of the account

config

A dict with all config values

backend

The name of the backend class

is_temporary

True for temporary directories.

fences

The backend will never write points within fences. You can define any number of fences separated by spaces. Every fence is a circle. It has the form Lat/Long/meter. Lat and Long are the center position in decimal degrees, meter is the radius.

prefix

Class attribute, may be changed. The default prefix for temporary directories. Default value is gpxity.

Type

str

path = None
prefix = 'gpxity.'
class gpxity.accounts.MemoryAccount(name=None, **kwargs)[source]

Bases: gpxity.accounts.Account

This will only use kwargs for configuration.

Parameters

kwargs – Additional parameters added to the account. They have precedence.

name

The name of the account

config

A dict with all config values

backend

The name of the backend class

is_temporary

True for temporary directories.

fences

The backend will never write points within fences. You can define any number of fences separated by spaces. Every fence is a circle. It has the form Lat/Long/meter. Lat and Long are the center position in decimal degrees, meter is the radius.

prefix

Class attribute, may be changed. The default prefix for temporary directories. Default value is gpxity.

Type

str

counter = 0

Backend

This module defines Backend.

class gpxity.backend.Backend(account)[source]

Bases: gpxity.backend_base.BackendBase

A place where gpxfiles live. Something like the filesystem or http://mapmytracks.com.

A Backend should hold only gpxfiles for one person, and they should not overlap in time. This is not enforced but sometimes behaviour is undefined if you ignore this.

A Backend be used as a context manager.

A Backend allows indexing by normal int index, by GpxFile and by GpxFile.id_in_backend. if 'ident' in backend is possible. len(backend) shows the number of gpxfiles. Please note that Code like if backend: may not behave as expected. This will be False if the backend has no gpxfile. If that is not what you want, consider if backend is not None

The backend will automatically synchronize. So something like len(Backend()) will work. However, some other Backend pointing to the same storage or even a different process might change things. If you want to cope with that, use scan().

Not all backends support all methods. The unsupported methods will raise NotImplementedError. As a convenience every backend has a list supported to be used like if 'gpxfile' in backend.supported: where gpxfile is the name of the method.

Backends support no locking. If others modify a backend concurrently, you may get surprises. It is up to you to handle those.

Some backends may use cookies.

Parameters

account (Account) – The account to be used. Alternatively a dict can be passed to build an ad hoc Account instance.

supported

The names of supported methods. Creating the first instance of the backend initializes this. Only methods which may not be supported are mentioned here. If a particular value write_* like write_public does not exist, the entire gpxfile is written instead which normally results in a new ident for the gpxfile.

Some special values are:
  • rename: allows assigning values to id_in_backend

Type

set(str)

full_support

All possible values for the supported attribute.

Type

set(str)

url

the address. May be a real URL or a directory, depending on the backend implementation. Every implementation may define its own default for url. Must never end with ‘/’ except for Directory(url=’/’).

Type

str

test_is_expensive

For internal use. If True, the self tests will reduce test cases and try to avoid too much usage of the backend.

max_field_sizes

Some backends have a limited size for some attributes like keywords. This is only an approximative guess. The backend will not protect you from overriding it but the unittests will try to stay within those limits.

point_precision

The precision supported by this backend. We are never more precise than 6. That is the digits after the decimal separator.

supported_categories

The categories supported by this backend. The first one is used as default.

accepts_zero_points

True if the Backend accepts a GpxFile without Points

exception NoMatch[source]

Bases: Exception

Is raised if a gpxfile is expected to pass the match filter but does not

accepts_zero_points = False
add(gpxfile)[source]

Add a gpxfile to this backend.

No gpxfile already existing in this backend will be overwritten. If GpxFile.id_in_backend is not given, the backend will create a unique value. If it is given, the backend will try to use it or create a new value at its discretion.

Some Backends will not accept a gpxfile without Points. Only Directory is granted to handle a gpxfile wihout points.

Note that some backends may reject a gpxfile if it is very similar to an existing gpxfile even if it belongs to some other user.

If the gpxfile object is already in the list of gpxfiles, raise ValueError.

If the gpxfile does not pass the current match function, raise an exception.

Parameters

gpxfile (GpxFile) – The gpxfile we want to save in this backend.

Returns

The saved gpxfile. If the original gpxfile lives in a different backend, a new gpxfile living in this backend will be created and returned.

Return type

GpxFile

clone()[source]

return a clone.

classmethod decode_category(value: str) → str[source]

Translate the value from the backend into one out of GpxFile.categories.

Returns

The decoded name

default_url = None
detach()[source]

Should be called when access to the Backend is not needed anymore.

classmethod encode_category(value: str) → str[source]

Translate internal value (out of GpxFile.categories) into the backend specific value.

Returns

The encoded name

flush()[source]

Some backends delay actual writing. This enforces writing.

Currently, only the Mailer backend can delay, it will bundle all mailed gpxfiles into one mail instead of sending separate mails for every gpxfile. Needed for lifetracking.

full_support = ('scan', 'remove', 'write', 'write_title', 'write_public', 'own_categories', 'rename', 'write_category', 'write_description', 'keywords', 'write_add_keywords', 'write_remove_keywords')
get_time() → datetime.datetime[source]

get time from the server where backend is located as a Linux timestamp.

A backend implementation does not have to support this.

Returns: datetime.datetime

classmethod instantiate(name: str)[source]

Instantiate a Backend or a GpxFile out of its identifier.

Calls instantiate_backend and optionally changes result to GpxFile.

Parameters

name – The string identifier to be parsed

Returns

A GpxFile or a Backend. If the Backend has already been instantiated, return the cached value. If the wanted object does not exist, exception FileNotFoundError is raised.

classmethod instantiate_backend(name: str)[source]

Instantiate a Backend.

The full notation of an id_in_backend in a specific backend is similiar to what scp expects:

Account:id_in_backend where Account is a reference to the accounts file.

Locally reachable files or directories may be written without the leading Directory:. And a leading ~ is translated into the user home directory. The trailing .gpx can be omitted. It will be removed anyway for id_in_backend.

If the file path of a local gpxfile (Directory) contains a “:”, the file path must be absolute or relative (start with “/” or with “.”), or the full notation with the leading Directory: is needed

Parameters

name – The string identifier to be parsed

Returns: tuple()
  • The first element is the Backend. If the Backend has already been instantiated, return the cached value.

    If the wanted object does not exist, exception FileNotFoundError is raised.

  • The second element is a track_id or None

property is_scanned

Check if the backend has already been scanned for gpxfiles.

Returns: (bool)

The answer

property match

Filter gpxfiles.

A function with one argument returning None or str. The backend will call

this with every gpxfile and ignore gpxfiles where match does not return None. The returned str should explain why the gpxfile does not match.

If you change a gpxfile such that it does not match anymore, the exception NoMatch will be raised and the match stays unchanged.

matches(gpxfile, exc_prefix: str = None)[source]

match gpxfile against the current match function.

Parameters

exc_prefix – If not None, use it for the beginning of an exception message. If None, never raise an exception

Returns

True for match

max_field_sizes = {}
merge(other, remove: bool = False, dry_run: bool = False, copy: bool = False, partial: bool = False) → list[source]

merge other backend or a single gpxfile into this one. Tracks within self are also merged.

If two gpxfiles have identical points, or-ify their other attributes.

Parameters
  • other – The backend or a single gpxfile to be merged

  • remove – If True, remove merged gpxfiles

  • dry_run – If True, do not really merge or remove

  • copy – Do not try to find a matching gpxfile, just copy other into this Backend

  • partial – If True, two gpxfiles are mergeable if one of them contains the other one.

Returns

list(str) A list of messages for verbose output

point_precision = 5
real_len() → int[source]

len(backend) without calling scan() first.

Returns

the length

remove(value) → None[source]

Remove gpxfile. This can also be done for gpxfiles not passing the current match function.

Parameters

value – If it is not an GpxFile, remove() looks it up by doing self[value]

remove_all()[source]

Remove all gpxfiles we know about.

If their id_in_backend has meanwhile been changed through another backend instance or another process, we cannot find it anymore. We do not rescan all gpxfiles in the backend. If you want to make sure it will be empty, call scan() first.

If you use a match function, only matching gpxfiles will be removed.

scan(now: bool = False) → None[source]

Enforce a reload of the list of all gpxfiles in the backend.

This will be delayed until the list is actually needed again.

If this finds an unsaved gpxfile not matching the current match function, an exception is thrown. Saved Tracks not matching the current match will no be loaded.

Parameters

now – If True, do not delay scanning.

property subscription

Get the subscription model. Like free, paid, plus, whatever.

If the backend has no subscription model, return None.

The unpaid subscription is granted to always return free. The most expensive subscription is granted to always return full. Intermediate values may vary.

Because I (the developer) have no paid account, I can test this only partially. Feedback is welcome!

Returns: The name of the subscription or None

supported = {}
supported_categories = ('Cycling', 'Cycling - Road', 'Cycling - Gravel', 'Cycling - MTB', 'Cycling - Indoor', 'Cycling - Hand', 'Cycling - Touring', 'Cycling - Foot', 'Running', 'Running - Trail', 'Running - Urban Trail', 'Running - Road', 'Sailing', 'Walking', 'Hiking', 'Hiking - Speed', 'Swimming', 'Driving', 'Off road driving', 'Motor racing', 'Motorcycling', 'Enduro', 'Skiing', 'Skiing - Touring', 'Skiing - Backcountry', 'Skiing - Crosscountry', 'Skiing - Nordic', 'Skiing - Alpine', 'Skiing - Roller', 'Canoeing', 'Kayaking', 'Sea kayaking', 'Stand up paddle boarding', 'Rowing', 'Windsurfing', 'Kiteboarding', 'Orienteering', 'Mountaineering', 'Skating', 'Skateboarding', 'Horse riding', 'Hang gliding', 'Gliding', 'Flying', 'Snowboarding', 'Paragliding', 'Hot air ballooning', 'Nordic walking', 'Snowshoeing', 'Jet skiing', 'Powerboating', 'Swimrun', 'Pedelec', 'Crossskating', 'Motorhome', 'Cabriolet', 'Coach', 'Pack animal trekking', 'Train', 'Wheelchair', 'Sightseeing', 'Geocaching', 'Longboard', 'River navigation', 'Skating - Inline', 'Wintersports', 'Miscellaneous')
test_is_expensive = True
property timeout

Timeout from account or class default.

Returns: The timeout

property url

get self.account.url.

This also makes sure Backend.url is not writable.

Returns: The url

Locate

This module defines Locate.

class gpxity.locate.Locate(places, gpxfiles)[source]

Bases: object

Locates gpxfiles using https://github.com/DenisCarriere/geocoder#overview .

Parameters
  • places – A list of places that the gpxfiles should pass

  • gpxfiles – The gpxfiles to be searched

locations

The list of found places. For each given value in arg places, locations holds one result, even if the provider returns more than one.

distances

A list with a tuple for every gpxfile. The tuple holds the gpxfile and a list of distances between that gpxfile and places.

found(max_away: float = 10000000000.0)[source]

The list of gpxfiles sorted by affinity to the given places.

Parameters

max_away – The maximum distance in kilometers

Returns: list(gpxfiles)

Lifetrack

This module defines Lifetrack.

class gpxity.lifetrack.Lifetrack(sender_ip, target_backends, tracker_id: str = None)[source]

Bases: object

Life tracking. The data will be forwarded to all given backends.

Parameters
  • sender_ip – The IP of the client.

  • target_backends (list) – Those gpxfiles will receive the lifetracking data.

  • _id (tracker) – The id for this Lifetrack instance.

done

Will be True after end() has been called.

end()[source]

End lifetrack.

If the backend does not support lifetrack, this does nothing.

start(points, title=None, public=None, category=None)[source]

Start lifetracking.

Returns: The id for this tracker to be given to the client

tracker_id() → str[source]

Identify this Lifetrack instance.

Returns: str

update_trackers(points)[source]

Start or update lifetrack.

If the backend does not support lifetrack, this just saves the gpxfile in the backend.

Parameters

points (list) – New points

Diff

This module defines BackendDiff.

class gpxity.diff.BackendDiff(left, right)[source]

Bases: object

Compares two backends.directory.

Parameters
  • left (Backend) – A backend, a gpxfile or a list of either

  • right (Backend) – Same as for the left side

left

Attributes for the left side

Type

BackendDiffSide

right

Attributes for the right side

Type

BackendDiffSide

identical

Tracks appearing on both sides.

Type

list(GpxFile)

similar

Pairs of Tracks are on both sides with differences. This includes all gpxfiles having at least 100 identical positions without being identical.

Type

list(Pair)

diff_flags

T=time, D=description, C=category, S=status, K=keywords, P=positions, Z=time offset

class BackendDiffSide(gpxfiles)[source]

Bases: object

Represents a side (left or right) in BackendDiff.

gpxfiles

An GpxFile, a list of gpxfiles, a backend or a list of backends

exclusive

Acivities existing only on this side

Type

list

build_positions()[source]

Return a set of long/lat tuples.

static flatten(whatever)[source]

Flatten Backends or Tracks into a list of gpxfiles.

class Pair(left, right)[source]

Bases: object

Holds two comparable Items and the diff result .. attribute:: differences

Keys are Flags for differences, see BackendDiff.diff_flags. Values is a list(str) with additional info

type

dict()

diff_flags = 'TDCSKPZ'

gpxdo

usage: gpxdo [-h]
             {ls,cp,merge,mv,rm,title,keywords,description,category,public,private,split,join,diff,fix,help,clear,dump,show}
             ...

Positional Arguments

subparser_name

Possible choices: ls, cp, merge, mv, rm, title, keywords, description, category, public, private, split, join, diff, fix, help, clear, dump, show

Sub-commands:

ls

list gpxfiles

gpxdo ls [-h] [--loglevel {error,warning,info,debug}] [--nocolors] [--sort COL]
         [--total] [--segments] [-l] [-a] [-t] [-c] [--ids] [--time]
         [--last-time] [--gap] [-m] [--location] [-p] [--status] [-k] [-d]
         [--speed] [--moving-speed] [--duration] [--similarity] [--warnings]
         [--locate LOCATE] [--max-away MAX_AWAY] [--validate-against ROUTE]
         [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
         [--max-points #] [--min-distance km] [--max-distance km]
         [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
         [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
         [--only-similar GPX] [--min-similarity LEVEL]
         [source [source ...]]

Positional Arguments

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--sort

Possible choices: identifier, title, category, time, last-time, distance, points, keywords, status, speed, moving-speed, duration, similarity

sort by one ore more columns, separated by commas (no spaces allowed).

Valid values are the column titles.

Default: identifier

--total

Show a total line

Default: False

--segments

show tracks and segments

Default: False

-l, --long

show most useful info

Default: False

-a, --all

show all available info

Default: False

-t, --title

show the title

Default: False

-c, --category

show the category

Default: False

--ids

show the ids

Default: False

--time

show the time

Default: False

--last-time

show the last time

Default: False

--gap

show minutes after a segment before the next one starts

Default: False

-m, --distance

show the distance

Default: False

--location

show the starting location

Default: False

-p, --points

show the number of points

Default: False

--status

show the status public/private

Default: False

-k, --keywords

show the keywords

Default: False

-d, --description

show the description

Default: False

--speed

show the average speed

Default: False

--moving-speed

show the average speed in motion

Default: False

--duration

show the entire duration

Default: False

--similarity

show the similarity

Default: False

--warnings

show warnings

Default: False

--locate

the name of a place. –locate can be repeated. Find gpxfiles touching all locations, order by best match

--max-away
to be used with –locate: show only gpxfiles which are not more than MAX_AWAY

kilometers farther away from given places. The distance to all places is added to one value and the compared with MAX_AWAY. Default is 100km.

Default: 100

--validate-against

Check if the track has really been done against the predefined ROUTE

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

cp

copy gpxfiles. This can be much faster for remote backends because gpxfiles with the same points are not merged.

gpxdo cp [-h] [--loglevel {error,warning,info,debug}] [--nocolors] [--dry-run]
         [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
         [--max-points #] [--min-distance km] [--max-distance km]
         [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
         [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
         [--only-similar GPX] [--min-similarity LEVEL]
         [source [source ...]] destination

Positional Arguments

source

one ore more gpxfiles or backends

destination

the destination

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--dry-run

only show what would be done

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

merge

merge gpxfiles: If their trackpoints are identical, add metadata like name, description or keywords from source to destination

gpxdo merge [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
            [--dry-run] [--remove] [--partial] [--copy] [--min-date DATE]
            [--max-date DATE] [--date DATE] [--min-points #] [--max-points #]
            [--min-distance km] [--max-distance km] [--min-speed km/h]
            [--max-speed km/h] [--only-keywords WORDS]
            [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
            [--only-similar GPX] [--min-similarity LEVEL]
            [source [source ...]] destination

Positional Arguments

source

one ore more gpxfiles or backends

destination

the destination

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--dry-run

only show what would be done

Default: False

--remove

remove merged gpxfiles

Default: False

--partial

merges two gpxfiles if one is part of the other

Default: False

--copy

If the target is a backend, do not look for similar gpxfile. Just copy. This is much faster for remote backends.

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

mv

move sources to a destination backend

gpxdo mv [-h] [--loglevel {error,warning,info,debug}] [--nocolors] [--dry-run]
         [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
         [--max-points #] [--min-distance km] [--max-distance km]
         [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
         [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
         [--only-similar GPX] [--min-similarity LEVEL]
         [source [source ...]] destination

Positional Arguments

source

one ore more gpxfiles or backends

destination

the destination

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--dry-run

only show what would be done

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

rm

remove gpxfiles

gpxdo rm [-h] [--loglevel {error,warning,info,debug}] [--nocolors] [--dry-run]
         [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
         [--max-points #] [--min-distance km] [--max-distance km]
         [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
         [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
         [--only-similar GPX] [--min-similarity LEVEL]
         source [source ...]

Positional Arguments

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--dry-run

only show what would be done

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

title

set the title

gpxdo title [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
            [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
            [--max-points #] [--min-distance km] [--max-distance km]
            [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
            [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
            [--only-similar GPX] [--min-similarity LEVEL]
            title [source [source ...]]

Positional Arguments

title

the new title

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

keywords

add keywords. A keyword preceded with - will be removed. Examples:

keywords A,-B keywords – -A

gpxdo keywords [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
               [--dry-run] [--min-date DATE] [--max-date DATE] [--date DATE]
               [--min-points #] [--max-points #] [--min-distance km]
               [--max-distance km] [--min-speed km/h] [--max-speed km/h]
               [--only-keywords WORDS]
               [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
               [--only-similar GPX] [--min-similarity LEVEL]
               keywords [source [source ...]]

Positional Arguments

keywords

keywords separated by commas

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--dry-run

only show what would be done

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

description

set the description

gpxdo description [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
                  [--min-date DATE] [--max-date DATE] [--date DATE]
                  [--min-points #] [--max-points #] [--min-distance km]
                  [--max-distance km] [--min-speed km/h] [--max-speed km/h]
                  [--only-keywords WORDS]
                  [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
                  [--only-similar GPX] [--min-similarity LEVEL]
                  description [source [source ...]]

Positional Arguments

description

the new description

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

category

set the category

gpxdo category [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
               [--min-date DATE] [--max-date DATE] [--date DATE]
               [--min-points #] [--max-points #] [--min-distance km]
               [--max-distance km] [--min-speed km/h] [--max-speed km/h]
               [--only-keywords WORDS]
               [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
               [--only-similar GPX] [--min-similarity LEVEL]
               {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo
               show categories} [source [source ...]]

Positional Arguments

category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

the new category

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

public

mark as public

gpxdo public [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
             [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
             [--max-points #] [--min-distance km] [--max-distance km]
             [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
             [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
             [--only-similar GPX] [--min-similarity LEVEL]
             [source [source ...]]

Positional Arguments

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

private

mark as private

gpxdo private [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
              [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
              [--max-points #] [--min-distance km] [--max-distance km]
              [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
              [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
              [--only-similar GPX] [--min-similarity LEVEL]
              [source [source ...]]

Positional Arguments

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

split

split points at interesting places

gpxdo split [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
            [--segments] [--points POINTS] [--waypoints] [--stops minutes]
            [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
            [--max-points #] [--min-distance km] [--max-distance km]
            [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
            [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
            [--only-similar GPX] [--min-similarity LEVEL]
            [source [source ...]]

Positional Arguments

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--segments

Create one gpxfile for each segment. This is the default.

Default: False

--points

Split into segments every # points

--waypoints

Split into tracks at waypoints

Default: False

--stops
BACKUP your gpxfiles first! This can destroy them!

Whenever the time jumps back or more than X minutes into the future or when the distance speed between two points exceed 5km, split into two segments at that point

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

join

join gpxfiles into one single gpxfile

gpxdo join [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
           [--title TITLE] [--min-date DATE] [--max-date DATE] [--date DATE]
           [--min-points #] [--max-points #] [--min-distance km]
           [--max-distance km] [--min-speed km/h] [--max-speed km/h]
           [--only-keywords WORDS]
           [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
           [--only-similar GPX] [--min-similarity LEVEL]
           [source [source ...]] destination

Positional Arguments

source

one ore more gpxfiles or backends

destination

the destination

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--title

Title and id for the new gpxfile

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

diff

compare gpxfiles between source and destination

gpxdo diff [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
           [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
           [--max-points #] [--min-distance km] [--max-distance km]
           [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
           [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
           [--only-similar GPX] [--min-similarity LEVEL]
           source [source ...] destination

Positional Arguments

source

one ore more gpxfiles or backends

destination

the destination

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

fix

try to fix some GPX format bugs in gpxfiles.

First BACKUP the gpxfiles! This can destroy them!

gpxdo fix [-h] [--loglevel {error,warning,info,debug}] [--nocolors] [--orux]
          [--title-from-id] [--id-from-title] [--id-from-time]
          [--id-from-account ACCOUNT] [--simplify meters]
          [--add-minutes minutes] [--clear-times] [--clear-locations]
          [--set-first-time TIME] [--set-last-time TIME] [--add-times]
          [--add-waypoints] [--unique] [--refence] [--revert] [--force]
          [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
          [--max-points #] [--min-distance km] [--max-distance km]
          [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
          [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
          [--only-similar GPX] [--min-similarity LEVEL]
          [source [source ...]]

Positional Arguments

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--orux
BACKUP your gpxfiles first! This can destroy them!

Try to fix old oruxmaps bug where the date jumps back by one day

Default: False

--title-from-id

use id for title

Default: False

--id-from-title

use title for id, works only for Directory

Default: False

--id-from-time

use time for id, works only for Directory

Default: False

--id-from-account

use last known id for a gpxfile in account

--simplify
Reduce points within segments. The new track may move meters away from the original.

If the parameter ends with a ‘p’, it is not taken as meters but points. All segments are reduced to the given maximal value for points. If you want to keep points around stops, apply split –stops first.

--add-minutes

Add MIN minutes to all times

--clear-times

Remove all point times

Default: False

--clear-locations

Remove all point locations (point.name). ls –location and cloear –untangle add them

Default: False

--set-first-time

Set time of first point, Does not change any other point

--set-last-time

Set time of last point, Does not change any other point

--add-times

Add a time to all points without

Default: False

--add-waypoints
Gives every segment start a waypoint

like “Trk/Seg 2/5 place-name”, removes such waypoints if they are no more segment starts

Default: False

--unique

Adjacent points with identical position time: The 2nd point gets 1 second added

Default: False

--refence

Re-apply fences, they might now be more restrictive. Use –force if you are sure.

Default: False

--revert

Revert direction.

Default: False

--force

Force execution

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

help

Show specific help for a command

gpxdo help [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
           [{ls,cp,merge,mv,rm,title,keywords,description,category,public,private,split,join,diff,fix,help,clear,dump,show}]

Positional Arguments

subcommand

Possible choices: ls, cp, merge, mv, rm, title, keywords, description, category, public, private, split, join, diff, fix, help, clear, dump, show

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

clear

Clear things. Please backup first!

gpxdo clear [-h] [--loglevel {error,warning,info,debug}] [--nocolors] [--times]
            [--locations] [--segments] [--tracks] [--untangle] [--force]
            [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
            [--max-points #] [--min-distance km] [--max-distance km]
            [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
            [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
            [--only-similar GPX] [--min-similarity LEVEL]
            [source [source ...]]

Positional Arguments

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--times

Remove all point times

Default: False

--locations

Remove all point locations (point.name). ls –location adds them

Default: False

--segments

Join all segments to a single segment

Default: False

--tracks
Join all tracks to a single track. Metadata from all but the first track is thrown away.

If metadata will be lost, it is printed and nothing is done. Repeat with –force.

Default: False

--untangle

Locate and untangle rest poins: Remove their erratic local movements

Default: False

--force

Force execution

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

dump

Show specific GPX values

gpxdo dump [-h] [--loglevel {error,warning,info,debug}] [--nocolors] [--points]
           [--min-date DATE] [--max-date DATE] [--date DATE] [--min-points #]
           [--max-points #] [--min-distance km] [--max-distance km]
           [--min-speed km/h] [--max-speed km/h] [--only-keywords WORDS]
           [--only-category {Cycling,Cycling - Road,Cycling - Gravel,Cycling - MTB, see gpxdo show categories}]
           [--only-similar GPX] [--min-similarity LEVEL]
           [source [source ...]]

Positional Arguments

source

one ore more gpxfiles or backends

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

--points

List detailled info about points

Default: False

--min-date

Limit gpxfiles by date

--max-date

Limit gpxfiles by date

--date

Limit gpxfiles by specific date

--min-points

Limit gpxfiles by minimal # of points

--max-points

Limit gpxfiles by maximal # of points

--min-distance

Limit gpxfiles by minimal distance

--max-distance

Limit gpxfiles by maximal distance

--min-speed

Limit gpxfiles by minimal speed

--max-speed

Limit gpxfiles by maximal speed

--only-keywords

Limit gpxfiles by keywords

--only-category

Possible choices: Cycling, Cycling - Road, Cycling - Gravel, Cycling - MTB, Cycling - Indoor, Cycling - Hand, Cycling - Touring, Cycling - Foot, Running, Running - Trail, Running - Urban Trail, Running - Road, Sailing, Walking, Hiking, Hiking - Speed, Swimming, Driving, Off road driving, Motor racing, Motorcycling, Enduro, Skiing, Skiing - Touring, Skiing - Backcountry, Skiing - Crosscountry, Skiing - Nordic, Skiing - Alpine, Skiing - Roller, Canoeing, Kayaking, Sea kayaking, Stand up paddle boarding, Rowing, Windsurfing, Kiteboarding, Orienteering, Mountaineering, Skating, Skateboarding, Horse riding, Hang gliding, Gliding, Flying, Snowboarding, Paragliding, Hot air ballooning, Nordic walking, Snowshoeing, Jet skiing, Powerboating, Swimrun, Pedelec, Crossskating, Motorhome, Cabriolet, Coach, Pack animal trekking, Train, Wheelchair, Sightseeing, Geocaching, Longboard, River navigation, Skating - Inline, Wintersports, Miscellaneous

Limit gpxfiles by category

--only-similar

Limit gpxfiles by similarity to one out of GPX. GPX is a list of gpxfiles separated with a comma and no space. This will only work for gpxfile identifiers without comma.

--min-similarity

Limit gpxfiles by minimal LEVEL of similarity. 0 is minimum value, 1 is identity. Default is 0.5

Default: 0.5

show

show things

gpxdo show [-h] [--loglevel {error,warning,info,debug}] [--nocolors]
           {categories}

Positional Arguments

what

Possible choices: categories

show

Named Arguments

--loglevel

Possible choices: error, warning, info, debug

set the loglevel

Default: “error”

--nocolors

do not use colors

Default: False

source and destination arguments may be single gpxfiles or entire backend instances. Local files and directories are given as usual.

For all other backends, the syntax is:
  • account: for all gpxfiles in a backend. Example: g:

  • account:track_id for one specific gpxfile in a backend. Example: g:1234

Available backends are Directory,MapMytracks, GPSIES, Openrunner, Mailer,WPTrackserver

The file $HOME/.config/Gpxity/accounts defines the account. Example:

Account g
    Backend GPSIES
    Username gpsies_username
    Password xxxx

Dates are expected as YYYY-MM-DDThh:mm:ss or any abbreviation like in 2019-02-13T15 or 2019 Times are always local time. GPX and most backend store UTC, this is translated by gpxdo.

gpxity_server

usage: gpxity_server [-h] --servername SERVERNAME [--certfile CERTFILE]
                     [--keyfile KEYFILE] [--port PORT]
                     [--loglevel {debug,info,warning,error}]
                     target [target ...]

Positional Arguments

target

backends who should receive the data. The first one must be Directory

Named Arguments

--servername

the name of this server

--certfile

if certfile and keyfile are given: offer https

--keyfile

if certfile and keyfile are given, offer https

--port

listen on PORT. Default is 80 for http and 443 for https

--loglevel

Possible choices: debug, info, warning, error

set the loglevel, default is error

Default: “error”

The MMT server uses BASIC AUTH for login. Define user:password in the file .users in the first target. Define authorization for optional other targets in the file accounts the first target.