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

Cachefunde nach Bundesländern

Beamer

Geomaster
Hallo

Hat schon jemand das Script "Cachefunde nach Ländern" umgeändert für die Bundesländer (Germany)?
Ich hab es schon versucht, versteh aber nicht so ganz was da im Script gemacht wird.

Gruß

Tom
 

fogg

Geomaster
Hallo,

so ein Skript kann ich dir in 5 Minuten liefern. Das Problem ist, dass viele Caches die Bundesländer nicht eingetragen haben und damit die Statistik doch recht unvollständig wird. Ich glaube, bei mir waren es etwa 1/3 der deutschen Caches.

Man könnte natürlich anhand der Startkoordinaten eine Zuordnung machen. Aber soweit ich weiß, gibt es da nix automatisches (oder weiß jemand was?). Bei GSAK wird aber wohl daran gearbeitet.

- Fogg
 

AndiOlli

Geocacher
fogg schrieb:
Hallo,

so ein Skript kann ich dir in 5 Minuten liefern. Das Problem ist, dass viele Caches die Bundesländer nicht eingetragen haben und damit die Statistik doch recht unvollständig wird. Ich glaube, bei mir waren es etwa 1/3 der deutschen Caches.

Man könnte natürlich anhand der Startkoordinaten eine Zuordnung machen. Aber soweit ich weiß, gibt es da nix automatisches (oder weiß jemand was?). Bei GSAK wird aber wohl daran gearbeitet.

- Fogg

Hi,

also ich hätte auch Interesse an einer solchen Übersicht. Die Bundesländerzuordnung liegt bei mir jetzt bei 100 %. Hab die fehlenden (ca. 10) per Hand hinzugefügt. Das sind doch die gleichen Daten die auch immer hinter Deutschland in Klammern stehen, oder?
 

flopp

Geomaster
Ich habe grade ein Perl-Skript fertiggestellt, das die Bundesländer aller gefundenen deutschen Caches nachträgt (mit Hilfe der Cachekoordinaten und einem Webservice von "geonames.org"). Das ganze ist ein fieser Hack auf Basis von Geolog-Funktionen, scheint aber zu funktionieren.

Die Hauptfunktion fragt den Webservice "http://ws.geonames.org/countrySubdivision" ab und ermittelt so Country und State für beliebige Koordinaten (Dezimalformat):
Code:
sub lookupCountryState 
{
    my $lat = shift; die unless (defined $lat);
    my $lon = shift; die unless (defined $lon);
    
    my $url = sprintf( "http://ws.geonames.org/countrySubdivision?lat=%f&lng=%f", $lat, $lon );
    my $ua = LWP::UserAgent->new();
    my $response = $ua->get( $url );

    my $country = "";
    my $state = "";
    
    return ( $country,$state) unless $response->is_success;

    my $content = $response->content;
    
    if( $content =~ m%<countryCode>(.*)</countryCode>%gsi ) {
	$country = $1;
    }
    if( $content =~ m%<code type="ISO3166-2">(.*)</code>%gsi ) {
	$state = $1;
    }
    
    return ($country,$state);
}

Vielleicht kann man diese Funktionalität direkt in Geolog einbauen?

Grüße
Flopp

P.S. Perl ist doch nicht so schlecht, wie ich zuerst dachte :/
 

flopp

Geomaster
Außerdem habe ich auch noch das "demap.incl" Plugin so erweitert, dass eine Deutschlandkarte erzeugt und hochgeladen wird, in der die Bundesländer je nach Fundzahl eingefärbt sind. Ein Beispiel ist hier zu sehen.

Das Plugin ist aber noch nicht in einem veröffentlichungswürdigen Zustand ;)
 

AndiOlli

Geocacher
flopp schrieb:
Außerdem habe ich auch noch das "demap.incl" Plugin so erweitert, dass eine Deutschlandkarte erzeugt und hochgeladen wird, in der die Bundesländer je nach Fundzahl eingefärbt sind. Ein Beispiel ist hier zu sehen.

Das Plugin ist aber noch nicht in einem veröffentlichungswürdigen Zustand ;)

:sign2_W: :sign2_O: :sign2_W: Einfach super, da bin ich ja auf die Veröffentlichung gespannt. Mensch da kommen ja gleich noch mehr Gedanken in meinen Kopf, ob sowas http://www.dosenfischer.de/2009/02/18/bunte-landkreise dann auch möglich ist?
 

fogg

Geomaster
flopp schrieb:
Ich habe grade ein Perl-Skript fertiggestellt, das die Bundesländer aller gefundenen deutschen Caches nachträgt (mit Hilfe der Cachekoordinaten und einem Webservice von "geonames.org"). Das ganze ist ein fieser Hack auf Basis von Geolog-Funktionen, scheint aber zu funktionieren.

Die Hauptfunktion fragt den Webservice "http://ws.geonames.org/countrySubdivision" ab und ermittelt so Country und State für beliebige Koordinaten (Dezimalformat):
Code:
sub lookupCountryState 
{
    my $lat = shift; die unless (defined $lat);
    my $lon = shift; die unless (defined $lon);
    
    my $url = sprintf( "http://ws.geonames.org/countrySubdivision?lat=%f&lng=%f", $lat, $lon );
    my $ua = LWP::UserAgent->new();
    my $response = $ua->get( $url );

    my $country = "";
    my $state = "";
    
    return ( $country,$state) unless $response->is_success;

    my $content = $response->content;
    
    if( $content =~ m%<countryCode>(.*)</countryCode>%gsi ) {
	$country = $1;
    }
    if( $content =~ m%<code type="ISO3166-2">(.*)</code>%gsi ) {
	$state = $1;
    }
    
    return ($country,$state);
}

Vielleicht kann man diese Funktionalität direkt in Geolog einbauen?

Grüße
Flopp

P.S. Perl ist doch nicht so schlecht, wie ich zuerst dachte :/

Cool :D ! Genau sowas hab ich gesucht!

Grüße - Fogg
 

flopp

Geomaster
@AndiOlli:
Mit den GSAK-Polygonen für die Landkreise und einer Funktion, die berechnet, in welchem Polygon eine gegebene Koordinate liegt, sollte das kein allzu großes Problem sein. Siehe auch hier.

@Fogg:
Die Funktion "lookupCountryState" darf natürlich gerne verbessert/erweitert/... und in Geolog eingebaut werden ;)
 

fogg

Geomaster
flopp schrieb:
@AndiOlli:
Mit den GSAK-Polygonen für die Landkreise und einer Funktion, die berechnet, in welchem Polygon eine gegebene Koordinate liegt, sollte das kein allzu großes Problem sein. Siehe auch hier.

Ja - die Poygondateien sind wohl frei erhältlich und auch in einem vernünftigen Format. Mit dem Perl-Modul Math::polygon::Calc sollte man das auch einigermaßen schnell in Perl umsetzen können.

flopp schrieb:
@Fogg:
Die Funktion "lookupCountryState" darf natürlich gerne verbessert/erweitert/... und in Geolog eingebaut werden ;)

Ich hab gerade mal den (reverse) Geocoder über meine Caches rüberlaufen lassen und festgestellt, dass er in Grenzbereichen doch ziemlich schlechte Ergebnisse liefert. Ne Menge Caches am Rheinufer werden in Frankreich gesehen, viele Caches in Schleswig-Holstein Hamburg zugeschlagen, und, und ... Vielleicht sollte man sich die GSAK-Polygone besorgen und dann selbst testen.

Mal sehen ... die billigste Lösung ist sicherlich den Geocoder zu nutzen (und die Daten zu cachen) ohne es in die cache.txt Dateien einzutragen.

Grüße - Fogg

- Fogg
 

AndiOlli

Geocacher
Danke für die neue Statisik, aber bei mir sieht jetzt der Teil mit der Deutschlandkarte komisch aus
stat.jpg


so sieht die entsprechende Stelle in meiner stat.tmpl aus

Code:
<tr>
<td width="100%" align="center">
##include(statistics/statestat.incl)##
</td>	
</tr>

<tr>
<td width="100%" align="center">
##include(statistics/demap.incl)##
</td>	
</tr>

Habe ich da was falsch gemacht?
 

MaxED9

Geocacher
@AndiOlli

wenn Du die statestat.inl nach der demap.incl schiebst, gibt es den Fehler nicht.
Ich glaube in der Reihenfolge statestat -> demap beißen sich die beiden etwas, es werden dann einige HTML-Tags nicht geschrieben und daher verschiebt sich das Layout

@fogg
wäre es möglich, in die statestat.incl die Deutschlandkarte einzubauen?
Mir ist bei meinen Stats aufgefallen, dass auf der Karte nur 5 Bundesländer markiert sind und die statestat.incl aber 6 Bundesländer anzeigt, was auch richtig ist.
 

fogg

Geomaster
AndiOlli schrieb:
Danke für die neue Statisik, aber bei mir sieht jetzt der Teil mit der Deutschlandkarte komisch aus
. . .
Habe ich da was falsch gemacht?

Den Code über die die einzelnen Statistikteile zu verteilen macht es ja schön modular und erweiterbar :D , aber man muss dann aufpassen, dass man Funktionen nicht überdefiniert :eek:ps: . Also, das korrigierte Modul statestat.incl kann man jetzt auch vor demap.incl benutzen.
 

AndiOlli

Geocacher
fogg schrieb:
Den Code über die die einzelnen Statistikteile zu verteilen macht es ja schön modular und erweiterbar :D , aber man muss dann aufpassen, dass man Funktionen nicht überdefiniert :eek:ps: . Also, das korrigierte Modul statestat.incl kann man jetzt auch vor demap.incl benutzen.

:sign2_D: :sign2_A: :sign2_N: :sign2_K: :sign2_E: , jetzt funktioniert es.
 
OP
Beamer

Beamer

Geomaster
:kopfwand: Ich hab noch kein Erfolg mit dem Script gehabt.
Code:
Erzeugung der HTML-Seiten im Hauptverzeichnis ...
 ... contact index map statEs ist ein Fehler bei der Evaluation von
...
aufgetreten:
 Can't call method "get" on an undefined value at (eval 79) line 10.
Hab es in die stat.tmp hinter demap eingetragen.

Was mach ich den noch falsch ?
 

fogg

Geomaster
Beamer schrieb:
:kopfwand: Ich hab noch kein Erfolg mit dem Script gehabt.
Code:
Erzeugung der HTML-Seiten im Hauptverzeichnis ...
 ... contact index map statEs ist ein Fehler bei der Evaluation von
...
aufgetreten:
 Can't call method "get" on an undefined value at (eval 79) line 10.
Hab es in die stat.tmp hinter demap eingetragen.

Was mach ich den noch falsch ?

Nichts. In der nächsten Version ist das behoben. Zur Zeit musst du geolog so starten, dass es sich auch einloggt (also ohne Option -g).

- Fogg
 

fogg

Geomaster
huzzel schrieb:
Wie bekommt man raus, für welchen Cache
Code:
Keine Zuordnung
erzeugt wurde?

Bei der neuesten Version wird das bei der Erzeugung der Statistikseite ausgegeben. Ansonsten kann man sich auch die Datei statecache.tab anschauen. Eine Leerzeile unterhalb eines Cachenamens bedeutet, dass der Webservice als Country nicht "DE" zurück gegeben hat.

Übrigens nochmal zu Warnung: An (Bundes-)Land(es)grenzen ist der Webservice nicht perfekt! Deshalb hab ich auch davon abgesehen, die Bundeslandzuordnung fest in die Datenbasis einzutragen und sie nur in der o.g. Datei gecachet.

- Fogg
 
Oben