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

POI-Upload zu Garmin mit DistConv *** jetzt automatisch!!!

Inder

Geowizard
Ich habe im Pocketnavigation-Forum ein Tool interessantes Tool entdeckt:
DistConv (aktuell V2.02)

Das erleichtert den Cache-Upload als POI mit Annäherungswarnung enorm. Es konvertiert in einem Aufwasch alle CSV-Dateien in einem Verzeichnis in GPX für den POI-Loader. Dabei setzt es noch zu jeder Datei die gewünsche Annäherungsdistanz. Diese werden in der ini-Datei definiert. BMPs für die jeweiligen Dateien werden auch gleich mit in das Ausgabeverzeichnis kopiert. Danach kann man alle POI-Dateien im Automatikmodus hochladen, ohne für jede manuell die Abstandswarnung einstellen zu müssen.

Mein Upload sieht also im Augenblick so aus:

1. Für jeden Typ eine Datei als CSV (manuell mittels Filter und Template) in das Input-Verzeichnis exportieren.
2. DistConv einmal automatisch laufen lassen.
3. POI-Loader im Automatikmodus laufen lassen
fertig

Sehr aufwendig ist immer noch der Export der einzelnen Dateien nach Cache- bzw. Waypoint-Typ. Der Rest sind nur ein paar Klicks. Vielleicht hat da TweetyHH ja mal ein paar nette Ideen?

Verwendete Einstellungen/Dateien:

CSV-Template (das mit den Klartext-Hinweisen funktioniert noch nicht, stört aber auch nicht):

*** aktuelle Version weiter unten ***

distconv.ini:

[Distconv]

*** aktuelle Version weiter unten ***
 
OP
Inder

Inder

Geowizard
Ach ja, als Symbole verwende ich die GarminUserSymbols von Cachewolf. Ausgepackt und entsprechend umbenannt liegen sie im Input-Ordner von DistConv. Damit werden immer nur die gerade benötigten in den Output-Ordner kopiert.
Jetzt sind wirklich alle Caches und Waypoints mit dem passenden Symbol und mit individueller Abstandswarnung auf dem Garmin.
 
OP
Inder

Inder

Geowizard
So, jetzt klappt auch die Typtrennung endlich automatisch. Damit geht das Laden als POI mit den zugeordneten Symbolen fast vollautomatisch.

Nach einem Artikel in der C't bin ich auf die Idee gekommen, dass das kostenlose Microsoft-Tool LOGPARSER die ideale Lösung ist, um die exportierte Datei nach Cachetypen zu zerlegen. Man kann es bei Microsoft herunterladen.

Das Export-Template habe ich folgendermaßen korrigiert:

<#-- CSV -->
<#-- Codecs: ASCII, UTF8 -->
<tmpl_par name="charset" value="ASCII">
<#-- some chars should not appear in the cachename -->
<tmpl_par name="badchars" value=",">
<#-- newline: CR, LF, CRLF -->
<tmpl_par name="newline" value="CRLF">
<tmpl_loop cache_index>
<tmpl_var name=LON>,<tmpl_var name=LAT>,"<tmpl_var name=WAYPOINT> <tmpl_var name=SHORTTYPE>/<tmpl_var name=SHORTSIZE> <tmpl_var name=NAME> <tmpl_var name=DIFFICULTY>/<tmpl_var name=TERRAIN>",<tmpl_var name=TYPE><br />
</tmpl_loop>


Damit werden alle aktiven Caches in eine Exportdatei (xxxxx\POI\cwexport.csv) geschrieben.

Diese wird dann mit dem Logparser zerlegt und gleich mit distconv (wie oben beschrieben) weiterverarbeitet.

Dazu gibt es folgenden Batchjob:

*** aktuelle Version weiter unten ***




Die benötigte Datei "header.csv" ist eine reine Textdatei mit folgendem Inhalt:

LAT,LON,NAME,TYPE


Der POI-Loader startet damit automatisch und wird im Expressmodus durchgeklickt. Den könnte man theoretisch auch noch mit Optionen aufrufen, damit er automatisch abläuft. Das ist aber fehlerträchtig, wenn man ihn vorher für andere Dateien benutzt hat. Im Batchmodus führt er den Ablauf so aus, wie es beim letzten manuellen Durchlauf war.


Hier noch die aktuelle distconv.ini (xxxxx durch eigene Pfadangabe ersetzen!):

[Distconv]
InputFolder=xxxxx\POI\input
OutputFolder=xxxxx\POI\output
CopyMP3=0

[Distance]
tradi=500
final=500
letter=500
earth=500
webcam=100
multi=50
park=50
question=50
ref=50
stage=50
trail=50
event=20
virtual=20
myst=20
locless=20
cito=20

[Rename]
event=event
final=final
letter=letter
multi=multi
myst=myst
park=park
question=question
ref=ref
stage=stage
tradi=tradi
trail=trail
virtual=virtual
webcam=webcam
cito=cito
earth=earth



Verzeichnisse:

xxxxxx\POI\ hier liegen distconv.cmd, distconv.ini, distconv.vbs, der oben genannte Batchjob, header.csv und die Cachewolf-Exportdatei cwexport.csv

xxxxxx\POI\Input hier liegen die Bitmaps, die als POI-Symbole mitgeladen werden (event.bmp, final.bmp, letter.bmp, multi.bmp, myst.bmp ...). Der Batchjob erzeugt hier die einzelnen csv-Dateien.

xxxxxx\POI\Output hier erzeugt distconv die gpx-Dateien und kopiert die aktuell erforderlichen Bitmaps aus dem Input-Verzeichnis dazu. Dieses Verzeichnis wird mit dem POI-Loader dann komplett auf das Garmin geladen.
 
OP
Inder

Inder

Geowizard
Noch eine kleine Änderung im ausführenden Batchjob, da sonst der erste Cache in der Liste abgeschnitten wird:

@echo off

logparser "SELECT LAT,LON,NAME into Input\myst.csv from cwexport.csv WHERE TYPE = 'Unknown Cache'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\stage.csv from cwexport.csv WHERE TYPE = 'Stages of a Multicache'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\multi.csv from cwexport.csv WHERE TYPE = 'Multi-cache'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\park.csv from cwexport.csv WHERE TYPE = 'Parking Area'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\question.csv from cwexport.csv WHERE TYPE = 'Question to Answer'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\trail.csv from cwexport.csv WHERE TYPE = 'Trailhead'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\tradi.csv from cwexport.csv WHERE TYPE = 'Traditional Cache'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\event.csv from cwexport.csv WHERE TYPE = 'Event Cache'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\final.csv from cwexport.csv WHERE TYPE = 'Final Location'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\ref.csv from cwexport.csv WHERE TYPE = 'Reference Point'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\letter.csv from cwexport.csv WHERE TYPE = 'Letterbox Hybrid'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\virtual.csv from cwexport.csv WHERE TYPE = 'Virtual Cache'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\webcam.csv from cwexport.csv WHERE TYPE = 'Webcam Cache'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\cito.csv from cwexport.csv WHERE TYPE = 'Mega Event Cache'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
logparser "SELECT LAT,LON,NAME into Input\earth.csv from cwexport.csv WHERE TYPE = 'Earthcache'" -headerRow: off -iheaderfile: header.csv -o: CSV -headers: off -oDQuotes: on -q
call distconv.cmd
c:\garmin\poiloader.exe
 

huzzel

Geowizard
Ich habe mich jetzt auch ein wenig mit dem POI-Export beschäftigt. Ich habe die Vorarbeit von Inder ein wenig abgeändert. Heraus kam folgende POI-Anzeige:
si6cejto.jpg

Meine Vorgehensweise ist aber ein klein wenig anders. Ich greife direkt auf die index.xml Datei von den Cachewolfprofilen zu. Dies hat aus meiner Sicht mehrer Vorteile:
- man muss nicht erst die Caches exportieren -> Zeiterspanis
- man kann auch so viele Profile wie man will auf einmal in POIs umwanden
Es gibt aber auch Nachteile:
- das Ausfiltern von Caches ist schwierig. Ist aus meiner Sicht aber zu vernachlässigen, da die Anzahl an POIs ja relativ egal ist. Und dann lieber ein paar mehr als ein paar zu wenige.

Allgemein:
- Es werden nur Caches exportiert, die aktiv sind (online = true)
- Es muss eine gültige Koordinate eingegeben sein (lon != 361 | lon != -361)
- Der Cachename wird nach 41 Zeichen abgeschnitten, damit der Wegpunktname noch im Namensfeld passt. So kann auch nach dem Wegpunktnamen gesucht werden

Die Installation ist einfach.
Logparser von Microsoft herunterladen und ein Verzeichnis installieren (z.B. c:\POI). Dann die Anhang anzeigen POI.rar in das gleiche Verzeichnis entpacken. Es muss nicht mehr das original Distconv herunterladen werden. Die abgeänderte Version befindet sich im rar-Archiv.
Nun müssen in der POI.bat einige Pfade angepasst werden. Genaueres steht in der POI.bat. Das sollte es dann auch schon gewesen sein.
Wenn jetzt doch was nicht passen sollte, gebt mir einfach bescheid.
 

Sammy Raider

Geocacher
Hallo,

danke erstmal für Eure Mühe. Hab's mir mal runtergeladen und getestet. Die Befehle etwas abgewandelt läßt sich das Ganze auch zum Erstellen von POI's für andere Navis verwenden.So etwas habe ich schon lange gesucht. erspart mir einiges an Exportarbeit im Cachewolf!
Eine Kleinigkeit ist mir aufgefallen: In der Temp.csv stehen z.B. Parkplätze ohne Koordinaten nicht in der Form:
Code:
361,0
sondern so:
Code:
361.000000
, so daß die AND NOT-Abfrage nicht zieht und diese Punkte mit exportiert werden. Da meckert dann der POI-Loader. Also besser die Zeilen ändern in:
Code:
AND NOT lon =  '361.000000' AND NOT lon = '-361.000000'
, dann klappt's, jedenfalls bei mir.
Gruß Sammy
 

Sammy Raider

Geocacher
Sammy Raider schrieb:
Hallo,

danke erstmal für Eure Mühe. Hab's mir mal runtergeladen und getestet. Die Befehle etwas abgewandelt läßt sich das Ganze auch zum Erstellen von POI's für andere Navis verwenden.So etwas habe ich schon lange gesucht. erspart mir einiges an Exportarbeit im Cachewolf!
Eine Kleinigkeit ist mir aufgefallen: In der Temp.csv stehen z.B. Parkplätze ohne Koordinaten nicht in der Form:
Code:
361,0
sondern so:
Code:
361.000000
, so daß die AND NOT-Abfrage nicht zieht und diese Punkte mit exportiert werden. Da meckert dann der POI-Loader. Also besser die Zeilen ändern in:
Code:
AND NOT lon =  '361.000000' AND NOT lon = '-361.000000'
, dann klappt's, jedenfalls bei mir.
Gruß Sammy


Komisch, plötzlich kommen die Caches doch mit dem von Euch agegebenen Format raus, also Kommando zurück!
Alles wird gut!
Gruß Sammy
 
OP
Inder

Inder

Geowizard
Ich habe mal wieder weitergespielt.

Vielleicht kann huzzel das noch mit in seine Lösung aufnehmen? Insgesamt gefällt mir die Lösung von huzzel besser als meine, nur weiß ich nicht, wie ich sie entsprechend umbauen kann.

Karte.bmp
Karte2.bmp
Find.bmp
Cache.bmp
Hint.bmp



Meine Lösung hängt als Datei dran. Zip entpacken, die beiden Templates aus "Cachewolf Ordner" in das Verzeichnis von Cachewolf kopieren. "POI Ordner" an passende Stelle kopieren und in der distconv.ini die Verzeichnisse korrigieren.

Aber wie bereits geschrieben: ich baue auf huzzel ...
 

Anhänge

  • POI Aufbereitung für Garmin.zip
    39 KB · Aufrufe: 79

Sammy Raider

Geocacher
Hallo Leute,
hat hierfür vielleicht schon jemand eine Lösung für das neue Dateiformat oder kann mir jemand auseinanderklabüsern, wo genau im neuen Format der Cachetyp steht und welcher Code für welchen Cachetyp steht?
Danke für Eure Hilfe
Gruß Sammy
 

huzzel

Geowizard
Version 2 von meinem Programm ist in Arbeit. Wird ein Windowsprogramm und kann das neue Datenformat.
Dauert aber noch ein bissel. Wer will, kann aber schon die Beta-Version haben. Einfach eine PN an mich. Ich freu mich über jeden Betatester.
 

huzzel

Geowizard
Hier eine kurze Erklärung von
biraconda schrieb:
[..]
Sowohl in der index.xml, als auch in den cache.xml-Dateien findet man anstelle der Variablen type="2" dif="1.5" terrain="1" archived="false" has_bug="false" usw. zwei neue Werte:
boolFields="" und
byteFields=""

In boolFields steht eine 14-Bit-Zahl (als Dezimalzahl), bei der die Bits folgende Bedeutung haben:
Code:
                   bool2BitMask(!this.isVisible(), 1)      
		             bool2BitMask(this.is_available(), 2)   
		             bool2BitMask(this.is_archived(), 3)    
		             bool2BitMask(this.has_bugs(), 4)
       
		             bool2BitMask(this.is_black(), 5)       
		             bool2BitMask(this.is_owned(), 6)       
		             bool2BitMask(this.is_found(), 7)       
		             bool2BitMask(this.is_new(), 8)
         
		             bool2BitMask(this.is_log_updated(), 9) 
		             bool2BitMask(this.is_updated(), 10)    
		             bool2BitMask(this.is_HTML(), 11)       
		             bool2BitMask(this.is_incomplete(), 12)
 
		             bool2BitMask(this.hasNote(), 13)       
		             bool2BitMask(this.hasSolver(), 14);

In byteFields steht eine (max.) 34-Bit-Zahl (als Dezimalzahl), bei der die Bytes folgende Bedeutung haben:
Beispiel: Tradi, Mikro, D1,0/T1,5 + 1DNF (byteFields="4328656650")

Code:
  DNF   Size     Type     Terr     Diff
	01 00000010 00000010 00001111 00001010

Die Bedeutung der Bytes im Einzelnen:
Diff: 00001010...00110010 (10...50)
Terr: 00001010...00110010 (10...50)

Type:
/** custom waypoint */ = 0;
/** traditional cache (GC,OC) */ = 2;
/** multi cache (GC,OC) */ = 3;
/** virtual/mystery cache (GC) */ = 4;
/** letterbox cache (GC) */ = 5;
/** event cache (OC,GC) */ = 6;
/** quiz cache (OC) */ = 7;
/** unknown cache (GC) */ = 8;
/** math cache (OC) */ = 108;
/** moving cache (OC) */ = 9;
/** drive in cache (OC) */ = 10;
/** webcam cache (GC,OC) */ = 11;
/** locationless cache (GC) */ = 12;
/** CITO cache (GC,OC)*/ = 13;
/** Additional Waypoint Parking (GC) */ = 50;
/** Additional Waypoint Stage of a Multi (GC) */ = 51;
/** Additional Waypoint Question to answer (GC) */ = 52;
/** Additional Waypoint Final (GC) */ = 53;
/** Additional Waypoint Trailhead (GC) */ = 54;
/** Additional Waypoint Reference (GC) */ = 55;
/** Mega Event Cache (GC) */ = 100;
/** WhereIGo Cache (GC) */ = 101;
/** Project Ape cache (GC)*/ = 102;
/** Adenture Maze Exhibit (GC)*/ = 103;
/** Earth Cache (GC) */ = 104;
/** unrecognized cache type or missing information, should throw IllegalArgumentExceptions when found */ = -1;

[..]
 
Moin Moin.... das Script mit dem Log Parser direkt aus der Cachewolf hat mir so gut gefallen das ich gerade angefangen habe es an die neue Version von Cachewolf anzupassen..... denke so muesste es gehen...
Da ich aber ins Bett will aber die Idee aber noch teilen möchte ... Hier ist Sie halt.

Im Prinzip könnte man Masken und Bit Schieben benutzen um wieder an die Werte zu kommen:

Nur als Hilfe ....
Code:
REM byteFields die Masken
REM DNF  11 00000000 00000000 00000000 00000000 -> 0x300000000 BIT_SHR(,32)
REM Size 00 11111111 00000000 00000000 00000000 -> 0xFF000000 BIT_SHR(,24)
REM Type 00 00000000 11111111 00000000 00000000 -> 0xFF0000 BIT_SHR(,16)
REM Terr 00 00000000 00000000 11111111 00000000 -> 0xFF00 BIT_SHR(,8)
REM Diff 00 00000000 00000000 00000000 11111111 -> 0xFF

REM boolFields gehen noch einfacher 
REM BIT_AND(byteFields, 0x02) <> 0 -> is available
Damit würde es dann in etwa so aussehen ..

Code:
logparser "SELECT '\"',REPLACE_CHR(lon,',','.'),'\",\"',REPLACE_CHR(lat,',','.'),'\",\"',SUBSTR(name,0,41),' ',wayp,'\",\"Tradi ',DIV(BIT_AND(byteFields, 0xFF),10),'/',DIV(BIT_SHR(BIT_AND(byteFields, 0xFF00), 8),10),' ',BIT_SHR(BIT_AND(byteFields, 0xFF0000), 24),'       Owner: ',owner,'\"' into Input\tradi.csv from temp.csv WHERE BIT_AND(byteFields, 0x02) <> 0 AND BIT_SHR( BIT_AND(byteFields, 0xFF0000), 16) = 2 AND NOT lon =  '361,0' AND NOT lon = '-361,0'" -i: CSV -headerRow: on -o: TSV -oSeparator:'' -headers: off

z.B.
Code:
DIV(BIT_SHR(BIT_AND(byteFields, 0xFF00), 8),10)
sollte dann Terr 1-5 liefern

oder
Code:
BIT_SHR( BIT_AND(byteFields, 0xFF0000), 16)
liefert den Typ als Zahl
Ich mach morgen früh mal weiter .... Meinungen ?

Gruss
 

Sammy Raider

Geocacher
CaptainChaosMS schrieb:
Ich mach morgen früh mal weiter .... Meinungen ?

Hi,
das hört sich nicht schlecht an. Huzzel bastelt zwar gerade an einer Windows-Programm-Variante, die ich auch schon getestet habe, aber deine Version mit dem Logparser hat den Vorteil, daß man sie relativ einfach an seine eigenen Bedürfnisse anpassen kann. Also weiter so !!! ;)
Gruß Sammy
 
So ich habe dann doch nochmal weitergemacht .... muesste man aber sicher mal schauen ob das alles so stimmt und ob man nicht noch das gefunden auswertet so das man am Ende als POIs gefunden nicht gefunden verschiedene Icons hat....

Egal ich mache es jetzt in dem Script so:
Code:
FOR /F "eol=; tokens=1-3 delims=, " %%i IN (type.txt) DO logparser "SELECT '\"',REPLACE_CHR(lon,',','.'),'\",\"',REPLACE_CHR(lat,',','.'),'\",\"',SUBSTR(name,0,41),' ',wayp,'\",\"%%i ',BIT_AND(byteFields, 0xFF),'/',BIT_SHR(BIT_AND(byteFields, 0xFF00), 8),' ',BIT_SHR(BIT_AND(byteFields, 

0xFF0000), 24),'       Owner: ',owner,'\"' into Input\%%k.csv from temp.csv WHERE BIT_AND(byteFields, 0x02) <> 0 AND BIT_SHR( BIT_AND(byteFields, 0xFF0000), 16) = %%j AND NOT lon =  '361,0' AND NOT lon = '-361,0'" -i: CSV -headerRow: on -o: TSV -oSeparator:'' -headers: off

wobei in type.txt folgendes steht:
Code:
Tradi,2,tradi
Mystery,8,myst
Multi,3,multi
Parken,50,park
Stage,51,stage
Question,52,question
Final,53,final
Trail,54,trail
Referenz,55,ref
Event,6,event
MegaEvent,100,megaevent
Letterbox,5,letter
Virtual,4,virtual
Webcam,11,webcam
CITO,13,cito
Earth,137,earth

Erste Spalte Erscheint dann als Name, zweite ist der Type auf den gematched wird dritte Spalte ist der Dateiname ohne .csv in den es geschrieben wird.

So ist meine POI.bat deutlich kleiner .... BTW Logparser kann auch ROT13 usw da koennte man gleich auch die Hints umbauen.


Aber eigentlich waehre es doch am besten wenn Cachwolf das direkt koennte oder nicht ?!
Also direkt den gpx file schreiben ? Ginge das nicht ?
 

Anhänge

  • POI II.zip
    15,3 KB · Aufrufe: 31

Sammy Raider

Geocacher
Hallo CaptainChaosMS,

ich habe Dein Script gerade mal ausprobiert, der erste Aufruf des Logparsers läuft durch aber dann kommts:
Code:
Statistics:
-----------
Elements processed: 3587
Elements output:    3587
Execution time:     0.70 seconds

Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING
Error: SELECT clause: Semantic Error: 1st argument of function REPLACE_CHR must
be a STRING

Kenne mich leider nicht so gut damit aus, hast Du vielleicht 'ne Idee wo es da kneift? Ich würde es natürlich auch besser finden, wenn der Export direkt aus CW kommt,schön wäre es dann, wenn man über eine Datei steuern könnte, was exportiert wird.

Danke einstweilen für Deine Mühe Gruß Sammy

Gruß Sammy
 

Gerd001

Geocacher
Hallo,

erstmal vielen Dank für das Bereitstellen der Informationen und Codes. Die Idee die index.xml von Cachewolf zu verwenden halte ich für die beste Lösung.
@ CaptainChaosMS
Bei meinen index Files fehlen die Felder byteFields. Ich habe Die Cachewolf Version 1.0.1947. Das ändert sich anscheinend bei Cachewolf in den aktuellen Versionen.

Ich habe dann mit dem Ansatz von huzzel weitergemacht, das klappt auch gut. Nur wird dabei das temp File bei Verwenung mehrerer Profilen überschrieben. Bei der Logparser version 2.2, die ich habe muß in der poi.bat ab dem zweiten Profil jeweils die Option
-fileMode:0
angefügt werden. Per default wird das Ausgabefile bei jeder Query überschrieben.
Bsp:
Code:
logparser "SELECT * into temp.csv from ..\cachewolf\Homezone\index.xml" -rootXPath:/CACHELIST/CACHE -i:XML -o: CSV 
logparser "SELECT * into temp.csv from ..\cachewolf\Stuttgart\index.xml" -rootXPath:/CACHELIST/CACHE -i:XML -o: CSV -fileMode:0
...

In der Hoffnung das ist hilfreich.
Nochmals vielen Dank für die Bereitstellung der Informationen.

Viele Grüße
Gerd
 

Gerd001

Geocacher
Hallo,

bei vorigem Post hatte ich noch nicht die NB ausprobiert, mit den aktuellen Versionen sind auch byteFields und boolFields in der index.xml. Damit geht auch POI II.

Was mir aufgefallen ist, einige Caches wurden von der temp.csv nicht in den input Folder übernommen.

Soweit ich herausgefunden habe, in dem logparser Aufruf ist die erste where Klausel:
BIT_AND(byteFields, 0x02) <> 0

da müsste boolFields verwendet werden, also
WHERE BIT_AND(boolFields, 0x02)
Dann kommen alle Caches an.

Noch eine Kleinigkeit:
Ein Select war BIT_SHR(BIT_AND(byteFields, 0xFF000000), 16)
das müsste um 24 bit verschoben werden, also BIT_SHR(BIT_AND(byteFields, 0xFF000000), 24), dann kommt auch die Größe richtig an.

Ich habe noch DISTINCT hinzugefügt, damit doppelte Caches aus verschiedenen Profilen nur einmal im Garmin erscheinen.

Der komplette Aufruf ist nun:
Code:
FOR /F "eol=; tokens=1-3 delims=, " %%i IN (type.txt) DO logparser "SELECT DISTINCT '\"',REPLACE_CHR(lon,',','.'),'\",\"',REPLACE_CHR(lat,',','.'),'\",\"',SUBSTR(name,0,41),' ',wayp,'\",\"%%i ',BIT_AND(byteFields, 0xFF),'/',BIT_SHR(BIT_AND(byteFields, 0xFF00), 8),' ',BIT_SHR(BIT_AND(byteFields, 0xFF000000), 24),'       Owner: ',owner,'\"' into Input\%%k.csv from temp.csv WHERE BIT_AND(boolFields, 0x02) <> 0 AND BIT_SHR( BIT_AND(byteFields, 0xFF0000), 16) = %%j AND NOT lon =  '361,0' AND NOT lon = '-361,0'" -i: CSV -headerRow: on -o: TSV -oSeparator:'' -headers: off

Bei meinem Garmin Vista HXc klappt das so perfekt. Danke nochmals für das Bereitstellen des Codes.

In der Hoffnung das ist hilfreich.
Grüße
Gerd
 

wondalfo

Geocacher
Kann mir bitte jemand das nochmal erläutern bzw. mir nochmal den Link zu dem Originalposting schicken.

Danke Wolfgang

huzzel schrieb:
Hier eine kurze Erklärung von
biraconda schrieb:
[..]
Sowohl in der index.xml, als auch in den cache.xml-Dateien findet man anstelle der Variablen type="2" dif="1.5" terrain="1" archived="false" has_bug="false" usw. zwei neue Werte:
boolFields="" und
byteFields=""

In boolFields steht eine 14-Bit-Zahl (als Dezimalzahl), bei der die Bits folgende Bedeutung haben:
Code:
                   bool2BitMask(!this.isVisible(), 1)      
		             bool2BitMask(this.is_available(), 2)   
		             bool2BitMask(this.is_archived(), 3)    
		             bool2BitMask(this.has_bugs(), 4)
       
		             bool2BitMask(this.is_black(), 5)       
		             bool2BitMask(this.is_owned(), 6)       
		             bool2BitMask(this.is_found(), 7)       
		             bool2BitMask(this.is_new(), 8)
         
		             bool2BitMask(this.is_log_updated(), 9) 
		             bool2BitMask(this.is_updated(), 10)    
		             bool2BitMask(this.is_HTML(), 11)       
		             bool2BitMask(this.is_incomplete(), 12)
 
		             bool2BitMask(this.hasNote(), 13)       
		             bool2BitMask(this.hasSolver(), 14);

In byteFields steht eine (max.) 34-Bit-Zahl (als Dezimalzahl), bei der die Bytes folgende Bedeutung haben:
Beispiel: Tradi, Mikro, D1,0/T1,5 + 1DNF (byteFields="4328656650")

Code:
  DNF   Size     Type     Terr     Diff
	01 00000010 00000010 00001111 00001010

Die Bedeutung der Bytes im Einzelnen:
Diff: 00001010...00110010 (10...50)
Terr: 00001010...00110010 (10...50)

Type:
/** custom waypoint */ = 0;
/** traditional cache (GC,OC) */ = 2;
/** multi cache (GC,OC) */ = 3;
/** virtual/mystery cache (GC) */ = 4;
/** letterbox cache (GC) */ = 5;
/** event cache (OC,GC) */ = 6;
/** quiz cache (OC) */ = 7;
/** unknown cache (GC) */ = 8;
/** math cache (OC) */ = 108;
/** moving cache (OC) */ = 9;
/** drive in cache (OC) */ = 10;
/** webcam cache (GC,OC) */ = 11;
/** locationless cache (GC) */ = 12;
/** CITO cache (GC,OC)*/ = 13;
/** Additional Waypoint Parking (GC) */ = 50;
/** Additional Waypoint Stage of a Multi (GC) */ = 51;
/** Additional Waypoint Question to answer (GC) */ = 52;
/** Additional Waypoint Final (GC) */ = 53;
/** Additional Waypoint Trailhead (GC) */ = 54;
/** Additional Waypoint Reference (GC) */ = 55;
/** Mega Event Cache (GC) */ = 100;
/** WhereIGo Cache (GC) */ = 101;
/** Project Ape cache (GC)*/ = 102;
/** Adenture Maze Exhibit (GC)*/ = 103;
/** Earth Cache (GC) */ = 104;
/** unrecognized cache type or missing information, should throw IllegalArgumentExceptions when found */ = -1;

[..]
 

John-Deere

Geomaster
Hallo Leute,
ich suche schon längst nach solch einem Tool. Bin leider erst jetzt drauf gestoßen.
Nur arbeite ich gar nicht mit CacheWolf, sondern GSAK und einem Makro.
Dieses erzeugt zu den dazugehörigen BMP´s die CSV-Dateien.

Wie gehe ich nun weiter vor?
Es muß ja eine ini-Datei erstellt werden, aber wo sehe ich eine die nur das nötigste für mich hat, ohne diese Kürzel für CacheWolf.

Netter Gruß
John Deere
Schleswig-Holstein
---------------------------------------------------------------
Webcam-Cache in 25355 Barmstedt
http://www.john-deere.lima-city.de/Webcam
 
Oben