[Talk-de] Perl-Zugriff auf OSM-Daten
Sven Anders
sven at anders-hamburg.de
Di Mär 31 09:43:02 UTC 2009
Am Tuesday 31 March 2009 07:08:34 schrieb Jan Tappenbeck:
> Hi !
>
> ich versuche langsam den Einstieg in Perl. Da das OSM-Datenformat
> xml-basiert ist suche ich ein einfaches Einsteigerbeispiel für die
> Datenfilterung einer Datei. Z.B. alle shop=butcher in der Datei.
>
> Hat einer von Euch ein solches zur Hand und kann es mir zur Verfügung
> stellen ?
ungefähr so (hab das aus einer bestehende Datei herausgeschnitten)?
#!/usr/bin/perl -w
use XML::Parser;
sub anfang
{
($wert_des_zeigers,$starttag,%hash) = @_;
if ($starttag eq "node") {
$id=$hash{"id"};
$lat=$hash{"lat"};
$lon=$hash{"lon"};
$type="node";
} elsif ($starttag eq "tag") {
$k=$hash{"k"};
$v=$hash{"v"};
if (($k eq "shop") and ($v eq "buttcher")) {
print "$lat $lon\n";
}
} elsif ($starttag eq "way") {
$id=$hash{"id"};
$type="way";
$lat="";
} elsif ($starttag eq "nd") {
$ref=$hash{"ref"};
if (($lat eq "") and (defined($lath{$ref}))) {
$lat=$lath{$ref};
$lon=$lonh{$ref};
}
push @nodes,$ref;
}
sub ende
{
($wert_des_zeigers,$endtag) = @_;
}
sub inhalt
{
($wert_des_zeigers,$inhalt)=@_;
#print " $inhalt";
}
my $zeiger = new XML::Parser ();
$zeiger->setHandlers (Start => \&anfang,End => \&ende,Char=>\&inhalt );
$zeiger->parsefile ("Datei.osm");
Gruß
Sven
> Gruß Jan :-)
BTW: Bitte lass doch den Inflationären Gebrauch von Simlies, das führt dazu
das ich dich manchmal nicht ernst nehme.
Mehr Informationen über die Mailingliste Talk-de