Aller au contenu

Ce tchat, hébergé sur une plateforme indépendante d'Infoclimat, est géré et modéré par une équipe autonome, sans lien avec l'Association.
Un compte séparé du site et du forum d'Infoclimat est nécessaire pour s'y connecter.

fabius

Membres
  • Compteur de contenus

    5
  • Inscription

  • Dernière visite

fabius's Achievements

Cirrus

Cirrus (1/24)

  1. Wow ! merci pour la traduction, vraiment cool de ta part. J'ai aussi déjà trouvé deux trois infos de mon coté et acheté des livres sur le sujet /emoticons/wink@2x.png 2x" width="20" height="20"> A+ PS/ Si vous connaissez d'autres termes, hésitez pô /emoticons/smile@2x.png 2x" width="20" height="20">
  2. Bonjour à tous, A travers Internet, je m'informe sur la météo et je suis tombé sur un ensemble de données américain (NOAA/NWS) dans lequel ils utilisent les valeurs suivantes : Ground heat flux Water runoff Albedo Upward Long-Wave Rad. Flux Downward Long-Wave Rad. Flux Clear sky UV-B downward solar flux UV-B downward solar flux Upward Short-Wave Rad. Flux Downward Short-Wave Rad. Flux Meridional Flux of Gravity Wave Stress Zonal Flux of Gravity Wave Stress Momentum flux, v component Momentum flux, u component Sensible heat net flux Latent heat net flux Wilting point Plant canopy surface water Ozone Mixing Ratio Surface Lifted Index Convective inhibition Convective available potential energy 5-Wave Geopotential Height Anomaly 5-Wave Geopotential Height Geopotential height anomaly Geopotential height Absolute vorticity Vertical velocity pressure Potential Evaporation Rage Cloud mixing ratio Relative humidity Specific humidity Le problème est que je ne sais pas à quoi ces valeurs correspondent et ça m'intéresse /emoticons/wink@2x.png 2x" width="20" height="20"> En effet, j'aurais voulu savoir à quoi ces paramètres correspondent et quels sont leurs effet sur la météo, que caractérisent-t-ils ??? Si vous arrivez à percer le mistère, merci d'avance /emoticons/wink@2x.png 2x" width="20" height="20">
  3. Sympa comme résultat ! Le script est très bien pensé. Perso, j'ai réécris mon script PHP qui lit dans les fichiers binaires de sortie de -lola en Java qui me fais gagner 50% du temps d'exécution sur le script PHP que voilà : Code #!/usr/bin/php <?php error_reporting(E_ALL); define('COORDBOXESIZE', 1); define('DATADIR', "dataset"); # files to read $fn_index = DATADIR.'/last.bin.index'; $fn_bin = DATADIR.'/last.bin'; # --- NO NEED TO MODIFY BELOW --- # # contient les infos $index = array(); $index_out = array(); $fp = fopen($fn_index, 'r'); while(!feof($fp)) { $l = trim(fgets($fp)); $a = explode(':', $l); if(count($a) === 7) { $index[] = array($a[3], $a[4], $a[5]); $index_out[$a[4]][] = $a[3]; } unset($l, $a); } fclose($fp); # # # DATA : $lat =-90+COORDBOXESIZE/2; $lon = -180+COORDBOXESIZE/2; $nbr_lon = 360/COORDBOXESIZE; $nbr_lat = 180/COORDBOXESIZE; $correct_file = false; $point_num=0; $count_index = count($index); # $nbr_points = $nbr_lon * $nbr_lat; $fp = fopen($fn_bin, 'rb'); for($lat; $lat <= 90; $lat += COORDBOXESIZE) { for($lon; $lon <= 180; $lon += COORDBOXESIZE) { //---------------------------------------------------------------BeginningOfMessage $data = array(); for($n=0; $n < $count_index; $n++) { $val = unpack('f', fread($fp, 4)); $type = $index[$n][0]; $level = $index[$n][1]; $time = $index[$n][2]; $data[$level][$type] = (float)$val[1]; # returning at top position if(fseek($fp, 4*$nbr_points-4, SEEK_CUR) === -1 || feof($fp)) die('## fseek/foef failed on line '. __LINE__ ."\n"); } /* print_r($data); exit;/* debug */ $empty = array(); $empty[] = 0; $empty[] = 0; $empty[] = 0; $clouds = array('H'=>$empty,'M'=>$empty,'L'=>$empty,'C'=>$empty); echo sprintf('%+.2f',$lat).':'.sprintf('%+.2f',$lon); reset($index_out); while(list($k,$v)=each($index_out)) { if($k === "surface") { # Precipitation Rate [kg/m^2/s]*3600 = mm/hour (1L=1dm^3) (1mm<=>1L) $prate = $data[$k]['PRATE']*3600; //unit: mm/hour if($prate > 0) { echo ' P'; echo sprintf("%.2f", $prate); # Precipitation type if((float)$data[$k]['CRAIN'] != 0) echo 'R'; if((float)$data[$k]['CSNOW'] != 0) echo 'S'; if((float)$data[$k]['CFRZR'] != 0) echo 'F'; if((float)$data[$k]['CICEP'] != 0) echo 'I'; } } elseif(ereg('cloud', $k)) { if(isset($data[$k]['PRES'])) { $pres = (int) (((float)$data[$k]['PRES'])/100); // --top level-- if($k === "high cloud top level") { $clouds['H'][0] = $pres; } elseif($k === "middle cloud top level") { $clouds['M'][0] = $pres; } elseif($k === "low cloud top level") { $clouds['L'][0] = $pres; } //- -bottom level-- elseif($k === "high cloud bottom level") { $clouds['H'][1] = $pres; } elseif($k === "middle cloud bottom level") { $clouds['M'][1] = $pres; } elseif($k === "low cloud bottom level") { $clouds['L'][1] = $pres; } } elseif(isset($data[$k]['TCDC'])) { $p = (int) $data[$k]['TCDC']; if($p > 100) $p = 0; // prevent from using an undefined value (unknown = no clouds) if($p > 99) $p = 99; if($k === "high cloud layer") { $clouds['H'][2] = $p; } elseif($k === "middle cloud layer") { $clouds['M'][2] = $p; } elseif($k === "low cloud layer") { $clouds['L'][2] = $p; } elseif($k === "convective cloud layer") { $clouds['C'][2] = $p; } } } else { list($lev, $unit) = explode(' ', $k); if($unit === "mb") { //--compulsory fields # Level information (in mb/10) echo sprintf(" %d", $lev/10); # Temperature (2 digits with sign) $tmp = (int)($data[$k]['TMP']-273+0.5); if($tmp > 99) $tmp = 99; if($tmp < 0) echo '-'; else echo '+'; echo sprintf("%02d", abs($tmp)); # Wind $u = (float)$data[$k]['UGRD']; $v = (float)$data[$k]['VGRD']; $spd = sqrt(pow($u, 2) + pow($v, 2)); $spd *= 1.943861286; if($u == 0) $dir = $v < 0 ? -pi()/2 : pi()/2; else $dir = atan($v/$u); if($u < 0) $dir += pi(); $dir = (int) (630 - rad2deg($dir))%360; // 630=90+360+180 (+180 because vetor shows what the wind does, not were it is coming from) if($spd > 299) { echo sprintf('%03dPP%02d', $dir, 99); } elseif($spd > 199) { echo sprintf('%03dPP%02d', $dir, $spd-200); } elseif($spd > 99) { echo sprintf('%03dP%02d', $dir, $spd-100); } else { echo sprintf('%03d%02d', $dir, $spd); } //--optional fields # Relative humidity if(isset($data[$k]['RH'])) { $rh = (int)$data[$k]['RH']; if($rh > 99) $rh = 99; if($rh != 0) echo sprintf('%02d', $rh); } # Cloud Mixing Ratio [mg/kg] if(isset($data[$k]['CLWMR'])) { $cmr = (int) ($data[$k]['CLWMR'] * 1e6); if($cmr != 0) echo sprintf('C%d', $cmr); } } elseif($lev === "mean") { $qnh = $data[$k]['PRMSL']/100; echo sprintf(' Q%.1f', $qnh); } } } $list = array('L','M','H','C'); $first = true; foreach($list as $k) { $v = $clouds[$k]; if($v[0] > 0 && $v[1] > 0 && $v[2] > 0 && ((float)$v[0]) * ((float)$v[1]) * ((float)$v[2]) !== 0) { if($first) echo ' '; if($k === 'C') echo $k.sprintf('%02d', $v[2]); else echo $k.sprintf('%04d%04d%02d', $v[0], $v[1], $v[2]); $first = false; } } echo "\n";/* end of line -> new line */ # Moving to next point $point_num++; if(fseek($fp, 4*$point_num) === -1) die('## fseek failed on line '. __LINE__ ." (moving to next point)\n"); //-----------------------------------------------------------------EndOfMessage } $lon = -180+COORDBOXESIZE/2; } fclose($fp); ?> Bon, le script ci-dessus lit sur la Terre entière avec une résolution de 1° (changeable en fonction de la commande lola) et donne en sortie un META format que mon serveur météo sait lire Si ça peut te donner des idées En ce moment, IKE fait des ravages
  4. Merci à tous les deux pour vos réponses. /emoticons/biggrin@2x.png 2x" width="20" height="20"> C'est vrai que PHP permet beaucoup de choses. Pour ma part, j'ai finalement réussi à créer des images avec grads. Sinon, pour gérer la météo sur mon réseau, je lis directement dans un fichier binaire exporté de wgrib2 avec un petit script PHP. Comode: ton site est pas mal du tout. Si je peux me permettre, les courbes paressent très anguleuses. Peut-etre regarder avec des fonction non linéraires pour rendre plus arrondi ?? Sinon, je trouve qu'en général le site est très bien ! Pour plus de rapidité, je te conseille vivement de lire le fichier binaire plutot que fichier texte ASCII (àla sortie de wgrib2). Pour ma part, le script de lecture du fichier binaire met 15 sec avec un celeon pour toute la Terre et une resolution de 1° (juste pour donner une idée). Je veux bien jeter un coup d'oeil à tes algorithmes. Pour NCL, ça a l'air plus puissant que grads (je sais pas trop en fait) mais j'ai pas encore compris le fonctionnement. Si vous avez quelques pistes, je suis très intéressé /emoticons/happy@2x.png 2x" width="20" height="20"> !
  5. Salut à tous les passionnés, Je me présente rapidement, je suis Fabien de Dijon, et je suis responsable de la génération de météo dans l'association IVAO (www.ivao.aero) rassemblant les passionnés de l'aviation en proposant un réseau de simulation de ce qui existe en réel. Mon but est de recréer la MTO réelle sur le réseau (je développe des serveurs pour cela). Voilà /emoticons/happy@2x.png 2x" width="20" height="20"> Bref, j'aurais voulu savoir comment générer (quels outils utiliser) des images à partir de mes données Grib2/GFS pour superviser la météo (en fait). Oui, ça peut vous paraitre étrange, mais mon but n'est pas de proposer au public des prévisions MTO à x jours... mais seulement d'afficher les cartes aux utilisateurs (supervision/information destinée au réseau). PRMSL; WINDS, TEMP, TCDC, TMP à différents niveaux entre autre. Par ailleurs, si vous connaissez d'autres sources de météo (à part les METAR/TAF et NOAA/NCEP grib) je suis preneur car je galère pas mal depuis 6 mois (je suis tout seul). Ah oui, je cherche un acces à des radiosondages bouées et "land stations". /emoticons/tongue@2x.png 2x" width="20" height="20"> Merci d'avance, Fabien
×
×
  • Créer...