diff --git a/coordinates_from_gpx_to_txt.py b/coordinates_from_gpx_to_txt.py index 81c7231..6400267 100644 --- a/coordinates_from_gpx_to_txt.py +++ b/coordinates_from_gpx_to_txt.py @@ -1,11 +1,5 @@ -from pprint import pprint - import gpxpy import gpxpy.gpx -from lxml import etree -from lxml.etree import _ElementTree -from pykml.factory import KML_ElementMaker as KML -from pykml import parser import os import logging @@ -29,20 +23,6 @@ def export_coordinates_gpx_file_as_string(file, prepend_file_name=False): return str + "" -def export_coordinates_gpx_file(file): - gpx_file = open(file, "r") - logging.info(f"opening {gpx_file}") - gpx = gpxpy.parse(gpx_file) - - coords = list() - for track in gpx.tracks: - for segment in track.segments: - for point in segment.points: - coords.append("{0},{1} ".format(round(point.longitude, 6), round(point.latitude, 6))) - - return coords - - def insert_coordinates_into_kml_file(kml_file, search_string, coordinate_string, backup_orig_file=True): with open(kml_file) as f: text = f.read() @@ -64,41 +44,22 @@ def insert_coordinates_into_kml_file(kml_file, search_string, coordinate_string, f.write(text) -def create_placemark_from_gpx_file(gpx_file): - coords = " ".join(export_coordinates_gpx_file(gpx_file)) - return KML.Placemark( - KML.name(gpx_file.split('.', 1)[0]), - KML.LineString( - KML.coordinates(coords) - ), - ), - - -def create_kml_from_gpx_files(kml_file): - pms = list() - for filename in os.listdir(os.getcwd()): - if filename.lower().endswith(".xml") or filename.lower().endswith(".gpx"): - pms.append(create_placemark_from_gpx_file(filename)) - doc = KML.kml(KML.name("A third placemark!"), - set(pms)) - doc = KML.kml(KML.name("A third placemark!")) - pprint(etree.tostring(doc, pretty_print=True, encoding='utf-8', method='xml').decode('utf-8')) - with open(kml_file, "w") as f: - f.write(etree.tostring(doc, pretty_print=True).decode('utf-8')) - - for filename in os.listdir(os.getcwd()): if filename.lower().endswith(".xml") or filename.lower().endswith(".gpx"): coords_string = export_coordinates_gpx_file_as_string(filename) insert_coordinates_into_kml_file("europa_testkarte.kml", filename.split('.', 1)[0], coords_string) exit() -out = "" -for filename in os.listdir(os.getcwd()): - if filename.lower().endswith(".xml") or filename.lower().endswith(".gpx"): - out = out + export_coordinates_gpx_file(filename) + "\n" -print(out) -exit() -with open("Output.txt", "w") as text_file: - text_file.write(out) +def export_coordinates_gpx_file(file): + gpx_file = open(file, "r") + logging.info(f"opening {gpx_file}") + gpx = gpxpy.parse(gpx_file) + + coords = list() + for track in gpx.tracks: + for segment in track.segments: + for point in segment.points: + coords.append("{0},{1} ".format(round(point.longitude, 6), round(point.latitude, 6))) + + return coords diff --git a/kml_stuff.py b/kml_stuff.py new file mode 100644 index 0000000..8f36737 --- /dev/null +++ b/kml_stuff.py @@ -0,0 +1,60 @@ +import logging +import os +from pprint import pprint + +import gpxpy +from lxml import etree +from lxml.etree import _ElementTree +from pykml.factory import KML_ElementMaker as KML +from pykml import parser + + +def export_coordinates_gpx_file(file): + gpx_file = open(file, "r") + logging.info(f"opening {gpx_file}") + gpx = gpxpy.parse(gpx_file) + + coords = list() + for track in gpx.tracks: + for segment in track.segments: + for point in segment.points: + coords.append("{0},{1} ".format(round(point.longitude, 6), round(point.latitude, 6))) + + return coords + + +def create_placemark_from_gpx_file(gpx_file): + coords = " ".join(export_coordinates_gpx_file(gpx_file)) + return KML.Placemark( + KML.name(gpx_file.split('.', 1)[0]), + KML.LineString( + KML.coordinates(coords) + ), + ), + + +def create_kml_from_gpx_files(kml_file): + pms = list() + for filename in os.listdir(os.getcwd()): + if filename.lower().endswith(".xml") or filename.lower().endswith(".gpx"): + pms.append(create_placemark_from_gpx_file(filename)) + doc = KML.kml(KML.name("A third placemark!"), + set(pms)) + doc = KML.kml(KML.name("A third placemark!")) + pprint(etree.tostring(doc, pretty_print=True, encoding='utf-8', method='xml').decode('utf-8')) + with open(kml_file, "w") as f: + f.write(etree.tostring(doc, pretty_print=True).decode('utf-8')) + + +def export_coordinates_gpx_file(file): + gpx_file = open(file, "r") + logging.info(f"opening {gpx_file}") + gpx = gpxpy.parse(gpx_file) + + coords = list() + for track in gpx.tracks: + for segment in track.segments: + for point in segment.points: + coords.append("{0},{1} ".format(round(point.longitude, 6), round(point.latitude, 6))) + + return coords