-
-
Save gplv2/3ec2ee511d86a3da07feea2106628c93 to your computer and use it in GitHub Desktop.
convert CSV to DaimlerGPX (for SCDB)
This file contains hidden or 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