[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