• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Anführungszeichen beim CSV-Export für POILoader

Wutschkow

Geomaster
Ich bin mir fast sicher, dass die Antwort auf meine Frage hier irgendwo im Forum steht, aber ich habe sie nicht gefunden.

Ich möchte mir die Cache- bzw. Parkplatz-Koordinaten für mein Garmin-Autonavi exportieren. Das mache ich mit folgendem Template als CSV-Datei für den POILoader:
Code:
<#-- CSV -->
<tmpl_par name="charset" value="ASCII">
<tmpl_par name="Out" value="*.csv">
<tmpl_par name="badchars" value=",">
<tmpl_par name="newline" value="CRLF">
<tmpl_par name="takeOnlyWp" value="parking">
<tmpl_loop cache_index>
<tmpl_var name=LON>,<tmpl_var name=LAT>,"<tmpl_var name=MAINWPNAME> <tmpl_var name=NAME>",,<br />
</tmpl_loop>

Das Problem: Manche Cachenamen enthalten Anführungszeichen, über die der POILoader dann stolpert. Wie ist da die empfohlene Vorgehensweise?
Als badchars kann ich Anführungszeichen ja nicht direkt definieren. Gibt es dafür eine RegEx oder wie macht man das am besten?
Gibt es weitere Zeichen, über die der POILoader stolpern kann?
 

Kalli

Geowizard
Hi,

ich habe mal das Template geändert:
Code:
<#-- CSV -->
<tmpl_par name="charset" value="ASCII">
<tmpl_par name="Out" value="*.csv">
<tmpl_par name="badchars" value=",\x22">
<tmpl_par name="newline" value="CRLF">
<tmpl_par name="takeOnlyWp" value="parking">
<tmpl_loop cache_index>
<tmpl_var name=LON>,<tmpl_var name=LAT>,"<tmpl_var name=MAINWPNAME> <tmpl_var name=NAME>",,<br />
</tmpl_loop>

Hat bei mir funktioniert.
Vorher:
Code:
008.77417,50.40500," Auftrag: "Tutti Frutti" (T5)",,

Nachher:
Code:
008.77417,50.40500," Auftrag: Tutti Frutti (T5)",,

Allerdings gibt es auch einen Nebeneffekt: Bei mir verschwinden die Anführungszeichen dann auch aus dem Cachenamen in der Datenbank..... Woran das liegt, ist mir schleierhaft, die Exporter sollten nur lesen.

Alternativ könntest Du natürlich auch die POIs über den GPX-Exporter erstellen, da brauchst Du keinen POI-Loader, sondern nur gpsbabel.
 

Kalli

Geowizard
Ich habe eine Ursache für den Bug gefunden, dass die Badchars im Cachenamen ersetzt werden. Bevor ich anfange zu ändern, mal eine Frage an die aktiven Programmierer.

In CacheHolder.java (ab Zeile 674) gibt es die folgende Codestelle. Ich frage mich nun, ob das nur ein Nebeneffekt ist oder ob man sich etwas dabei gedacht hat.
Code:
		if (codec instanceof AsciiCodec) {
			cacheName = Exporter.simplifyString(cacheName);
		} // use for "NAME"
		if (badChars != null) {
			cacheName = badChars.replaceAll(cacheName);
 
OP
Wutschkow

Wutschkow

Geomaster
Kalli schrieb:
Alternativ könntest Du natürlich auch die POIs über den GPX-Exporter erstellen, da brauchst Du keinen POI-Loader, sondern nur gpsbabel.
Vielen Dank für die Änderung. Super! :D
Den GPX-Exporter kann ich in diesem Fall nicht nehmen, da ich pro Cache entweder die Koordinaten des Hauptwegpunkts oder - wenn vorhanden - die Koordinaten eines Parkplatz-Addis haben möchte. Und das geht nur per Template.
 
OP
Wutschkow

Wutschkow

Geomaster
araber95 schrieb:
Es sollte auch so gehen :
<tmpl_par name="badchars" value="\"">
Ich muss das leider nochmal hochholen:

Ich benutze im Template jetzt die folgende Zeile:
Code:
<tmpl_par name="badchars" value=",\"">
Das hat auch eine Weile problemlos funktioniert (vielleicht waren auch nur nicht die richtigen (falschen) Caches dabei?). Jetzt geht es aber nicht mehr. Z. B. bei diesem Cache bekomme ich wieder eine Fehlermeldung und die Anführungszeichen sind in der CSV auch nicht entfernt: http://coord.info/GC2ZQ0G

Bei diesem hier hingegen klappt es: http://coord.info/GC254ZD

Der Unterschied: Beim ersten Cache stehen die Anführungszeichen mitten im Namen, beim zweiten (wo es klappt) stehen sie am Anfang und am Ende.

Mach ich da was falsch oder....
 

arbor95

Geoguru
bei mir geht das in beiden Fällen ohne Fehlermeldung und richtig.


008.23160,52.36685,"GC2ZQ0G M/r Curver Tour Kronensee - bin ganz brav Version 3.0/2.5",,Geocache|Multi-cache
008.23160,52.36685,"GC2ZQ0G HINT","Wer die Tour schon mal gemacht hat kann auch zur Station 6 und dann zum Finale. Es sei denn er möchte die Änderungen auch sehen ;-)<br>Station 1 - Vorsicht Kopfbeulengefahr<br>Station 1 -> 2 600 - 1000m<br>Station 3 - die Äste darunter auch so lassen als Wasserablauf<br>Station 3 -> 4 500 - 700m<br>Station 4 wieder gut tarnen aber nicht zu offensichtlich mit Stöckchen oder so letzte Dose wurde gemuggelt.<br>Station 5 -> offensichtlich für die typische Verwendung zu weit unten angebracht<br>Station 6 -> mit neuer Farbe besser getarnt. Deckel richtig zu machen! Mit N52 anfangen.<br>Finale -> entlang des Flachgelegten zur Dingsda des Übels",HINT
008.22915,52.36872,"PK2ZQ0G P/r Parking 3.0/2.5",,Waypoint|Parking Area
008.23160,52.36685,"S12ZQ0G S/r Station 1 3.0/2.5",,Waypoint|Stages of a Multicache
008.04167,52.23333,"GC254ZD U/r Verbindungen 3.0/1.5",,Geocache|Unknown Cache
008.04167,52.23333,"GC254ZD HINT","Aktenzeichen X Y ungelöst",HINT
 
OP
Wutschkow

Wutschkow

Geomaster
Also ich benutze folgendes Template:
Code:
<#-- CSV -->
<tmpl_par name="charset" value="ASCII">
<tmpl_par name="Out" value="*.csv">
<tmpl_par name="badchars" value=",\"">
<tmpl_par name="newline" value="CRLF">
<tmpl_par name="takeOnlyWp" value="parking">
<tmpl_loop cache_index>
<tmpl_var name=LON>,<tmpl_var name=LAT>,"<tmpl_var name=MAINWPNAME> <tmpl_var name=NAME>",,<br />
</tmpl_loop>
mit der aktuelle win32-EXE (build 3108).
Da bekomme ich für den Cache GC2ZQ0G die Zeile:

008.22915,52.36872,"Curver Tour Kronensee - "bin ganz brav" Version Parking",,

Habe den Cache gerade noch mal frisch gespidert, um Altlasten auszuschließen.

Wie kommts?
 
OP
Wutschkow

Wutschkow

Geomaster
araber95 schrieb:
Das liegt daran, dass bei MAINWPNAME keine Ersetzung gemacht wird, so wie bei NAME.
Ja, das stimmt wohl. Ich habe nochmal ein wenig probiert und nun verstehe ich, was passiert und wieso es mal klappt und mal nicht.

Problem:
Wenn ich
Code:
<tmpl_par name="takeOnlyWp" value="parking">
benutze, um - wenn vorhanden - den Parking-Addi oder sonst eben den Mainwaypoint zu exportieren, dann muss ich MAINWPNAME benutzen, sonst habe ich nachher jede Menge POIs, die einfach nur "Parking" oder "Parkplatz" heißen, was mich ja nicht wirklich weiterbringen würde.
Könnte MAINWPNAME nicht vielleicht auch diese Ersetzung machen bzw. spricht etwas dagegen, das zu ändern?
Oder sieht jemand einen anderen Lösungsansatz (abgesehen davon, die Anführungszeichen jeweils hinterher aus den exportierten Dateien zu entfernen)?
 

arbor95

Geoguru
ist in die aktuellen Release Version 3109 bereits eingearbeitet. Veröffentliche es sofort als 3110 im NB.
 
Oben