12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #!/usr/bin/python3
- # -*- coding: utf-8 -*-
- import click
- import sys
- import functools
- import xml.etree.ElementTree as ET
- from lxml import etree
- from datetime import datetime
- @click.command()
- @click.option("-f", help="file gpx to process", required=True)
- @click.option("-o", help="outputfile", required=False)
- @click.option("-op", help="operation to perform", default="INV", show_default=True )
- def reapIt(f,op,o):
- tree = etree.parse(f)
- if op =="INV":
- inverse(tree)
- else:
- print("OP unknown")
- sys.exit()
- if o is None:
- print((etree.tostring(tree, pretty_print=True)).decode('UTF-8'))
- else:
- tree.write(o, pretty_print=True)
- print('File written: ' + o)
- def inverse(tree):
- s = tree.xpath('//trkpt')
-
-
- s = sorted(s,key=functools.cmp_to_key(timeComparator),reverse=True)
- # print(s[0].xpath('time/text()')[0])
- # print(s[-1].xpath('time/text()')[0])
- segs = tree.xpath('//trkseg')[0]
- segs.clear()
-
- for e in s:
- segs.append(e)
-
- def timeComparator(trkpt1, trkpt2):
- d1 = datetime.fromisoformat(trkpt1.xpath('time/text()')[0].replace('Z','+00:00'))
- d2 = datetime.fromisoformat(trkpt2.xpath('time/text()')[0].replace('Z','+00:00'))
- return (int)((d1.timestamp()-d2.timestamp()))
- if __name__ == '__main__':
- reapIt()
-
|