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

[FR]CacheWolf und Garmin Colorado, Cachebeschreibungen, Logs

brettw.10

Geonewbie
Hallo Bernhard,

das nur ein Cache im Oregon erscheint ist tatsächlich auf die CacheIDs zurückzuführen. Jeder Cache muß seine eigene CacheID haben, sonst wird er als eine Kopie eines anderen Caches vom Oregon betrachtet und daher in der Liste nicht auftauchen.

Damit jeder Cache seine eigene ID hat, kann eine ID vom Cachenamen berechnet werden, in dem die Buchstaben als "base 36" Nummern addiert werden, z.B:
<name>OCAB12</name>
id=A*36^3+B*36^2+1*36^1+2*36^0
=10*36^3+11*36^2+1*36^1+2*36^0
=466560+14256+36+2
=480845
Der "OC" Teil kann entweder ignoriert oder in die Rechnung einbezogen werden.

Falls der Cache von www.opencaching.de stammt, kann die ID vom Waypoint-URL-Tag einfach ausgelesen werden:
<url>http://www.opencaching.de/viewcache.php?cacheid=104792</url>
In Perl könnte ein solcher Befehl aufgerufen werden:
if ($url =~ /([a-zA-Z0-9\:\.\/\?]*)cacheid=([0-9]*)/i) {return $2} else {return undef}

Derzeit arbeite ich an einem Perlskript, das OC-GPX-Dateien ins Groundspeak-format umwandeln sollte. Es geht langsam voran, weil ich nie vorher mit Perl gearbeitet habe, aber es macht Spaß. :)

Tschüß,
Brushy.
 

neblb

Geocacher
Hallo Brushy,

vielen Dank für Deine Antwort. Hat mir sehr weitergeholfen. Hab auch schon meinen Arbeitskollegen drauf angesetzt, daß er mir ein Kovertierungstool schreibt. Hab auch schon die wichtigen Stellen in den GPX-Dateien gefunden. Leider wird in einer GPX-Datei mit mehreren Geocaches (von www.geocaching.com gespidert) nur wieder der Name angezeigt. Kann die ID also nicht direkt aus der URL auslesen. Würd gehen, wenn nur ein Geocache in der Datei ist... Na ja, auf jedenfall bin ich da sehr zuversichtlich, bräuchte aber nochmals Deine Hilfe. Irgendwie komm ich da mit der Umrechnung von den Geocache-Namen in die Geocache-ID nicht zurecht. Kannst Du mir das nochmal genau erklären? Ist die Berechnung von opencaching und geocaching ID's unterschiedlich? Wenn ich nämlich Deine Beispiel ID einsetze (ist rechnerisch übrigens 480854, hast bei den letzten 2 Stellen einen Zahlendreher drin), dann kommt folgender Cache-Name raus: GCYY5B. Ich vermute also, daß die Geocache-Namen anders berechnet werden.

Hätt hier ein paar Beispiele was rauskommen muß...

GCPWEP -> 270685
GC1AWRJ -> 837020
GC1EENQ -> 943603
GCN0Q1 -> 215205

Wie kommst Du auf die 10 für A, 11 für B ??? Ist das HEX in Dezimal oder einfach fortlaufend? Dann wäre z.B. Q = 26 ???

Vielen Dank nochmals.

VG
Bernhard
 

brettw.10

Geonewbie
Hey Bernhard,

ich leide immer an Zahlendrehern wenn ich "auf Deutsch" rechne weil ich eigentlich Englisch-Muttersprachler bin. :)

Aus meiner Formel ergibt sich keine richtige GC-Cache-ID, sondern nur eine eigene ID pro Cache, die "anders als die Anderen, auch wenn's keine Anderen gibt" sein sollte. Wir wollen ja vermeiden, dass 2 Caches die selbe ID haben, sonst wird der zweite vom Oregon nicht eingelesen.

Und ja, 0=0, 1=1, ..., 9=9, A=10, B=11, ..., Z=35. Ich habe meine Umwandlungsfunktion auch so geschrieben, dass es egal ist, ob die Buchstaben klein oder groß geschrieben sind.
Code:
sub convert_name_to_id {
    my($wptName)=@_;
    my $id;
    my $idNum=0;
    given (substr($wptName, 0, 2)) {
        when ("OC") {
            $id=uc(substr($wptName, 2));
        }
    }
    for ($count=0; $count<length($id); $count++) {
        $char=substr($id, $count, 1);
        if ($char == /[A-Z]/) {
            $idNum=$idNum + ((($char - 'A') + 10) * 36**(length($id)-$count-1));
        } else {
            $idNum=$idNum + ($char * 36**(length($id)-$count-1));
        }
    }
    return $idNum;
}

Tschüß,
Brushy
 

UncleOwen

Geocacher
Geo-Johnny schrieb:
Die echte ID ließe sich sicher spidern. Die "heilige" ID ist im Seitenquelltext enthalten.
Manuell findet man die ID so:
... einen beliebigen Cache im Browser aufrufen, und dann den Link unter "log that cache" anschauen.
Diese ID ist die Richtige ;)

Ah, um die ID geht's. Irgendwann hab ich mir mal die Muehe gemacht, das System dahinter rauszufinden. IIRC war es so:
* bei Caches zwischen GC1 und GCFFFF nimmt man einfach den GC-Code ohne GC am Anfang und interpretiert das als Hex-Zahl.
* bei Caches ab GCG000 ist das ganze eine Zahl zur Basis 31 (nicht 36! 5 Buchstaben werden nicht verwendet). Davon muss man noch eine Konstante abziehen, da GCFFFF und GCG000 aufeinanderfolgende IDs haben.

Soll ich mal nachgucken, ob ich den Code dazu noch hab? Irgendwo muesste der hier noch rumliegen...
 

UncleOwen

Geocacher
Ah, gefunden :)

Code:
#!/usr/bin/python

def ziffer(z):
        return '0123456789ABCDEFGHJKMNPQRTVWXYZ'.find(z)


def gc2dbid(waypoint):
        waypoint = waypoint[2:]

        if ((len(waypoint) < 4) or (len(waypoint) == 4 and ziffer(waypoint[0]) < 16)):
                base = 16
        else:
                base = 31

        result = 0

        for digit in waypoint:
                result *= base
                result += ziffer(digit)

        if base == 31:
                result += 16**4 - 16*31**3

        return result
 

UncleOwen

Geocacher
Bei OC scheint es einfach OC-id als Hexzahl + 103031 zu sein

Beispiel:
OC1000
1000 als Hexzahl ist 4096
4096+103031=107127
http://www.opencaching.de/viewcache.php?cacheid=107127
Zumindest das Beispiel kommt hin - und einige andere, die ich probiert hab.

*edit* und für andere nicht. Hmm. Komisch.
 

neblb

Geocacher
Hallo,

vielen Dank für Deine Hilfe... das schaut ja richtig gut aus. Hab mal a paar Beispiele durchgerechnet...
Jetzt brauch ich nur noch auf de Konvertierungssoftware warten und schon geht das wie geschmiert.

Vielen Dank für Eure Hilfe.

Bernhard
 

pfeffer

Geowizard
Man kann bei OC nicht einfach umrechnen. Wegpunkt und ID werden bei OC intern beide in der Datenbank gespeichert und OC selbst schlägt immer in dieser Datenbank nach, anstatt umzurechnen.

Schöne Grüße,
Pfeffer.
 

Geo-Johnny

Geowizard
Hallo Leute ...

Wie ist der derzeitige Stand bezüglich der Implementierung in den GPX-Export beim CacheWolf?
Ich stehe mit "foobar123" in Kontakt, der mir netter Weise eine von ihm abgeänderte CW Java Version zur Verfügung gestellt hat. Zur Zeit ist er auf Kreta, wenn er wieder im Lande ist möchten wir das Entwicklerteam vom Cachewolf mit unseren Ideen in Richtung GPX-Export unterstützen. Vielleicht kann MIK oder Pfeffer sagen, ab wann es mit der Weiterentwicklung vom CW wieder voran geht?

Wenn sich die GC-Cache ID wirklich exakt errechnen ließe, wäre es sicher eine bessere Lösung als das Spidern der ID. Bei der OC-Cache ID dürfte es wohl keine Probleme geben, da diese ja im GPX File schon enthalten ist. Bei dem OC GPX Export ist mir nur aufgefallen, das Difficultly und Terrain Rating geändert gehören, damit es das Oregon/Colorado richtig anzeigt. Statt z.B. >2.0< dürfte nur >2< ausgegeben werden.

L.G. - Johnny!
 

neblb

Geocacher
Hallo zusammen,

ich habe die Software zum ändern, bzw. eintragen der ID's von meinen Kollegen bekommen und getestet... wunderbar. einfach bestehende gpx einlesen und in einen neue gpx speichern. hab ein paar stichproben genommen, die berechneten GC ID's passen überein.
Dieser Zwischenschritt ist kein Problem. Wenn das natürlich im Cachewolf direkt implementiert wird ist es umso besser.

VG

Bernhard
 

Geo-Johnny

Geowizard
neblb schrieb:
Hallo zusammen,

ich habe die Software zum ändern, bzw. eintragen der ID's von meinen Kollegen bekommen und getestet... wunderbar. einfach bestehende gpx einlesen und in einen neue gpx speichern. hab ein paar stichproben genommen, die berechneten GC ID's passen überein.
Dieser Zwischenschritt ist kein Problem. Wenn das natürlich im Cachewolf direkt implementiert wird ist es umso besser.

VG

Bernhard
Würdest Du diese Software hier als Anlage oder auf PN Anfrage für die Allgemeinheit zur Verfügung stellen?
Zumindest so lange bis eine Implementierung im CacheWolf erfolgt ist.

L.G. - Johnny
 

neblb

Geocacher
Hallo,

muß i natürlich erst den Entwickler fragen :) aber sollte kein Problem sein. schick mir einfach a PN mit deiner Emailadresse.

VG

Bernhard
 

MiK

Geoguru
Geo-Johnny schrieb:
Vielleicht kann MIK oder Pfeffer sagen, ab wann es mit der Weiterentwicklung vom CW wieder voran geht?
Dazu kann im Moment am besten SKG etwas sagen. Ich rechne damit, dass er sich sehr bald äußern wird.

Geo-Johnny schrieb:
Bei dem OC GPX Export ist mir nur aufgefallen, das Difficultly und Terrain Rating geändert gehören, damit es das Oregon/Colorado richtig anzeigt. Statt z.B. >2.0< dürfte nur >2< augegeben werden.
Das sind aber auch zickige Geräte. Ein bisschen flexibler hätte man das schon programmieren können.
 

Geo-Johnny

Geowizard
MiK schrieb:
Geo-Johnny schrieb:
Bei dem OC GPX Export ist mir nur aufgefallen, das Difficultly und Terrain Rating geändert gehören, damit es das Oregon/Colorado richtig anzeigt. Statt z.B. >2.0< dürfte nur >2< ausgegeben werden.
Das sind aber auch zickige Geräte. Ein bisschen flexibler hätte man das schon programmieren können.
Da hast Du vollkommen Recht. Wenn im GPX-Export z.B. >2.0< ausgegeben wird, zeigt das Oregon/Colorado beim Rating, fünf volle Sterne an. :irre:
 

Geo-Johnny

Geowizard
UncleOwen schrieb:
Code:
#!/usr/bin/python

def ziffer(z):
        return '0123456789ABCDEFGHJKMNPQRTVWXYZ'.find(z)


def gc2dbid(waypoint):
        waypoint = waypoint[2:]

        if ((len(waypoint) < 4) or (len(waypoint) == 4 and ziffer(waypoint[0]) < 16)):
                base = 16
        else:
                base = 31

        result = 0

        for digit in waypoint:
                result *= base
                result += ziffer(digit)

        if base == 31:
                result += 16**4 - 16*31**3

        return result
Da ich beim KML-Export schon mehr als lästig geworden bin, hole ich diesen Thread nochmal hoch damit auch der GPX-Export nicht in die Vergessenheit absinkt. ;)

Ich habe zwar von "neblb" schon das entsprechende Tool bekommen und es funktioniert soweit ganz gut.
Schöner wäre es jedoch wenn die Errechnung der GC-Cache ID im CacheWolf beim GPX-Export integriert wird. Die ausgegebenen GPX-Files kommen im Format dann den originalen PQ-GPXFiles äußerst nahe. :^^:
Was Caches anbelangt die mit OC beginnen, müßte diese ID-Berechnung entfallen und stattdessen die originale OC-Cache ID verwendet werden, die in den GPX-Dateien von OC ohnehin vorhanden ist. Diese sollte dann an der richtigen Stelle im GPX-Export File vom CW eingefügt werden.
Somit wäre die Verwendung des CW-GPX Exports für beide Datenbanken genüge getan und das Oregon/Colorado freut sich über Cachebeschreibungen aus dem CacheWolf. ;)
 
Oben