transform_gpx_to_kml_files.py
|
# ------------------------------------------------------------------------------#
import os;
import time;
from typing import List;
# Local python files
from pyfiles import extract_kmldata_outof_gpxfile as extractor;
from pyfiles import generate_kmlfile_from_gpxdata as generator;
# ------------------------------------------------------------------------------#
def getListOfFiles(NameOfDir: str,ext: str) -> List[str]:
listOfFiles=os.listdir(NameOfDir);
return sorted([fl for fl in listOfFiles if fl.endswith(ext)]);
# end getListOfFiles()
# ------------------------------------------------------------------------------#
def formatCoords(coords: extractor.TypeCoords) -> str:
return "{0:8.6f},{1:9.6f},{2:5.2f}".format(*map(float,coords));
# end def formatCoords
# ------------------------------------------------------------------------------#
# ------------------------------------------------------------------------------#
if __name__=='__main__':
print('\n# Beginning transform_gpx_to_kml_files.py ...\n');
# --------------------------------------------------------------------------#
# --------------------------------------------------------------------------#
Author="Bernd";
nameOfDir='./gpxfiles';
assert (os.access(nameOfDir,os.F_OK)), \
"# Directory ./gpxfiles does not exist!";
templateFilePath='./templates/template_from_gpx_to_kml.kml';
assert (os.access(templateFilePath,os.F_OK)), \
"# File ./templates/template_from_gpx_to_kml.kml does not exist!";
# --------------------------------------------------------------------------#
# --------------------------------------------------------------------------#
timeStamp=time.strftime(", %d.%m.%Y, %H:%M MEZ");
inExtension='.gpx';
extFileNames=getListOfFiles(nameOfDir,inExtension);
for extfn in extFileNames:
print("> Transforming: "+extfn);
pureFilename=str(extfn.split('.')[0]);
inputFilePath=nameOfDir+'/'+extfn;
(wptData,trkData)=extractor.extractKmlData(inputFilePath);
# ----------------------------------------------------------------------#
# Transforming outputdata of function extractKmlData
# to inputdata of function generateKmlFile
# ----------------------------------------------------------------------#
docData=(pureFilename,Author+timeStamp);
waypointsData={name:formatCoords(coords)
for (name,coords) in wptData.items()};
(trkName,trkPoints)=trkData;
pathCoordsAsString="".join(['\n'+formatCoords(ppt)
for ppt in trkPoints]);
trackpathData=(trkName,pathCoordsAsString);
# ----------------------------------------------------------------------#
# ----------------------------------------------------------------------#
outExtension='.kml';
outputFilePath=nameOfDir+'/'+pureFilename+outExtension;
generator.generateKmlFile(templateFilePath,
docData,
waypointsData,
trackpathData,
outputFilePath);
# end for;
# --------------------------------------------------------------------------#
# --------------------------------------------------------------------------#
print('\n> Working Directory with files (gpx,kml) is: ',nameOfDir);
print('\n# Finished transform_gpx_to_kml_files.py.\n');
# end if main
# ------------------------------------------------------------------------------#
# ------------------------------------------------------------------------------#