[Talk-de] Perl-Zugriff auf OSM-Daten
Jan Tappenbeck
osm at tappenbeck.net
Di Mär 31 10:57:39 UTC 2009
;Moin !
Danke für den Code - das macht das verständnis leichter.
@Roland: Gary68 ist bekannt - auch dafür vielen Dank.
Gruß Jan :-)
Sven Anders schrieb:
> 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