Skip to content

Instantly share code, notes, and snippets.

@pperle
Created September 27, 2017 20:22
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save pperle/6ad4359bb49a2f2d035d2667719506a2 to your computer and use it in GitHub Desktop.
Save pperle/6ad4359bb49a2f2d035d2667719506a2 to your computer and use it in GitHub Desktop.
convert CSV to DaimlerGPX (for SCDB)
import csv
import glob
import os
# gpx layout from https://www.gps-data-team.com/convert/
gpx_header = '<?xml version="1.0" encoding="ISO-8859-2" standalone="no" ?><gpx:gpx creator="csv2DaimlerGPX" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gpx="http://www.topografix.com/GPX/1/1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:gpxd="http://www.daimler.com/DaimlerGPXExtensions/V2.4">'
gpx_entry = '<gpx:wpt lat="{lat}" lon="{lon}"><gpx:name>{name}</gpx:name><gpx:extensions><gpxd:WptExtension><gpxd:WptIconId IconId="16"></gpxd:WptIconId><gpxd:POICategory Cat="Speed Cameras"></gpxd:POICategory><gpxd:Activity Active="true" Level="warning" Unit="second" Value="15"></gpxd:Activity><gpxd:Presentation ShowOnMap="true"></gpxd:Presentation><gpxd:Address ISO="" Country="" State="" City="" CityCenter="" Street="" Street2="" HouseNo="" ZIP=""></gpxd:Address><gpxd:Phone Default=""></gpxd:Phone></gpxd:WptExtension></gpx:extensions></gpx:wpt>'
gpx_end = '</gpx:gpx>'
def csv2gpx(file):
gpx_file_name = file[:-3] + 'gpx'
with open(gpx_file_name, 'w') as gpx_file:
print('creating ' + file[:-3] + 'gpx')
gpx_file.write(gpx_header)
with open(file) as csv_file:
scv_header = ['lat', 'lon', 'name', 'id']
dict_reader = csv.DictReader(csv_file, delimiter=',', quotechar='"', fieldnames=scv_header)
for row in dict_reader:
gpx_file.write(gpx_entry.format(lat=row['lat'], lon=row['lon'], name=row['name']))
gpx_file.write(gpx_end)
os.remove(file) # comment out this line if you want to keep the csv
for file in glob.glob("data/*.csv"):
csv2gpx(file)
print('finished csv2DaimlerGPX')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment