[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