2009-01-22 8 views
2

Tout ce que j'ai est ceExiste-t-il un script shell ou un script Perl pour calculer l'humidité relative (%) en utilisant T_DB (Temp - Dry Bulb) et DP (Dew Point)?

Tc = température de l'air en degrés Celsius

Tdc = température du point de rosée en degrés Celsius

(1) Es = 6,11 * 10,0 ** (7,5 * Tc/(237,7 + Tc))

(2) E = 6,11 * 10,0 ** (7,5 * Tdc/(237,7 + Tdc))

(3) Humidité relative (HR) en pour cent = (E/Es) * 100

En f agir (à partir d'un fichier CSV) Je dois saisir une valeur de Colonne9 et un de la Colonne 10 utiliser ces valeurs pour calculer l'humidité relative (%) et mettre le résultat à la fin de l'enregistrement/ligne. Cela doit être répété jusqu'à la fin du fichier csv.

Toute aide appréciée

acclamations

Répondre

2

Mettez le code suivant dans calc_rh.pl:

#!/usr/bin/perl 

while (<>) { 
    chomp; 
    @f = map { /^\"(.*)\"$/ ? $1 : $_ } split /,/; # Strips double quotes if present 
    ($Tc, $Tdc) = @f[8, 9];  # Assuming Tc in column 9, Tdc in column 10 
    $Es=6.11*10.0** (7.5*$Tc/ (237.7+$Tc)); 
    $E=6.11*10.0** (7.5*$Tdc/ (237.7+$Tdc)); 
    $RH = sprintf "%.2f", $E/$Es*100; # Or use e.g. "%.4f" for 4 digits after d.p. 
    print join(",", map { "\"$_\"" } @f, $RH), "\n"; 
} 

Run avec:

perl calc_rh.pl <infile.csv> outfile.csv 

REMARQUE: Le code ci-dessus cassera si l'un de vos les colonnes contiennent une virgule. Il est possible de résoudre ce problème en utilisant des modules téléchargeables, mais j'ai l'impression que vous avez juste besoin d'un script rapide.

De plus, si vous utilisez Linux, vous devrez peut-être exécuter:

perl ./calc_rh.pl <infile.csv> outfile.csv 

à la place.

Questions connexes