|
|
-
- 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()
|