x

Re: Tags aus OSM Datei vermischen


Geschrieben von Netzwolf (Gast) am 26. Februar 2013 16:01:11: [flux]

Als Antwort auf: Tags aus OSM Datei vermischen geschrieben von unixasket (Gast) am 26. Februar 2013 11:32:

Nahmd,

unixasket wrote:

mit dem ich also aus:

<tag␣k="ele"␣v="972"/>
<tag␣k="name"␣v="Nußhardt"/>

einfach:

<tag␣k="name"␣v="Nußhardt,␣972M"/>

machen kann?

Wenn das Format Deiner Daten, insbesondere die Verwendung des Doppelquotes (") sich nicht ändert und Du ein Element für eine Pipeline braucht, kannst Du ein winziges Perl-Script benutzen:

#!/usr/bin/perl
use␣strict;
my␣%T;
while␣(<>)␣{
#-----------------------------------------------------------
#␣␣␣␣␣␣␣Speichere␣Tag.
#-----------------------------------------------------------
if␣(m#^\s*<tag\s+k="([^"]*)"\s+v="([^"]*)"\s*/>\s*$#)␣{
$T{$1}=$2;
next;
}
#-----------------------------------------------------------
#␣␣␣␣␣␣␣Gib␣tagfreie␣Zeile␣aus,␣wenn␣keine␣Tags␣gespeichert
#-----------------------------------------------------------
if␣(!%T)␣{
print␣$_;
next;
}
#-----------------------------------------------------------
#␣␣␣␣␣␣␣Manipuliere␣die␣Tags
#-----------------------------------------------------------
if␣($T{'name'}␣&&␣$T{'ele'})␣{
$T{'name'}␣=␣$T{'name'}␣.␣",␣"␣.␣int($T{'ele'})␣.␣'m';
}
#-----------------------------------------------------------
#␣␣␣␣␣␣␣Gib␣die␣gespeicherten␣und␣manipulierten␣Tags␣aus.
#-----------------------------------------------------------
for␣my␣$key␣(sort␣keys␣%T)␣{
print␣"<tag␣k=\"$key\"␣v=\"$T{$key}\"/>\n";
}
%T=();
#-----------------------------------------------------------
#␣␣␣␣␣␣␣Gib␣die␣tagfreie␣Zeile␣aus.
#-----------------------------------------------------------
print␣$_;
}
__END__

Das Teil ist strunzdumm und weiß nicht einmal, wie man XML schreibt. Aber es kann Tags manipulieren.

Gruß Wolf