Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/07/2011, à 12:31

Remstux

script bash manipulation données METAR [Résolu]

Bonjour à tous,
Je fais en ce moment une mise à jour de ma page internet, dans lequel j'intègre des donnes en temps réel provenant de ma station météo. Je souhaite en plus intégrer des données provenant de la source METAR de ma ville afin que le visiteur puisse comparer mes données à celles "officielles" METAR. Pour jeter un œil : http://remstux.dyndns.org/meteo
Je débute en PHP et j'essaye donc d'adapter mes besoins à ce que je connais déjà.
J'importe les données METAR et je les décode :

metar -d LFLC > /home/moi/metar/lflc.txt

j'obtiens ce fichier texte :

LFLC 180700Z 22007KT 190V250 9999 FEW033 SCT050 BKN100 14/09 Q1010 TEMPO -SHRA
Station       : LFLC
Day           : 18
Time          : 07:00 UTC
Wind direction: 220 (SW)
Wind speed    : 7 KT
Wind gust     : 7 KT
Visibility    : 9999 M
Temperature   : 14 C
Dewpoint      : 9 C
Pressure      : 1010 hPa
Clouds        : FEW at 3300 ft
                SCT at 5000 ft
                BKN at 10000 ft
Phenomena     : Light Showers Rain

Jusqu'ici tout va très bien, mais pour que je puisse exploiter facilement ces données dans une page php avec le code suivant

<?

$f = @fopen("txt.txt", "r");
while($f && !feof($f))
{
    $value = fgets($f);
    {
        list($parameter,$parvalue)=explode(" ", $value);
        $ws["$parameter"]=trim($parvalue);
    }
}
@fclose($f);

?>

ce qui permet d'intégrer facilement les valeurs dans ma page web grâce à <?=$ws["parameter"]?> Ceci fonctionne très bien avec un fichier texte comme :

temp 10
wind 15
drewpoint 12
...

Ce sont donc des données paramètre valeur séparés par un espace.
Je voudrais obtenir un fichier texte exploitable par mon code php et éventuellement avoir un rendu texte comme ceci ou alors ces même données séparées uniquement par ":"

Station LFLC
Day 18
Time 07:00 UTC
Wind direction 220 (SW)
Wind speed 7 KT
Wind gust 7 KT
Visibility 9999 M
Temperature 14 C
Dewpoint 9 C
Pressure 1010 hPa
Clouds FEW at 3300 ft
                SCT at 5000 ft
                BKN at 10000 ft
Phenomena Light Showers Rain

Merci pour votre précieuse aide, je galère et un coup de pouce me ferait gagner du temps

Dernière modification par Remstux (Le 18/07/2011, à 21:32)

Hors ligne

#2 Le 18/07/2011, à 12:57

Postmortem

Re : script bash manipulation données METAR [Résolu]

Salut,
Avec sed :

sed -i'.sav' 's/[[:blank:]]*: / /' /home/moi/metar/lflc.txt

Dernière modification par Postmortem (Le 18/07/2011, à 12:58)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#3 Le 18/07/2011, à 14:22

Remstux

Re : script bash manipulation données METAR [Résolu]

Salut Postmortem,
la petite formule avec sed marche à merveille, merci beaucoup.
Je vais abuser en voulant aller plus loin avec le résultat sed, j'aimerais que

LFLC 180700Z 22007KT 190V250 9999 FEW033 SCT050 BKN100 14/09 Q1010 TEMPO -SHRA     // pas de changement
Station LFLC     // pas de changement
Day 18     // pas de changement
Time 07:00 UTC     // pas de changement
Wind direction 220 (SW)     // devient: Winddirection
Wind speed 7 KT     // devient: Windspeed 7KT
Wind gust 7 KT     // devient: Windgust 7KT
Visibility 9999 M     // pas de changement
Temperature 14 C     // pas de changement
Dewpoint 9 C     // pas de changement
Pressure 1010 hPa     // pas de changement
Clouds FEW at 3300 ft     // devient: CloudsFEWat 3300 ft
                SCT at 5000 ft     // devient: CloudsSCTat 5000 ft en début de ligne comme pour CloudsFEWat 
                BKN at 10000 ft     // devient: CloudsBKNat 10000 ft en début de ligne comme pour CloudsFEWat
Phenomena Light Showers Rain     // devient:  Phenomena LightShowersRain (la valeur LightShowersRain peut être en fonction de la météo "Rain" ou "Light Rain")

Par exemple : actuellement <?=$ws["Phenomena"]?> m'affiche "Light" je voudrais qu'il m'affiche "LightShowersRain" (ou "Rain" ou "LightRain" ou "TinyLightShowersRain" en des données METAR)
J'espère que j'ai été clair dans ma demande, c'est pas toujours évident d'expliquer et que je n'abuse pas de votre sympathie.

Dernière modification par Remstux (Le 18/07/2011, à 20:55)

Hors ligne

#4 Le 18/07/2011, à 19:20

AnsuzPeorth

Re : script bash manipulation données METAR [Résolu]

Bjr,
Avec sed ca doit être possible (je n'y suis pas arrivé, mais bon, je suis pas une référence smile), awk serait plus approprié pour ce genre de traitements.

Mais pourquoi pas un petit script bash, ce n'est pas un fichier de 10 000 lignes, donc pas besoin non plus d'un truc hyper puissant !

#/bin/bash

while read line
do
line=${line/: / }
[[ "$line" =~ 'Clouds' ]] && line=${line/* FEW at/CloudsFEWat}
[[ "$line" =~ 'SCT at' ]] && line=${line/SCT at/CloudsSCTat}
[[ "$line" =~ 'BKN at' ]] && line=${line/BKN at/CloudsBKNat}
[[ "$line" =~ 'Phenomena' ]] && {
    line=${line/Phenomena / }
    line="Phenomena ${line// /}"
}
echo $line
done < '/home/fichier_in' > /home/fichier_out
exit

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 18/07/2011, à 19:58

Remstux

Re : script bash manipulation données METAR [Résolu]

salut AnsuzPeorth,
Je viens de tester le bash que tu m'as proposé et j'ai un retour :

$ sh script.sh
script.sh: 14: Bad substitution
$ 

Je ne comprends pas l'erreur hmm

Dernière modification par Remstux (Le 18/07/2011, à 19:59)

Hors ligne

#6 Le 18/07/2011, à 20:33

AnsuzPeorth

Re : script bash manipulation données METAR [Résolu]

ben tu l'execute en sh, c'est normal l'erreur, c'est du bash smile


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#7 Le 18/07/2011, à 20:59

Remstux

Re : script bash manipulation données METAR [Résolu]

heu... j'me cache là... AnsuzPeorth (pas taper) smile
J'ai exécuté des sh pour des tests cet après-midi... j'étais sur une bonne lancée on dira wink
Ca marche parfaitement, par contre j'aimerais que Wind direction, Wind speed, Wind gust deviennent "Winddirection", "Windspeed", "Windgust".
J'ai essayé de m'inspirer de ton bash mais je crois que je suis un peu fatigué du neurone ce soir, peux-tu m'aider ?

Dernière modification par Remstux (Le 18/07/2011, à 21:14)

Hors ligne

#8 Le 18/07/2011, à 21:31

Remstux

Re : script bash manipulation données METAR [Résolu]

En expliquant à ma fille de 2 ans ce que j'étais entrain de faire j'ai eu une illumination (petite hein, je suis loin d'être un genie)
J'ai complété ton code bash comme ceci :

#/bin/bash

while read line
do
line=${line/: / }
[[ "$line" =~ 'direction' ]]&& line=${line/Wind direction/Winddirection}
[[ "$line" =~ 'speed' ]]&& line=${line/Wind speed/Windspeed}
[[ "$line" =~ 'gust' ]]&& line=${line/Wind gust/Windgust}
[[ "$line" =~ 'Clouds' ]] && line=${line/* FEW at/CloudsFEWat}
[[ "$line" =~ 'SCT at' ]] && line=${line/SCT at/CloudsSCTat}
[[ "$line" =~ 'BKN at' ]] && line=${line/BKN at/CloudsBKNat}
[[ "$line" =~ 'Phenomena' ]] && {
    line=${line/Phenomena / }
    line="Phenomena ${line// /}"
}
echo $line
done < '/home/rems/Bureau/nouveau/lflc.txt' > /home/rems/Bureau/nouveau/lflc1.txt
exit

Tout fonctionne comme je voulais, je n'ai plus qu'à intégrer ces données dans la page php
J'espère que cela fonctionnera même si un paramètre ne comporte aucune valeur comme çà arrive très souvent.
En tout cas, un grand merci à Postmortem & AnsuzPeorth pour votre rapidité dans les réponses et votre aide apportée
Salutations cool

Hors ligne