12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #!/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)
- 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)
- # print(e.tag)
- # print(e.xpath('time/text()')[0])
- # if epre is None:
- # epre = e
- # timeComparator(e,epre)
- if o is None:
- print((etree.tostring(tree, pretty_print=True)).decode('UTF-8'))
- else:
- tree.write(o, pretty_print=True)
- 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()
-
|