Hinter den Kulissen: Wo kommen all die Zahlen her?

Hinter den Kulissen: Wo kommen all die Zahlen her?

Ich mag ja Mysteries der Bauart “Was habe ich in meiner rechten Hand?” überhaupt nicht, wenn das abgefragte Fachwissen zu speziell ist, lasse ich gerne anderen den Vortritt und versuche vielleicht noch alternative Lösungsansätze, aber das war’s dann auch. Gar nicht so mysteryhaft die Antwort auf die Frage, wo denn die ganzen Zahlen herkomme, aus denen ich meine Statistiken zusammenbaue, die wollte ich auch schon lange einmal beantworten. Nun denn:

Die Herausforderung

Um exakt die Zahl aller derzeit aktiven Geocaches der Welt herauszufinden, brauche ich eigentlich nur eine einzige Datenbankabfrage, die ungefähr so aussähe:
SELECT COUNT(*) from geocaches where published=true and archived=false
Ungefähr, weil ich dazu direkten Zugriff auf die Groundspeak-Datenbank bräuchte, den ich natürlich nicht habe. Dazu kommt noch, dass exakt dieselbe Abfrage einen Tag später ein anderes Ergebnis hätte, weil in der Zwischenzeit natürlich auch wieder Caches veröffentlicht, retracted und archiviert werden.

Die Lösung

Ihr alle wisst, wie Umfragen funktionieren: Eine zufällig ausgewählte Personengruppe wird nach ihren Ansichten zu irgendwelchen Themen befragt und aus den Antworten wird auf die Gesamtbevölkerung hochgerechnet. Im Prinzip mache ich es genauso: Ich stelle einer Gruppe von fast zufällig ausgewählten Caches “Fragen” wie “Wann wurdest Du gelegt?”, “Was bist Du für ein Cachetyp?”, “Bist Du archiviert?” usw. Einige Caches, die unpublished sind, zum Beispiel angefangene, aber nie fertiggestellte Listings, Testeinträge von Groundspeak usw. sind dann diejenigen, die “keine Angaben” machen, wie im realen Leben ;-)
Jeder Cache hat einen GC-Code. Hinter diesem steckt eine einfache Dezimalzahl, die bei jedem neu angelegten Cachelisting um Eins hochgezählt wird. Wie genau die Umrechnung erfolgt, könnt Ihr bei kryptografie.de nachlesen. Jetzt frage ich einfach über die API(Genauer: via GSAK) einfach eine Liste von GC-Codes ab, die dann die Gruppe der ausgewählten Caches wird.

Da ich nicht alle Caches auf einmal importieren kann und auch mal etwas beim Import schiefgehen kann, nehme ich nur Codes, deren Dezimalzahl durch 10 teilbar ist, deswegen ist die Auswahl auch fast (aber eben nicht ganz) zufällig, für die Statistik reicht es aber völlig aus.  Korrekter wäre es, eine komplett zufällige Liste von GC-Codes zu generieren und diese herunterzuladen, aber warum das nicht funktioniert, lest Ihr im nächsten Abschnitt. Mit dem Kriterium “durch 10 teilbar” kann ich beim Generieren der Statistiken leicht die Caches aussortieren, die nichts in der Liste zu suchen haben, zum Beispiel, wenn ich aus Versehen eine private Bookmarkliste in die Statistikdatenbank kopiert habe o.ä.

Die Größe der Stichprobe richtet sich nach dem, was ich haben will: Für eine Jahresübersicht kann ich es mir leisten, 10% aller Caches vom letzten Jahr “zu befragen”, für eine Übersicht aller jemals gelegten Caches müsste ich Hunderttausende von Caches importieren, wenn ich 10% haben will, hier nehme ich dann 1‰ aller jemals generierten Listings.

Die neue Herausforderung

Klingt alles ganz einfach. Wenn es da nicht einen Haken gäbe: Nehmen wir an, ich lege jetzt ein Listing an und reiche es in einem Monat ein, wenn der Cache fertig gebastelt, gelegt und eingemessen ist. Nehmen wir weiter an, dass einen Moment später einem Cacher irgendwo auf der Welt ein bestückter Petling aus der Jackentasche fällt und er keine Lust hat, sich danach zu bücken. Also legt er flugs ein Listing “Lost Pet” an und reicht es ein. Dann hat mein Listing zwar den niedrigeren GC-Code, kommt aber einen Monat später heraus als “Lost Pet”.

Wie schlägt sich das in der Vorgehensweise nieder? Nahmen wir die Statistik von 2023 als Fallbeispiel: Es gibt eine ganze Reihe von 2023er-Listings, die bereits 2022 angelegt wurden. Und Events von 2024, deren Listings 2023 angelegt wurden. Das heißt: Um ⅒ aller Caches von 2023 zu “befragen”, muss ich Codes berücksichtigen, die wesentlich früher angelegt wurden, und dann in der Statistik entsprechend filtern. Das ist nicht dramatisch und auch nicht aufwendig und ändert auch nichts daran, dass ich nach wie vor ⅒ aller 2023er-Caches in der Datenbank habe und vielleicht eine handvoll sehr alter Listings, die 2023 rauskamen, übersehen habe. Mit diesen Daten kann ich dann arbeiten und alle möglichen Fragen wie “Bist Du 2023 in Deutschland gelegt worden?” stellen und aus den Antworten die Hochrechnung erstellen, also alles in Butter?

Leider nicht ;-) Da ich ich die Cachelistings herunterlade, sind sie nicht “live”, ein Cache, der jetzt in der Statistikdatenbank als “aktiv” steht, kann just in diesem Moment archiviert werden. Oder ein Listing wird just in diesem Moment veröffentlicht und fehlt in der Datenbank. Deshalb muss ich die Daten immer wieder mal aktualisieren, für die Statistik aller jemals veröffentlichten und archivierten Caches muss ich also alle Caches, die in der Datenbank als “aktiv” stehen, vor Erstellung der Statistik einmal refreshen. Und alle Codes, die nicht in der Datenbank stehen, auch erneut abfragen. Aber das geht mittlerweile alles per Knopfdruck, ist also kein großer Aufwand :-)

Nachtcaches

Bei den Nachtcaches(und anderen Spezialitäten wie “mein Landkreis”) hingegen arbeite ich mit Pocket Queries, es ist in der Tat möglich, mit einer PQ ganz Deutschland abzudecken. Ich habe eine PQ, die nach dem Attribut “recommend at night” sucht und eine, die nach “Night cache” sucht und in die Ergebnisse in einer Datenbank speichert. Mit den Attributen wird allerdings so viel Schindluder seitens der Ownerschaft betrieben, dass da mit einigem Aufwand manuell gefiltert werden muss, mit sehr vielen Caches, die gar nicht so eindeutich als (Nicht-)Nachtcache eingsortiert werden können. Deshalb und weil die Zahl sowieso rapide sinkt, ist es auch fraglich, ob ich das Thema noch weiter verfolge.

Adventure Lab Caches

Kommen wir kurz zu den Adventure Lab Caches: Nein, die sind nicht der Statistik enthalten, aus mehreren Gründen:
Groundspeak hat es nach wie vor nicht geschafft, die vollständig zu integrieren, die finden fast ausschließlich in den Apps statt(und rudimentär im Profilepanel), sind weder über die API noch über die Webseite auffindbar und Favoritenpunkte können sie auch nicht empfangen. Also sind sie selbst für Groundspeak keine echten Caches, die wurden selbst im Jahresrückblick gesondert betrachtet, demzufolge muss ich sie auch nicht weiter beachten. Dazu kommt, dass 2023 bei rund 340000 neuen Caches die knapp 10000 neue Adventures in 2023 gerade einmal 3% ausmachen, das ist sogar die Anzahl der neuen Multis höher, und das soll schon was heißen. Ergänzend sei bemerkt, dass nicht jeder Cacher die entsprechenden Apps installiert hat(oder überhaupt ein Smartphone besitzt).

Also kurzum: Sobald Groundspeack Adventures wie normale Caches behandelt, werde ich das auch tun, vorher nicht. Wer aber entsprechende Statistiken führt, kann sie mir gerne zukommen lassen.

Project GC…

…ist sehr mächtig und kann auch eine Menge leisten, wie ich es bei der Vermessung der Nacht erleben konnte, aber damit konnte ich mich bisher einfach nicht anfreunden ;-)

In diesem Sinne: Bis bald im Wald und happy hunting!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert