von Karolus » Mi, 08.10.2008 21:52
Hallo OOoNewbie
So ganz neu scheinst du aber nicht zu sein, wenn du gleich ein nicht gerade triviales Makro ablieferst.
Es läuft auch hier, falls man es aber zum Abholen von vielen Daten (>50) losschickt ist es etwas langsam !
Ich häng mal ein Shellscript an, das das etwas schneller erledigt und die Ausgabe in eine csv-Datei schreibt.
! Das folgende ist
kein Basic-Makro und ist für LInux-BS !
Wer es testen will, möge den Code bsplw. unter "/home/name/hoehe.sh' abspeichern, mit:
chmod a+x /home/name/hoehen.sh
ausfürbar machen und probieren.
Code: Alles auswählen
#! /bin/sh
# Muster Ausgabe.csv
#################################################################
#
# lllllllllllllllllllllllllll
# bhhhhhhhhhhhhhhhhhhhhhhhhhhh
# bhhhhhhhhhhhhhhhhhhhhhhhhhhh
# bhhhhhhhhhhhhhhhhhhhhhhhhhhh
# .....
# l== Längengrade
# b== Breitengrade
# h== Höhe in m
#################################################################
# in dieser Form 20 * 20 = 400 Einzeldaten in ca 200 sec !
a=http://www.earthtools.org/height/
c=tmpxyzfile
t=tmpxvzfile1
# Kopfzeile bilden aus \Tab | in Längengraden \Newlines durch \Tab und . durch , ersetzen;und \Newline >>nach ~ schreiben
echo -e "\t$(for l in {5,6}.{0,1,2,3,4,5,6,7,8,9};do echo -e $l |tr '.\n' ',\t' ;done)\n" >> ~/$t
for b in 4{5,6}.{0,1,2,3,4,5,6,7,8,9} # nördl. Breite 45,0° bis 46,9°
do
for l in {5,6}.{0,1,2,3,4,5,6,7,8,9} # öst.Länge 5,0° bis 6,9°
do
# wget holt die xml-datei|sed extrahiert die Höhenmeter|tr ersetzt newlines durch Tab und schreibt nach c
wget $a$b/$l -O - |sed -n 's| *</*meters>||gp' |tr '\n' '\t' >> ~/$c
done
#jeZeile Breitengrad und Tab voranstellen, Leerzeilen entfernen.nach t schreiben
echo -e "$b\t$(cat ~/$c)\n" |sed -e '/^$/D' >> ~/$t
rm ~/$c #c löschen
done
cat ~/$t >> ~/Höhenmeter.csv # kopfzeile zum Datenblock hinzufügen >> Ausgabe nach Höhenmeter.csv
rm ~/$t # t löschen
Gruß Karo
Hallo OOoNewbie
So ganz neu scheinst du aber nicht zu sein, wenn du gleich ein nicht gerade triviales Makro ablieferst.
Es läuft auch hier, falls man es aber zum Abholen von vielen Daten (>50) losschickt ist es etwas langsam !
Ich häng mal ein Shellscript an, das das etwas schneller erledigt und die Ausgabe in eine csv-Datei schreibt.
! Das folgende ist [b][color=#FF0000]kein Basic-Makro[/color][/b] und ist für LInux-BS !
Wer es testen will, möge den Code bsplw. unter "/home/name/hoehe.sh' abspeichern, mit:
chmod a+x /home/name/hoehen.sh
ausfürbar machen und probieren.
[code]#! /bin/sh
# Muster Ausgabe.csv
#################################################################
#
# lllllllllllllllllllllllllll
# bhhhhhhhhhhhhhhhhhhhhhhhhhhh
# bhhhhhhhhhhhhhhhhhhhhhhhhhhh
# bhhhhhhhhhhhhhhhhhhhhhhhhhhh
# .....
# l== Längengrade
# b== Breitengrade
# h== Höhe in m
#################################################################
# in dieser Form 20 * 20 = 400 Einzeldaten in ca 200 sec !
a=http://www.earthtools.org/height/
c=tmpxyzfile
t=tmpxvzfile1
# Kopfzeile bilden aus \Tab | in Längengraden \Newlines durch \Tab und . durch , ersetzen;und \Newline >>nach ~ schreiben
echo -e "\t$(for l in {5,6}.{0,1,2,3,4,5,6,7,8,9};do echo -e $l |tr '.\n' ',\t' ;done)\n" >> ~/$t
for b in 4{5,6}.{0,1,2,3,4,5,6,7,8,9} # nördl. Breite 45,0° bis 46,9°
do
for l in {5,6}.{0,1,2,3,4,5,6,7,8,9} # öst.Länge 5,0° bis 6,9°
do
# wget holt die xml-datei|sed extrahiert die Höhenmeter|tr ersetzt newlines durch Tab und schreibt nach c
wget $a$b/$l -O - |sed -n 's| *</*meters>||gp' |tr '\n' '\t' >> ~/$c
done
#jeZeile Breitengrad und Tab voranstellen, Leerzeilen entfernen.nach t schreiben
echo -e "$b\t$(cat ~/$c)\n" |sed -e '/^$/D' >> ~/$t
rm ~/$c #c löschen
done
cat ~/$t >> ~/Höhenmeter.csv # kopfzeile zum Datenblock hinzufügen >> Ausgabe nach Höhenmeter.csv
rm ~/$t # t löschen[/code]
Gruß Karo