Archies Campingplatz-POIs für Garmin-Geräte unter Linux

Hier wird beschrieben, wie man die Campingplatz-POIs von archiescampings.eu in eine POI-Datei im Garmin-spezifischen gpi-Format umwandeln kann. Für Windows und MAC gibt es dafür von Garmin das Programm POI Loader. Will man ohne Windows auskommen und auch auf Wine verzichten, dann kann man die gpi-Datei unter Linux mit perl und gpsbabel erstellen.

Als Eingabe wird die Archies-POI-Liste im GPX-Format verwendet. Nach dem Entpacken der Archies-Landesdatei findet man diese Datei im Verzeichnis GPX eXchange-zzz unter dem Namen archies_xxx.gpx. Im folgenden wird die europaweite POI-Datei zu Grunde gelegt.

Mein Garmin-Gerät (Etrex 30) erlaubt, wie wahrscheinlich die meisten Garmin-Geräte, keine Texte mit Zeichen außerhalb des ASCII-Zeichensatzes. GPI-Dateien, welche solche Zeichen enthalten, werden vom Gerät ignoriert. Das ist mit den Archies-Dateien kein Problem, da diese in ISO-8859-1 codiert sind. Bearbeitet man die Daten jedoch vor der Konvertierung mit QLandkarteGT, QMapShack oder einem ähnlichen Tool, dann ist die erzeugte GPX-Datei meist in UTF-8 codiert. Will man Probleme mit der Zeichencodierung vermeiden, dann entfernt man mit diesem Perl-Einzeiler alle nicht ASCII-codierten Zeichen:

perl  -pne 's/[^[:ascii:]]//g' archies_europe.gpx > archies_europe_ascii.gpx

Alternative:

iconv -c -t ISO8859-1 archies_europe.gpx | unaccent iso-8859-1 > archies_europe_ascii.gpx

Will man das mitgelieferte Icon für die POIs verwenden, muss dieses noch von 4-Bit-RGB nach 8-Bit-RGB konvertiert werden:

convert archies_europe.bmp -colorspace RGB BMP3:archies_europe-rgb8.bmp

Im dritten Schritt wird dann die gpi-Datei mit gpsbabel erzeugt:

gpsbabel -i gpx -f archies_europe_ascii.gpx -o garmin_gpi,bitmap=./archies_europe.bmp,category="Archies" -F archies.gpi

Die so erzeugte Datei wird auf das Gerät bzw. die Speicherkarte in das Verzeichnis /Garmin/POI kopiert. In der POI-Liste des Geräts findet man die Camping-POIS dann unter Extras.

Wichtiger Hinweis:

Die GPI-Dateien müssen unterschiedliche Zeitstempel haben. Ruft man GpsBabel in einem Skript auf, sollte man daher zwischen zwei Aufrufen eine Wartezeit einfügen oder die Option sleep zum Ausgabeformat gpi hinzufügen.