[Talk-de] autobug / is_in + amenity=police slippymap mit bug overlay

Florian Lohoff flo at rfc822.org
Mo Nov 3 08:51:00 UTC 2008


On Sun, Nov 02, 2008 at 12:21:58PM +0100, Sascha Silbe wrote:
> >Und da sind mal kloepse drin ;) In Sachsen sind alleine 2000 orte mit 
> >"Sachsen,Germany,Europe" waere also in Neusprech eine
> >"Low Hanging Fruit" fuer einen bot ...
> Je nach Def. von "Bot" ist nicht mal einer nötig. Datei ziehen, 
> Search&Replace per Text-Editor, Datei hochladen.

Das sind 30 zeilen perl denke ich - ich habe mir das gestern mal
angesehen und habe mal die ersten zeilen zum reparieren von is_ins
gebaut. Ist aber alles heikel und man muss aufpassen nicht mehr kaputt
zu machen etc ...

Das habe ich gestern mal so getestet:

my %replace=(
        "europa"                => "Europe",
        "eu"                    => "Europe",

        "bavaria"               => "Bayern",
        "saxony"                => "Sachsen",
        "thuringia"             => "Thüringen",
        "munich"                => "München",

        "germany"               => "Bundesrepublik Deutschland",
        "deutschland"           => "Bundesrepublik Deutschland",
        "de"                    => "Bundesrepublik Deutschland",
        "nrw"                   => "Nordrhein-Westfalen",
        "nrw germany"           => "Nordrhein-Westfalen",
        "baden-wuerttemberg"    => "Baden-Württemberg",
        "baden-württember"      => "Baden-Württemberg",
        "freistaat sachsen"     => "Sachsen",
        "nortrhein-westfahlen"  => "Nordrhein-Westfalen"
);

sub fixupisin {
        my ($isin) = @_;

        my @parts=split(/\s*[;,]\s*/, $isin);

        # Translate all parts
        for(my $i=0;$i<scalar @parts;$i++) {
                my $p=$parts[$i];
                if (defined($replace{lc($p)})) {
                        $parts[$i]=$replace{lc($p)};
                }
        }

        # Dedupe
        my %elem;
        my @newparts;
        foreach my $p ( @parts ) {
                next if (defined($elem{$p}));
                push @newparts, $p;
                $elem{$p}=$p;
        }
        @parts=@newparts;

        # Find Europe and move it to the last element or add it
        for(my $i=0;$i<scalar @parts;$i++) {
                if ($parts[$i] =~ /Europe/i) {
                        splice(@parts, $i, 1);
                        last;
                }
        }
        push @parts, "Europe";

        return join(",", @parts);
}

Das mit dem Statisch uebersetzen habe ich gemacht um nicht 27 millionen 
regexen zu haben die irgendwann amok laufen.

Vielleicht macht es aber sinn das doch mit regexen zu machen.

Dazu kommen muss noch das moven von BRD an pos 2 von hinten und
moven des Bundeslandes an pos 3 von hinten.

Flo
-- 
Florian Lohoff                  flo at rfc822.org             +49-171-2280134
	Those who would give up a little freedom to get a little 
          security shall soon have neither - Benjamin Franklin
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : <http://lists.openstreetmap.org/pipermail/talk-de/attachments/20081103/3d8a0cea/attachment.sig>


Mehr Informationen über die Mailingliste Talk-de