Created
September 27, 2017 20:22
-
-
Save pperle/6ad4359bb49a2f2d035d2667719506a2 to your computer and use it in GitHub Desktop.
convert CSV to DaimlerGPX (for SCDB)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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