| @ -0,0 +1,83 @@ | |||||
| from bs4 import BeautifulSoup | |||||
| import glob | |||||
| import os.path | |||||
| def parseTCX(filename): | |||||
| file = open(filename) | |||||
| xml_file = file.read() | |||||
| soup = BeautifulSoup(xml_file, 'lxml') | |||||
| id = soup.find("id").text | |||||
| lats = [] | |||||
| longs = [] | |||||
| for tag in soup.find_all("trackpoint"): | |||||
| lats.append(tag.find("latitudedegrees").text) | |||||
| longs.append(tag.find("longitudedegrees").text) | |||||
| return id[:-10], lats, longs | |||||
| def single_run(id, lats, longs): | |||||
| locString = "" | |||||
| for i in range(0, len(lats)): | |||||
| locString += longs[i] + "," + lats[i] + " " | |||||
| value = """ | |||||
| <Placemark> | |||||
| <name>{0}</name> | |||||
| <description>xx Miles</description> | |||||
| <Style> | |||||
| <LineStyle> | |||||
| <color>ff0000e6</color> | |||||
| <width>4</width> | |||||
| </LineStyle> | |||||
| </Style> | |||||
| <LineString> | |||||
| <tessellate>1</tessellate> | |||||
| <altitudeMode>clampToGround</altitudeMode> | |||||
| <coordinates>{1}</coordinates> | |||||
| </LineString> | |||||
| </Placemark> | |||||
| """ | |||||
| return value.format(id, locString) | |||||
| def convertToKML(): | |||||
| base_path = os.path.dirname(os.path.realpath(__file__)) | |||||
| files = glob.glob(base_path + "/tcx/*.tcx") | |||||
| header = """<?xml version="1.0" encoding="utf-8" standalone="yes"?> | |||||
| <kml xmlns="http://www.opengis.net/kml/2.2"> | |||||
| <Document> | |||||
| <name><![CDATA[38415617200]]></name> | |||||
| <visibility>1</visibility> | |||||
| <open>1</open> | |||||
| <Folder id="Runs"> | |||||
| <name>Tracks</name> | |||||
| <visibility>1</visibility> | |||||
| <open>0</open> | |||||
| """ | |||||
| footer = """ | |||||
| </Folder> | |||||
| </Document> | |||||
| </kml> | |||||
| """ | |||||
| o_file = open("outputKML.kml", "w") | |||||
| o_file.write(header) | |||||
| for file in files: | |||||
| id, lats, longs = parseTCX(file) | |||||
| o_file.write(single_run(id, lats, longs)) | |||||
| print(files) | |||||
| o_file.write(footer) | |||||
| o_file.close() | |||||
| convertToKML() | |||||