Für unsere Norwegenferien wollte ich das Tomtom-OV2 über das GPX-Format in die POI-Datenbank von FoxtrottGPS (Fork von TangoGPS) importieren.
Die Campingplätze habe ich von http://www.norwegen-reise.com ins Tomtom-OV2 Format exportiert.
Anschliessend habe ich dieses via POI-Editor in das GPX Format konvertiert.
Nach dem Kopieren dieser GPX-Datei auf mein Openmoko Freerunner (mit SHR-Unstable) habe ich das Python-Skript von splitbrain.org angepasst:
#!/usr/bin/env python
from xml.etree.ElementTree import parse
import sys, re, hashlib
from sqlite3 import dbapi2 as sqlite
import htmlentitydefs
if len(sys.argv) <3:
print "usage:"
print "./pocket2tango gpxfile poidbfile"
print " gpxfile: a file in the geocaching.com gpx pocket query file format, containing cache information"
print " poidbfile: usually poi.db, or any other wellformed tangogps poi sqlite database file"
sys.exit(1)
def unicode2html(str):
"""translate any unicode or upper ascii char by its html entity"""
ret=""
for char in str:
if ord(char) > 127:
try:
ret=ret+"&"+htmlentitydefs.codepoint2name[ord(char)]+";"
except:
ret=ret+'?'
else:
ret=ret+char
return ret
def escapeQuote(str):
"""escapes single quotes by double single quote, sqlite style"""
return str.replace('\'', '\'\'');
gpx = open(sys.argv[1])
xml = parse(gpx).getroot()
con = sqlite.connect(sys.argv[2])
cur = con.cursor()
for wpt in xml:
if 1==1:
data = {} # dictionary holding all relevant data to be written into database
# transfer lat, lon into dictionary directly
print wpt
for item in wpt.items():
data[item[0]]=item[1]
print item[0]
# transfer all text information from the groundspeak tags into dictionary
for sub in wpt:
if sub.tag=="name":
data['gcid']=sub.text
# build the query
idmd5 = hashlib.md5(data['lon']+data['lat']).hexdigest()[0:18] #not the format tangogps uses, but what's an idmd5 anyway?
summary = escapeQuote(data['gcid'])
query = "insert into poi (idmd5, lon, lat, keywords, visibility, cat, subcat, price_range, extended_open, desc) values ('"+idmd5+"', '"+data['lon']+"', '"+data['lat']+"', '"+data['gcid']+"', 0.0, 0.0, 0
.0, 3.0, 0.0, '"+summary+"')" #tangogps crashes if some of these remain NULL. whatever.
cur.execute(query)
con.commit()
Mit dem folgenden Befehl hat der Import nach der Korrektur der gpx-Datei (ungültige Unicode-Zeichen entfernt) geklappt:
./pocket2tango.py 1311272501-norwegen-reise-com-camping-converted.gpx ~/.foxtrotgps/poi.db