Satellite blackouts???

This is the general tropical discussion area. Anyone can take their shot at predicting a storms path.

Moderator: S2k Moderators

Forum rules

The posts in this forum are NOT official forecasts and should not be used as such. They are just the opinion of the poster and may or may not be backed by sound meteorological data. They are NOT endorsed by any professional institution or STORM2K. For official information, please refer to products from the National Hurricane Center and National Weather Service.

Help Support Storm2K
Message
Author
User avatar
FritzPaul
S2K Supporter
S2K Supporter
Posts: 468
Age: 58
Joined: Sat Aug 28, 2004 7:09 pm
Location: Pensacola, FL
Contact:

Satellite blackouts???

#1 Postby FritzPaul » Fri Jul 15, 2005 10:27 pm

Does anyone know if we're going to have satellite eclipses every night like we had in the beginning of 04 season?


PS I'm working on a beta Java program to decode recon, so maybe I can help those who do it by hand! 8-)
0 likes   

PurdueWx80
Professional-Met
Professional-Met
Posts: 2720
Joined: Fri Aug 13, 2004 8:33 pm
Location: Madison, WI
Contact:

Re: Satellite blackouts???

#2 Postby PurdueWx80 » Fri Jul 15, 2005 10:32 pm

FritzPaul wrote:Does anyone know if we're going to have satellite eclipses every night like we had in the beginning of 04 season?


This won't happen until we get much closer to the Fall equinox.
0 likes   

User avatar
senorpepr
Military Met/Moderator
Military Met/Moderator
Posts: 12542
Age: 43
Joined: Fri Aug 22, 2003 9:22 pm
Location: Mackenbach, Germany
Contact:

Re: Satellite blackouts???

#3 Postby senorpepr » Fri Jul 15, 2005 10:34 pm

FritzPaul wrote:Does anyone know if we're going to have satellite eclipses every night like we had in the beginning of 04 season?


PS I'm working on a beta Java program to decode recon, so maybe I can help those who do it by hand! 8-)


There are satellite eclipses every spring and fall thanks to the angle of the Earth in relation to the Sun.

However, within a few years they will have a GOES satellite operational that will maintain energy long enough to stay powered through the "eclipse period."
0 likes   

PurdueWx80
Professional-Met
Professional-Met
Posts: 2720
Joined: Fri Aug 13, 2004 8:33 pm
Location: Madison, WI
Contact:

#4 Postby PurdueWx80 » Fri Jul 15, 2005 10:38 pm

http://www.ssd.noaa.gov/PS/SATS/eclipse.html

Keep your eye here, they'll update it shortly. Based on last Fall's eclipse schedule, this season's should start in mid-August. The peak amount of missing images will be within a few weeks on either side of the Equinox.
0 likes   

User avatar
FritzPaul
S2K Supporter
S2K Supporter
Posts: 468
Age: 58
Joined: Sat Aug 28, 2004 7:09 pm
Location: Pensacola, FL
Contact:

#5 Postby FritzPaul » Fri Jul 15, 2005 10:41 pm

Thanks guys 8-)

BTW Does anyone know if there's software on the net to decode recon, or am I wasting my time developing new software?
0 likes   

User avatar
HURAKAN
Professional-Met
Professional-Met
Posts: 46086
Age: 38
Joined: Thu May 20, 2004 4:34 pm
Location: Key West, FL
Contact:

#6 Postby HURAKAN » Fri Jul 15, 2005 10:43 pm

Be careful, because this could be Alien intervention, or North Korea trying to take over the world! :lol:
0 likes   

ericinmia
S2K Supporter
S2K Supporter
Posts: 1573
Joined: Fri Sep 12, 2003 11:15 pm
Location: Miami Lakes, FL

#7 Postby ericinmia » Fri Jul 15, 2005 11:31 pm

Code: Select all

<html>
<head>
<title>Hurricane Decoder</title>
<script>
<!--
var headerline1;
var headerline2;
var timeline;
var latlonline;
var minheightline;
var maxsfcwline;
var bearingsfcline;
var maxflwline;
var bearingflline;
var minpline;
var maxtempoline;
var maxtempiline;
var dewpointline;
var eyetypeline;
var eyeformline;
var fixline;
var fixaccline;
var remarksline;
var readpline = false;

   function clearit()
   {
      document.getElementById("report").value = "";
      document.getElementById("report").select();
   }
   
   function round2(innum)
   {
      var answer;

      answer = Math.round(innum*100);
      return answer/100.0;
   }

   function analyze(intext)
   {
      if (intext.indexOf("URNT12") != -1) {headerline1 = intext; return;}
      if ((intext.indexOf("VORTEX") != -1) && (intext.indexOf("MESSAGE") != -1)) {headerline2 = intext; return;}
      if (intext.substring(0,2) == "A.") {timeline = intext; return;}
      if (intext.substring(0,2) == "B.") {latlonline = intext; return;}
      if (intext.substring(0,2) == "C.") {minheightline = intext; return;}
      if (intext.substring(0,2) == "D.") {maxsfcwline = intext; return;}
      if (intext.substring(0,2) == "E.") {bearingsfcline = intext; return;}
      if (intext.substring(0,2) == "F.") {maxflwline = intext; return;}
      if (intext.substring(0,2) == "G.") {bearingflline = intext; return;}
      if (intext.substring(0,2) == "H.") {minpline = intext; return;}
      if (intext.substring(0,2) == "I.") {maxtempoline = intext; return;}
      if (intext.substring(0,2) == "J.") {maxtempiline = intext; return;}
      if (intext.substring(0,2) == "K.") {dewpointline = intext; return;}
      if (intext.substring(0,2) == "L.") {eyetypeline = intext; return;}
      if (intext.substring(0,2) == "M.") {eyeformline = intext; return;}
      if (intext.substring(0,2) == "N.") {fixline = intext; return;}
      if (intext.substring(0,2) == "O.") {fixaccline = intext; return;}
      if (intext.substring(0,2) == "P.") {remarksline = intext; readpline = true; return;}
      if ((intext.indexOf("DEG") != -1) && (intext.indexOf("MIN") != -1)) {latlonline = latlonline+intext; return;}
      if (readpline) {remarksline = remarksline + intext; return;}
      return;
   }

   function fixtime(intime)
   {
      var nowtime = new Date();
      var utctimeval;
      var localtimeval;
      var marker = intime.indexOf("/");
      var thehour, theminute, theday, theyear;
      var newtimes;
      
      // Fix for date of 1st in UTC, but 30/31 in local
      theday = intime.substring(marker-2,marker);
      thehour = intime.substring(marker+1,marker+3);
      theminute = intime.substring(marker+3,marker+5);
      if (nowtime.getFullYear) theyear = nowtime.getFullYear();
      else
         theyear = (nowtime.getYear() <= 1900) ? nowtime.getYear()+1900 : nowtime.getYear();
   
      utctimeval = new Date(theyear, nowtime.getMonth(),theday,thehour,theminute);
      localtimeval = new Date(Date.UTC(theyear, nowtime.getMonth(),theday,thehour,theminute));
      if (localtimeval.getDate() != utctimeval.getDate())
      {
         if (utctimeval.getDate() == 1)
         {
            utctimeval.setMonth(utctimeval.getMonth()+1);
            localtimeval = new Date(Date.UTC(theyear, nowtime.getMonth()+1,theday,thehour,theminute));
         }
      }
      newtimes = "<b>Date/Time of Recon Report:</b> "+localtimeval.toLocaleString();
      return newtimes;
   }

   function fixlat(inline)
   {
      var existline = inline;
      var latd, latm, latdir, lond, lonm, londir;

      existline = existline.substring(3);
      latd = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+4);
      latm = existline.substring(0,existline.indexOf(" MIN"));
      existline = existline.substring(existline.indexOf(" MIN")+5);
      latdir = existline.substring(0,1);
      existline = existline.substring(1);
      lond = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+4);
      lonm = existline.substring(0,existline.indexOf(" MIN"));
      existline = existline.substring(existline.indexOf(" MIN")+5);
      londir = existline.substring(0,1);

      existline = "<b>Position of the center:</b> "+latd+"&deg;"+latm+"' "+latdir+"  "+lond+"&deg;"+lonm+"' "+londir;
      return existline;
   }

   function fixpline(intext)
   {
      var existline = intext;
      var mpress, epress;

      // Search for extrap example
      existline = existline.substring(3);
      mpress = existline.substring(0,existline.indexOf(" MB"));
      epress = round2(parseInt(mpress)*(0.02953));
      epress =
      existline = "<b>Minimum pressure: </b>"+mpress+"mb ("+epress+"in)";
      return existline;
   }

   function fixhline(intext)
   {
      var existline = intext;
      var press, height, normal;

      existline = existline.substring(3);
      if (existline.indexOf("NA") != -1) return "";
      press = existline.substring(0,existline.indexOf(" MB"));
      existline = existline.substring(existline.indexOf(" MB")+4);
      height = existline.substring(0,existline.indexOf(" M"));
      switch (parseInt(press))
      {
      case 700: normal = 3011; break;
      case 850: normal = 1457; break;
      case 925: normal = 762; break;
      default: normal = -1;
      }
      if (normal < 0) return "";

      existline = "<b>Minimum Height Measured At Standard Level Of "+press+"mb:</b> "+height+"m (Normal: "+normal+")";
      return existline;
   }

   function fixswline(intext)
   {
      var existline = intext.substring(3);
      var speed;

      if (intext.indexOf("NA") != -1) return "<b>Maximum Surface Winds Were:</b> Not Estimated";
      speed = existline.substring(0,existline.indexOf(" KT"));
      return "<b>Maximum Surface Winds Were Estimated At:</b> "+speed+"KT";
   }

   function fixsbear(intext)
   {
      var existline = intext.substring(3);
      var angle, dist;

      if (intext.indexOf("NA") != -1) return "<b>No Bearing From Center To Estimated Surface Winds Was Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      dist = existline.substring(0,existline.indexOf(" NM"));
      existline = "<b>Estimated Surface Winds Were Measured "+dist+"nm ("+dist*1.15+"miles) From Center At Bearing "+angle+"&deg;</b>";
      return existline;
   }

   function fixflwbear(intext)
   {
      var existline = intext.substring(3);
      var angle, speed;

      if (intext.indexOf("NA") != -1) return "<b>No Maximum Flight Level Winds Were Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      speed = existline.substring(0,existline.indexOf(" KT"));
      existline = "<b>Maximum Flight Level Winds Were "+speed+"KT ("+round2(speed*1.15)+"mph) From "+angle+"&deg;</b>";
      return existline;
   }

   function fixflbear(intext)
   {
      var existline = intext.substring(3);
      var angle, dist;

      if (intext.indexOf("NA") != -1) return "<b>No Bearing From Center To Maximum Flight Level Winds Was Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      dist = existline.substring(0,existline.indexOf(" NM"));
      existline = "<b>Maximum Flight Level Winds Were Measured "+dist+"nm ("+dist*1.15+"miles) From Center At Bearing "+angle+"&deg;</b>";
      return existline;
   }

   function fixeyetype(intext)
   {
      var existline = intext.substring(3);

      if (intext.indexOf("NA") != -1) return "<b>Eye Wall Was &lt; 50% Closed</b>";
      return "<b>Eye Wall Was Characterized As Being "+existline+"</b>";
   }

   function fixeyeform(intext)
   {
      var existline = intext.substring(3);

      if (intext.indexOf("NA") != -1) return "<b>Eye Did Not Have A Definable Form</b>";
      return "<b>Eye Form Was Characterized As Being "+existline+"</b>";
   }

   function fixfixline(intext)
   {
      var existline = intext.substring(3);
      var ftypes, fheights;

      ftypes = existline.substring(0,existline.indexOf("/"));
      fheights = existline.substring(existline.indexOf("/")+1);
      existline = "<b>Center Fix Established Using:</b> ";
      if (ftypes.indexOf("1") != -1) existline = existline + "Penetration ";
      if (ftypes.indexOf("2") != -1) existline = existline + "Radar ";
      if (ftypes.indexOf("3") != -1) existline = existline + "Wind ";
      if (ftypes.indexOf("4") != -1) existline = existline + "Pressure ";
      if (ftypes.indexOf("5") != -1) existline = existline + "Temperature ";
      existline = existline + "<br><b>Center Fix Established At Level(s):</b> ";
      if (fheights.indexOf("0") != -1) existline = existline + "Surface ";
      if (fheights.indexOf("1") != -1) existline = existline + "1500ft ";
      if (fheights.indexOf("8") != -1) existline = existline + "850mb ";
      if (fheights.indexOf("7") != -1) existline = existline + "700mb ";
      if (fheights.indexOf("5") != -1) existline = existline + "500mb ";
      if (fheights.indexOf("4") != -1) existline = existline + "400mb ";
      if (fheights.indexOf("3") != -1) existline = existline + "300mb ";
      if (fheights.indexOf("2") != -1) existline = existline + "200mb ";
      if (fheights.indexOf("9") != -1) existline = existline + "925mb ";
      return existline;
   }

   function fixacc(intext)
   {
      var existline = intext.substring(3);
      var navacc, metacc;

      navacc = existline.substring(0,existline.indexOf("/"));
      metacc = existline.substring(existline.indexOf("/")+1);
      return "<b>Navigational Accuracy Measured At "+parseFloat(navacc)+"nm</b><br><b>Meteorological Accuracy Measured At "+parseFloat(metacc)+"nm</b>";
   }

   function fixremarks(intext)
   {
      var existline = intext.substring(3);
      var plane, planenum, msncnt, depnum, ocean, storm;

      plane = existline.substring(0,existline.indexOf(" "));
      if (plane.indexOf("AF") != -1)
      {
         planenum = plane.substring(2);
         plane = plane.substring(0,2);
      }
      else
      {
         planenum = plane.substring(4);
         plane = plane.substring(0,4);
      }
      existline = existline.substring(existline.indexOf(" ")+1);
      msncnt = existline.substring(0,2);
      existline = existline.substring(2);
      depnum = existline.substring(0,2);
      existline = existline.substring(2);
      ocean = existline.substring(0,1);
      switch (ocean)
      {
      case "A": ocean = "Atlantic Ocean"; break;
      case "E": ocean = "Eastern Pacific Ocean"; break;
      case "C": ocean = "Central Pacific Ocean"; break;
      }
      existline = existline.substring(2);
      storm = existline.substring(0,existline.indexOf(" "));
      existline = "<b>Storm "+storm+": Observed By "+plane+" #"+planenum+"</b><br><b>Storm #"+depnum+" in "+ocean+"</b>";
      return existline;
   }

   function cleanup()
   {
      if (timeline != "") timeline = fixtime(timeline);
      if (latlonline != "") latlonline = fixlat(latlonline);
      if (minpline != "") minpline = fixpline(minpline);
      if (minheightline != "") minheightline = fixhline(minheightline);
      if (maxsfcwline != "") maxsfcwline = fixswline(maxsfcwline);
      if (bearingsfcline != "") bearingsfcline = fixsbear(bearingsfcline);
      if (maxflwline != "") maxflwline = fixflwbear(maxflwline);
      if (bearingflline != "") bearingflline = fixflbear(bearingflline);
      if (eyetypeline != "") eyetypeline = fixeyetype(eyetypeline);
      if (eyeformline != "") eyeformline = fixeyeform(eyeformline);
      if (fixline != "") fixline = fixfixline(fixline);
      if (fixaccline != "") fixaccline = fixacc(fixaccline);
      if (remarksline != "") remarksline = fixremarks(remarksline);
   }

   function decode()
   {
      var dtext;
      var subline;
      var nextcut;

      dtext = document.getElementById("report").value;
      dtext = dtext.toUpperCase();
      nextcut = dtext.indexOf("\n");
      while (nextcut != -1)
      {
         subline = dtext.substring(0,nextcut);
         analyze(subline);
         dtext = dtext.substring(nextcut+1);
         nextcut = dtext.indexOf("\n");
      }
      cleanup();
//      document.getElementById("line1").innerHTML = headerline1;
//      document.getElementById("line2").innerHTML = headerline2;
      document.getElementById("line3").innerHTML = timeline;
      document.getElementById("line4").innerHTML = latlonline;
      document.getElementById("line5").innerHTML = minheightline;
      document.getElementById("line6").innerHTML = maxsfcwline;
      document.getElementById("line7").innerHTML = bearingsfcline;
      document.getElementById("line8").innerHTML = maxflwline;
      document.getElementById("line9").innerHTML = bearingflline;
      document.getElementById("line10").innerHTML = minpline;
//      document.getElementById("line11").innerHTML = maxtempoline;
//      document.getElementById("line12").innerHTML = maxtempiline;
//      document.getElementById("line13").innerHTML = dewpointline;
      document.getElementById("line14").innerHTML = eyetypeline;
      document.getElementById("line15").innerHTML = eyeformline;
      document.getElementById("line16").innerHTML = fixline;
      document.getElementById("line17").innerHTML = fixaccline;
      document.getElementById("line18").innerHTML = remarksline;
   }
-->
</script>
</head>
<body onload="clearit()">
<center>
<b>Copy and paste recon report in this box:</b> (Reports available
<a target="_blank" href="http://www.nhc.noaa.gov/text/MIAREPNT2.shtml">here</a>)<br>
<textarea id="report" style="width:275px;height:150px"></textarea><br>
<input type="button" id="submit" value="Decode" onclick="decode()">
<input type="button" id="clear" value="Clear" onclick="clearit()">
<br><hr>
<div id="line18"></div>
<div id="line1"></div>
<div id="line2"></div>
<div id="line3"></div>
<div id="line4"></div>
<div id="line5"></div>
<div id="line6"></div>
<div id="line7"></div>
<div id="line8"></div>
<div id="line9"></div>
<div id="line10"></div>
<div id="line11"></div>
<div id="line12"></div>
<div id="line13"></div>
<div id="line14"></div>
<div id="line15"></div>
<div id="line16"></div>
<div id="line17"></div>
</center>
</body>
</html>
0 likes   

User avatar
mobilebay
Category 5
Category 5
Posts: 1853
Age: 51
Joined: Wed Aug 18, 2004 1:22 am
Location: Mobile, Alabama

#8 Postby mobilebay » Fri Jul 15, 2005 11:39 pm

ericinmia wrote:

Code: Select all

<html>
<head>
<title>Hurricane Decoder</title>
<script>
<!--
var headerline1;
var headerline2;
var timeline;
var latlonline;
var minheightline;
var maxsfcwline;
var bearingsfcline;
var maxflwline;
var bearingflline;
var minpline;
var maxtempoline;
var maxtempiline;
var dewpointline;
var eyetypeline;
var eyeformline;
var fixline;
var fixaccline;
var remarksline;
var readpline = false;

   function clearit()
   {
      document.getElementById("report").value = "";
      document.getElementById("report").select();
   }
   
   function round2(innum)
   {
      var answer;

      answer = Math.round(innum*100);
      return answer/100.0;
   }

   function analyze(intext)
   {
      if (intext.indexOf("URNT12") != -1) {headerline1 = intext; return;}
      if ((intext.indexOf("VORTEX") != -1) && (intext.indexOf("MESSAGE") != -1)) {headerline2 = intext; return;}
      if (intext.substring(0,2) == "A.") {timeline = intext; return;}
      if (intext.substring(0,2) == "B.") {latlonline = intext; return;}
      if (intext.substring(0,2) == "C.") {minheightline = intext; return;}
      if (intext.substring(0,2) == "D.") {maxsfcwline = intext; return;}
      if (intext.substring(0,2) == "E.") {bearingsfcline = intext; return;}
      if (intext.substring(0,2) == "F.") {maxflwline = intext; return;}
      if (intext.substring(0,2) == "G.") {bearingflline = intext; return;}
      if (intext.substring(0,2) == "H.") {minpline = intext; return;}
      if (intext.substring(0,2) == "I.") {maxtempoline = intext; return;}
      if (intext.substring(0,2) == "J.") {maxtempiline = intext; return;}
      if (intext.substring(0,2) == "K.") {dewpointline = intext; return;}
      if (intext.substring(0,2) == "L.") {eyetypeline = intext; return;}
      if (intext.substring(0,2) == "M.") {eyeformline = intext; return;}
      if (intext.substring(0,2) == "N.") {fixline = intext; return;}
      if (intext.substring(0,2) == "O.") {fixaccline = intext; return;}
      if (intext.substring(0,2) == "P.") {remarksline = intext; readpline = true; return;}
      if ((intext.indexOf("DEG") != -1) && (intext.indexOf("MIN") != -1)) {latlonline = latlonline+intext; return;}
      if (readpline) {remarksline = remarksline + intext; return;}
      return;
   }

   function fixtime(intime)
   {
      var nowtime = new Date();
      var utctimeval;
      var localtimeval;
      var marker = intime.indexOf("/");
      var thehour, theminute, theday, theyear;
      var newtimes;
      
      // Fix for date of 1st in UTC, but 30/31 in local
      theday = intime.substring(marker-2,marker);
      thehour = intime.substring(marker+1,marker+3);
      theminute = intime.substring(marker+3,marker+5);
      if (nowtime.getFullYear) theyear = nowtime.getFullYear();
      else
         theyear = (nowtime.getYear() <= 1900) ? nowtime.getYear()+1900 : nowtime.getYear();
   
      utctimeval = new Date(theyear, nowtime.getMonth(),theday,thehour,theminute);
      localtimeval = new Date(Date.UTC(theyear, nowtime.getMonth(),theday,thehour,theminute));
      if (localtimeval.getDate() != utctimeval.getDate())
      {
         if (utctimeval.getDate() == 1)
         {
            utctimeval.setMonth(utctimeval.getMonth()+1);
            localtimeval = new Date(Date.UTC(theyear, nowtime.getMonth()+1,theday,thehour,theminute));
         }
      }
      newtimes = "<b>Date/Time of Recon Report:</b> "+localtimeval.toLocaleString();
      return newtimes;
   }

   function fixlat(inline)
   {
      var existline = inline;
      var latd, latm, latdir, lond, lonm, londir;

      existline = existline.substring(3);
      latd = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+4);
      latm = existline.substring(0,existline.indexOf(" MIN"));
      existline = existline.substring(existline.indexOf(" MIN")+5);
      latdir = existline.substring(0,1);
      existline = existline.substring(1);
      lond = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+4);
      lonm = existline.substring(0,existline.indexOf(" MIN"));
      existline = existline.substring(existline.indexOf(" MIN")+5);
      londir = existline.substring(0,1);

      existline = "<b>Position of the center:</b> "+latd+"&deg;"+latm+"' "+latdir+"  "+lond+"&deg;"+lonm+"' "+londir;
      return existline;
   }

   function fixpline(intext)
   {
      var existline = intext;
      var mpress, epress;

      // Search for extrap example
      existline = existline.substring(3);
      mpress = existline.substring(0,existline.indexOf(" MB"));
      epress = round2(parseInt(mpress)*(0.02953));
      epress =
      existline = "<b>Minimum pressure: </b>"+mpress+"mb ("+epress+"in)";
      return existline;
   }

   function fixhline(intext)
   {
      var existline = intext;
      var press, height, normal;

      existline = existline.substring(3);
      if (existline.indexOf("NA") != -1) return "";
      press = existline.substring(0,existline.indexOf(" MB"));
      existline = existline.substring(existline.indexOf(" MB")+4);
      height = existline.substring(0,existline.indexOf(" M"));
      switch (parseInt(press))
      {
      case 700: normal = 3011; break;
      case 850: normal = 1457; break;
      case 925: normal = 762; break;
      default: normal = -1;
      }
      if (normal < 0) return "";

      existline = "<b>Minimum Height Measured At Standard Level Of "+press+"mb:</b> "+height+"m (Normal: "+normal+")";
      return existline;
   }

   function fixswline(intext)
   {
      var existline = intext.substring(3);
      var speed;

      if (intext.indexOf("NA") != -1) return "<b>Maximum Surface Winds Were:</b> Not Estimated";
      speed = existline.substring(0,existline.indexOf(" KT"));
      return "<b>Maximum Surface Winds Were Estimated At:</b> "+speed+"KT";
   }

   function fixsbear(intext)
   {
      var existline = intext.substring(3);
      var angle, dist;

      if (intext.indexOf("NA") != -1) return "<b>No Bearing From Center To Estimated Surface Winds Was Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      dist = existline.substring(0,existline.indexOf(" NM"));
      existline = "<b>Estimated Surface Winds Were Measured "+dist+"nm ("+dist*1.15+"miles) From Center At Bearing "+angle+"&deg;</b>";
      return existline;
   }

   function fixflwbear(intext)
   {
      var existline = intext.substring(3);
      var angle, speed;

      if (intext.indexOf("NA") != -1) return "<b>No Maximum Flight Level Winds Were Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      speed = existline.substring(0,existline.indexOf(" KT"));
      existline = "<b>Maximum Flight Level Winds Were "+speed+"KT ("+round2(speed*1.15)+"mph) From "+angle+"&deg;</b>";
      return existline;
   }

   function fixflbear(intext)
   {
      var existline = intext.substring(3);
      var angle, dist;

      if (intext.indexOf("NA") != -1) return "<b>No Bearing From Center To Maximum Flight Level Winds Was Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      dist = existline.substring(0,existline.indexOf(" NM"));
      existline = "<b>Maximum Flight Level Winds Were Measured "+dist+"nm ("+dist*1.15+"miles) From Center At Bearing "+angle+"&deg;</b>";
      return existline;
   }

   function fixeyetype(intext)
   {
      var existline = intext.substring(3);

      if (intext.indexOf("NA") != -1) return "<b>Eye Wall Was &lt; 50% Closed</b>";
      return "<b>Eye Wall Was Characterized As Being "+existline+"</b>";
   }

   function fixeyeform(intext)
   {
      var existline = intext.substring(3);

      if (intext.indexOf("NA") != -1) return "<b>Eye Did Not Have A Definable Form</b>";
      return "<b>Eye Form Was Characterized As Being "+existline+"</b>";
   }

   function fixfixline(intext)
   {
      var existline = intext.substring(3);
      var ftypes, fheights;

      ftypes = existline.substring(0,existline.indexOf("/"));
      fheights = existline.substring(existline.indexOf("/")+1);
      existline = "<b>Center Fix Established Using:</b> ";
      if (ftypes.indexOf("1") != -1) existline = existline + "Penetration ";
      if (ftypes.indexOf("2") != -1) existline = existline + "Radar ";
      if (ftypes.indexOf("3") != -1) existline = existline + "Wind ";
      if (ftypes.indexOf("4") != -1) existline = existline + "Pressure ";
      if (ftypes.indexOf("5") != -1) existline = existline + "Temperature ";
      existline = existline + "<br><b>Center Fix Established At Level(s):</b> ";
      if (fheights.indexOf("0") != -1) existline = existline + "Surface ";
      if (fheights.indexOf("1") != -1) existline = existline + "1500ft ";
      if (fheights.indexOf("8") != -1) existline = existline + "850mb ";
      if (fheights.indexOf("7") != -1) existline = existline + "700mb ";
      if (fheights.indexOf("5") != -1) existline = existline + "500mb ";
      if (fheights.indexOf("4") != -1) existline = existline + "400mb ";
      if (fheights.indexOf("3") != -1) existline = existline + "300mb ";
      if (fheights.indexOf("2") != -1) existline = existline + "200mb ";
      if (fheights.indexOf("9") != -1) existline = existline + "925mb ";
      return existline;
   }

   function fixacc(intext)
   {
      var existline = intext.substring(3);
      var navacc, metacc;

      navacc = existline.substring(0,existline.indexOf("/"));
      metacc = existline.substring(existline.indexOf("/")+1);
      return "<b>Navigational Accuracy Measured At "+parseFloat(navacc)+"nm</b><br><b>Meteorological Accuracy Measured At "+parseFloat(metacc)+"nm</b>";
   }

   function fixremarks(intext)
   {
      var existline = intext.substring(3);
      var plane, planenum, msncnt, depnum, ocean, storm;

      plane = existline.substring(0,existline.indexOf(" "));
      if (plane.indexOf("AF") != -1)
      {
         planenum = plane.substring(2);
         plane = plane.substring(0,2);
      }
      else
      {
         planenum = plane.substring(4);
         plane = plane.substring(0,4);
      }
      existline = existline.substring(existline.indexOf(" ")+1);
      msncnt = existline.substring(0,2);
      existline = existline.substring(2);
      depnum = existline.substring(0,2);
      existline = existline.substring(2);
      ocean = existline.substring(0,1);
      switch (ocean)
      {
      case "A": ocean = "Atlantic Ocean"; break;
      case "E": ocean = "Eastern Pacific Ocean"; break;
      case "C": ocean = "Central Pacific Ocean"; break;
      }
      existline = existline.substring(2);
      storm = existline.substring(0,existline.indexOf(" "));
      existline = "<b>Storm "+storm+": Observed By "+plane+" #"+planenum+"</b><br><b>Storm #"+depnum+" in "+ocean+"</b>";
      return existline;
   }

   function cleanup()
   {
      if (timeline != "") timeline = fixtime(timeline);
      if (latlonline != "") latlonline = fixlat(latlonline);
      if (minpline != "") minpline = fixpline(minpline);
      if (minheightline != "") minheightline = fixhline(minheightline);
      if (maxsfcwline != "") maxsfcwline = fixswline(maxsfcwline);
      if (bearingsfcline != "") bearingsfcline = fixsbear(bearingsfcline);
      if (maxflwline != "") maxflwline = fixflwbear(maxflwline);
      if (bearingflline != "") bearingflline = fixflbear(bearingflline);
      if (eyetypeline != "") eyetypeline = fixeyetype(eyetypeline);
      if (eyeformline != "") eyeformline = fixeyeform(eyeformline);
      if (fixline != "") fixline = fixfixline(fixline);
      if (fixaccline != "") fixaccline = fixacc(fixaccline);
      if (remarksline != "") remarksline = fixremarks(remarksline);
   }

   function decode()
   {
      var dtext;
      var subline;
      var nextcut;

      dtext = document.getElementById("report").value;
      dtext = dtext.toUpperCase();
      nextcut = dtext.indexOf("\n");
      while (nextcut != -1)
      {
         subline = dtext.substring(0,nextcut);
         analyze(subline);
         dtext = dtext.substring(nextcut+1);
         nextcut = dtext.indexOf("\n");
      }
      cleanup();
//      document.getElementById("line1").innerHTML = headerline1;
//      document.getElementById("line2").innerHTML = headerline2;
      document.getElementById("line3").innerHTML = timeline;
      document.getElementById("line4").innerHTML = latlonline;
      document.getElementById("line5").innerHTML = minheightline;
      document.getElementById("line6").innerHTML = maxsfcwline;
      document.getElementById("line7").innerHTML = bearingsfcline;
      document.getElementById("line8").innerHTML = maxflwline;
      document.getElementById("line9").innerHTML = bearingflline;
      document.getElementById("line10").innerHTML = minpline;
//      document.getElementById("line11").innerHTML = maxtempoline;
//      document.getElementById("line12").innerHTML = maxtempiline;
//      document.getElementById("line13").innerHTML = dewpointline;
      document.getElementById("line14").innerHTML = eyetypeline;
      document.getElementById("line15").innerHTML = eyeformline;
      document.getElementById("line16").innerHTML = fixline;
      document.getElementById("line17").innerHTML = fixaccline;
      document.getElementById("line18").innerHTML = remarksline;
   }
-->
</script>
</head>
<body onload="clearit()">
<center>
<b>Copy and paste recon report in this box:</b> (Reports available
<a target="_blank" href="http://www.nhc.noaa.gov/text/MIAREPNT2.shtml">here</a>)<br>
<textarea id="report" style="width:275px;height:150px"></textarea><br>
<input type="button" id="submit" value="Decode" onclick="decode()">
<input type="button" id="clear" value="Clear" onclick="clearit()">
<br><hr>
<div id="line18"></div>
<div id="line1"></div>
<div id="line2"></div>
<div id="line3"></div>
<div id="line4"></div>
<div id="line5"></div>
<div id="line6"></div>
<div id="line7"></div>
<div id="line8"></div>
<div id="line9"></div>
<div id="line10"></div>
<div id="line11"></div>
<div id="line12"></div>
<div id="line13"></div>
<div id="line14"></div>
<div id="line15"></div>
<div id="line16"></div>
<div id="line17"></div>
</center>
</body>
</html>

Oh, ok I see now! :lol:
0 likes   

User avatar
HURAKAN
Professional-Met
Professional-Met
Posts: 46086
Age: 38
Joined: Thu May 20, 2004 4:34 pm
Location: Key West, FL
Contact:

#9 Postby HURAKAN » Fri Jul 15, 2005 11:44 pm

I never thought it was so easy to decode! :lol:
0 likes   

User avatar
Swimdude
Category 5
Category 5
Posts: 2270
Joined: Mon Jul 26, 2004 11:57 am
Location: Houston, TX

#10 Postby Swimdude » Sat Jul 16, 2005 12:07 am

What in the blazing heck was all that mess? ^
0 likes   

rtd2
Category 5
Category 5
Posts: 1183
Joined: Tue Aug 12, 2003 12:45 pm
Location: Biloxi, MS

#11 Postby rtd2 » Sat Jul 16, 2005 1:34 am

mobilebay wrote:
ericinmia wrote:

Code: Select all

<html>
<head>
<title>Hurricane Decoder</title>
<script>
<!--
var headerline1;
var headerline2;
var timeline;
var latlonline;
var minheightline;
var maxsfcwline;
var bearingsfcline;
var maxflwline;
var bearingflline;
var minpline;
var maxtempoline;
var maxtempiline;
var dewpointline;
var eyetypeline;
var eyeformline;
var fixline;
var fixaccline;
var remarksline;
var readpline = false;

   function clearit()
   {
      document.getElementById("report").value = "";
      document.getElementById("report").select();
   }
   
   function round2(innum)
   {
      var answer;

      answer = Math.round(innum*100);
      return answer/100.0;
   }

   function analyze(intext)
   {
      if (intext.indexOf("URNT12") != -1) {headerline1 = intext; return;}
      if ((intext.indexOf("VORTEX") != -1) && (intext.indexOf("MESSAGE") != -1)) {headerline2 = intext; return;}
      if (intext.substring(0,2) == "A.") {timeline = intext; return;}
      if (intext.substring(0,2) == "B.") {latlonline = intext; return;}
      if (intext.substring(0,2) == "C.") {minheightline = intext; return;}
      if (intext.substring(0,2) == "D.") {maxsfcwline = intext; return;}
      if (intext.substring(0,2) == "E.") {bearingsfcline = intext; return;}
      if (intext.substring(0,2) == "F.") {maxflwline = intext; return;}
      if (intext.substring(0,2) == "G.") {bearingflline = intext; return;}
      if (intext.substring(0,2) == "H.") {minpline = intext; return;}
      if (intext.substring(0,2) == "I.") {maxtempoline = intext; return;}
      if (intext.substring(0,2) == "J.") {maxtempiline = intext; return;}
      if (intext.substring(0,2) == "K.") {dewpointline = intext; return;}
      if (intext.substring(0,2) == "L.") {eyetypeline = intext; return;}
      if (intext.substring(0,2) == "M.") {eyeformline = intext; return;}
      if (intext.substring(0,2) == "N.") {fixline = intext; return;}
      if (intext.substring(0,2) == "O.") {fixaccline = intext; return;}
      if (intext.substring(0,2) == "P.") {remarksline = intext; readpline = true; return;}
      if ((intext.indexOf("DEG") != -1) && (intext.indexOf("MIN") != -1)) {latlonline = latlonline+intext; return;}
      if (readpline) {remarksline = remarksline + intext; return;}
      return;
   }

   function fixtime(intime)
   {
      var nowtime = new Date();
      var utctimeval;
      var localtimeval;
      var marker = intime.indexOf("/");
      var thehour, theminute, theday, theyear;
      var newtimes;
      
      // Fix for date of 1st in UTC, but 30/31 in local
      theday = intime.substring(marker-2,marker);
      thehour = intime.substring(marker+1,marker+3);
      theminute = intime.substring(marker+3,marker+5);
      if (nowtime.getFullYear) theyear = nowtime.getFullYear();
      else
         theyear = (nowtime.getYear() <= 1900) ? nowtime.getYear()+1900 : nowtime.getYear();
   
      utctimeval = new Date(theyear, nowtime.getMonth(),theday,thehour,theminute);
      localtimeval = new Date(Date.UTC(theyear, nowtime.getMonth(),theday,thehour,theminute));
      if (localtimeval.getDate() != utctimeval.getDate())
      {
         if (utctimeval.getDate() == 1)
         {
            utctimeval.setMonth(utctimeval.getMonth()+1);
            localtimeval = new Date(Date.UTC(theyear, nowtime.getMonth()+1,theday,thehour,theminute));
         }
      }
      newtimes = "<b>Date/Time of Recon Report:</b> "+localtimeval.toLocaleString();
      return newtimes;
   }

   function fixlat(inline)
   {
      var existline = inline;
      var latd, latm, latdir, lond, lonm, londir;

      existline = existline.substring(3);
      latd = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+4);
      latm = existline.substring(0,existline.indexOf(" MIN"));
      existline = existline.substring(existline.indexOf(" MIN")+5);
      latdir = existline.substring(0,1);
      existline = existline.substring(1);
      lond = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+4);
      lonm = existline.substring(0,existline.indexOf(" MIN"));
      existline = existline.substring(existline.indexOf(" MIN")+5);
      londir = existline.substring(0,1);

      existline = "<b>Position of the center:</b> "+latd+"&deg;"+latm+"' "+latdir+"  "+lond+"&deg;"+lonm+"' "+londir;
      return existline;
   }

   function fixpline(intext)
   {
      var existline = intext;
      var mpress, epress;

      // Search for extrap example
      existline = existline.substring(3);
      mpress = existline.substring(0,existline.indexOf(" MB"));
      epress = round2(parseInt(mpress)*(0.02953));
      epress =
      existline = "<b>Minimum pressure: </b>"+mpress+"mb ("+epress+"in)";
      return existline;
   }

   function fixhline(intext)
   {
      var existline = intext;
      var press, height, normal;

      existline = existline.substring(3);
      if (existline.indexOf("NA") != -1) return "";
      press = existline.substring(0,existline.indexOf(" MB"));
      existline = existline.substring(existline.indexOf(" MB")+4);
      height = existline.substring(0,existline.indexOf(" M"));
      switch (parseInt(press))
      {
      case 700: normal = 3011; break;
      case 850: normal = 1457; break;
      case 925: normal = 762; break;
      default: normal = -1;
      }
      if (normal < 0) return "";

      existline = "<b>Minimum Height Measured At Standard Level Of "+press+"mb:</b> "+height+"m (Normal: "+normal+")";
      return existline;
   }

   function fixswline(intext)
   {
      var existline = intext.substring(3);
      var speed;

      if (intext.indexOf("NA") != -1) return "<b>Maximum Surface Winds Were:</b> Not Estimated";
      speed = existline.substring(0,existline.indexOf(" KT"));
      return "<b>Maximum Surface Winds Were Estimated At:</b> "+speed+"KT";
   }

   function fixsbear(intext)
   {
      var existline = intext.substring(3);
      var angle, dist;

      if (intext.indexOf("NA") != -1) return "<b>No Bearing From Center To Estimated Surface Winds Was Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      dist = existline.substring(0,existline.indexOf(" NM"));
      existline = "<b>Estimated Surface Winds Were Measured "+dist+"nm ("+dist*1.15+"miles) From Center At Bearing "+angle+"&deg;</b>";
      return existline;
   }

   function fixflwbear(intext)
   {
      var existline = intext.substring(3);
      var angle, speed;

      if (intext.indexOf("NA") != -1) return "<b>No Maximum Flight Level Winds Were Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      speed = existline.substring(0,existline.indexOf(" KT"));
      existline = "<b>Maximum Flight Level Winds Were "+speed+"KT ("+round2(speed*1.15)+"mph) From "+angle+"&deg;</b>";
      return existline;
   }

   function fixflbear(intext)
   {
      var existline = intext.substring(3);
      var angle, dist;

      if (intext.indexOf("NA") != -1) return "<b>No Bearing From Center To Maximum Flight Level Winds Was Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      dist = existline.substring(0,existline.indexOf(" NM"));
      existline = "<b>Maximum Flight Level Winds Were Measured "+dist+"nm ("+dist*1.15+"miles) From Center At Bearing "+angle+"&deg;</b>";
      return existline;
   }

   function fixeyetype(intext)
   {
      var existline = intext.substring(3);

      if (intext.indexOf("NA") != -1) return "<b>Eye Wall Was &lt; 50% Closed</b>";
      return "<b>Eye Wall Was Characterized As Being "+existline+"</b>";
   }

   function fixeyeform(intext)
   {
      var existline = intext.substring(3);

      if (intext.indexOf("NA") != -1) return "<b>Eye Did Not Have A Definable Form</b>";
      return "<b>Eye Form Was Characterized As Being "+existline+"</b>";
   }

   function fixfixline(intext)
   {
      var existline = intext.substring(3);
      var ftypes, fheights;

      ftypes = existline.substring(0,existline.indexOf("/"));
      fheights = existline.substring(existline.indexOf("/")+1);
      existline = "<b>Center Fix Established Using:</b> ";
      if (ftypes.indexOf("1") != -1) existline = existline + "Penetration ";
      if (ftypes.indexOf("2") != -1) existline = existline + "Radar ";
      if (ftypes.indexOf("3") != -1) existline = existline + "Wind ";
      if (ftypes.indexOf("4") != -1) existline = existline + "Pressure ";
      if (ftypes.indexOf("5") != -1) existline = existline + "Temperature ";
      existline = existline + "<br><b>Center Fix Established At Level(s):</b> ";
      if (fheights.indexOf("0") != -1) existline = existline + "Surface ";
      if (fheights.indexOf("1") != -1) existline = existline + "1500ft ";
      if (fheights.indexOf("8") != -1) existline = existline + "850mb ";
      if (fheights.indexOf("7") != -1) existline = existline + "700mb ";
      if (fheights.indexOf("5") != -1) existline = existline + "500mb ";
      if (fheights.indexOf("4") != -1) existline = existline + "400mb ";
      if (fheights.indexOf("3") != -1) existline = existline + "300mb ";
      if (fheights.indexOf("2") != -1) existline = existline + "200mb ";
      if (fheights.indexOf("9") != -1) existline = existline + "925mb ";
      return existline;
   }

   function fixacc(intext)
   {
      var existline = intext.substring(3);
      var navacc, metacc;

      navacc = existline.substring(0,existline.indexOf("/"));
      metacc = existline.substring(existline.indexOf("/")+1);
      return "<b>Navigational Accuracy Measured At "+parseFloat(navacc)+"nm</b><br><b>Meteorological Accuracy Measured At "+parseFloat(metacc)+"nm</b>";
   }

   function fixremarks(intext)
   {
      var existline = intext.substring(3);
      var plane, planenum, msncnt, depnum, ocean, storm;

      plane = existline.substring(0,existline.indexOf(" "));
      if (plane.indexOf("AF") != -1)
      {
         planenum = plane.substring(2);
         plane = plane.substring(0,2);
      }
      else
      {
         planenum = plane.substring(4);
         plane = plane.substring(0,4);
      }
      existline = existline.substring(existline.indexOf(" ")+1);
      msncnt = existline.substring(0,2);
      existline = existline.substring(2);
      depnum = existline.substring(0,2);
      existline = existline.substring(2);
      ocean = existline.substring(0,1);
      switch (ocean)
      {
      case "A": ocean = "Atlantic Ocean"; break;
      case "E": ocean = "Eastern Pacific Ocean"; break;
      case "C": ocean = "Central Pacific Ocean"; break;
      }
      existline = existline.substring(2);
      storm = existline.substring(0,existline.indexOf(" "));
      existline = "<b>Storm "+storm+": Observed By "+plane+" #"+planenum+"</b><br><b>Storm #"+depnum+" in "+ocean+"</b>";
      return existline;
   }

   function cleanup()
   {
      if (timeline != "") timeline = fixtime(timeline);
      if (latlonline != "") latlonline = fixlat(latlonline);
      if (minpline != "") minpline = fixpline(minpline);
      if (minheightline != "") minheightline = fixhline(minheightline);
      if (maxsfcwline != "") maxsfcwline = fixswline(maxsfcwline);
      if (bearingsfcline != "") bearingsfcline = fixsbear(bearingsfcline);
      if (maxflwline != "") maxflwline = fixflwbear(maxflwline);
      if (bearingflline != "") bearingflline = fixflbear(bearingflline);
      if (eyetypeline != "") eyetypeline = fixeyetype(eyetypeline);
      if (eyeformline != "") eyeformline = fixeyeform(eyeformline);
      if (fixline != "") fixline = fixfixline(fixline);
      if (fixaccline != "") fixaccline = fixacc(fixaccline);
      if (remarksline != "") remarksline = fixremarks(remarksline);
   }

   function decode()
   {
      var dtext;
      var subline;
      var nextcut;

      dtext = document.getElementById("report").value;
      dtext = dtext.toUpperCase();
      nextcut = dtext.indexOf("\n");
      while (nextcut != -1)
      {
         subline = dtext.substring(0,nextcut);
         analyze(subline);
         dtext = dtext.substring(nextcut+1);
         nextcut = dtext.indexOf("\n");
      }
      cleanup();
//      document.getElementById("line1").innerHTML = headerline1;
//      document.getElementById("line2").innerHTML = headerline2;
      document.getElementById("line3").innerHTML = timeline;
      document.getElementById("line4").innerHTML = latlonline;
      document.getElementById("line5").innerHTML = minheightline;
      document.getElementById("line6").innerHTML = maxsfcwline;
      document.getElementById("line7").innerHTML = bearingsfcline;
      document.getElementById("line8").innerHTML = maxflwline;
      document.getElementById("line9").innerHTML = bearingflline;
      document.getElementById("line10").innerHTML = minpline;
//      document.getElementById("line11").innerHTML = maxtempoline;
//      document.getElementById("line12").innerHTML = maxtempiline;
//      document.getElementById("line13").innerHTML = dewpointline;
      document.getElementById("line14").innerHTML = eyetypeline;
      document.getElementById("line15").innerHTML = eyeformline;
      document.getElementById("line16").innerHTML = fixline;
      document.getElementById("line17").innerHTML = fixaccline;
      document.getElementById("line18").innerHTML = remarksline;
   }
-->
</script>
</head>
<body onload="clearit()">
<center>
<b>Copy and paste recon report in this box:</b> (Reports available
<a target="_blank" href="http://www.nhc.noaa.gov/text/MIAREPNT2.shtml">here</a>)<br>
<textarea id="report" style="width:275px;height:150px"></textarea><br>
<input type="button" id="submit" value="Decode" onclick="decode()">
<input type="button" id="clear" value="Clear" onclick="clearit()">
<br><hr>
<div id="line18"></div>
<div id="line1"></div>
<div id="line2"></div>
<div id="line3"></div>
<div id="line4"></div>
<div id="line5"></div>
<div id="line6"></div>
<div id="line7"></div>
<div id="line8"></div>
<div id="line9"></div>
<div id="line10"></div>
<div id="line11"></div>
<div id="line12"></div>
<div id="line13"></div>
<div id="line14"></div>
<div id="line15"></div>
<div id="line16"></div>
<div id="line17"></div>
</center>
</body>
</html>

Oh, ok I see now! :lol:



Well thats No jog or wobble this confirms WNW TURN!
0 likes   

User avatar
senorpepr
Military Met/Moderator
Military Met/Moderator
Posts: 12542
Age: 43
Joined: Fri Aug 22, 2003 9:22 pm
Location: Mackenbach, Germany
Contact:

Re: Satellite blackouts???

#12 Postby senorpepr » Thu Jul 21, 2005 8:47 pm

FritzPaul wrote:PS I'm working on a beta Java program to decode recon, so maybe I can help those who do it by hand! 8-)


Although there are javascripts written for vortex ans supplementary vortex messages, a recco, dropsonde, and minob decoder would be AWESOME! I'd build one, but I'm not familiar with javascript at all. Matter of fact, if you (or anyone) can make it happen, I'd like to put it on the S2K Recon Page.
0 likes   

User avatar
huricanwatcher
Category 3
Category 3
Posts: 893
Age: 65
Joined: Sat Sep 13, 2003 6:09 pm
Location: Kirkwood NY
Contact:

#13 Postby huricanwatcher » Thu Jul 21, 2005 8:57 pm

so glad you all understand all that...... what a waste of space....

please explain
0 likes   

User avatar
HurricaneQueen
S2K Supporter
S2K Supporter
Posts: 1011
Age: 80
Joined: Sat Oct 12, 2002 7:36 pm
Location: No. Naples, Fl (Vanderbilt Beach area)

#14 Postby HurricaneQueen » Thu Jul 21, 2005 9:00 pm

Wow, Eric,

I am majorly impressed!!!! :D

Lynn
0 likes   
GO FLORIDA GATORS

ericinmia
S2K Supporter
S2K Supporter
Posts: 1573
Joined: Fri Sep 12, 2003 11:15 pm
Location: Miami Lakes, FL

Re: Satellite blackouts???

#15 Postby ericinmia » Thu Jul 21, 2005 9:33 pm

senorpepr wrote:
FritzPaul wrote:PS I'm working on a beta Java program to decode recon, so maybe I can help those who do it by hand! 8-)


Although there are javascripts written for vortex ans supplementary vortex messages, a recco, dropsonde, and minob decoder would be AWESOME! I'd build one, but I'm not familiar with javascript at all. Matter of fact, if you (or anyone) can make it happen, I'd like to put it on the S2K Recon Page.


Thanks...

If you can get me the standard layout for the ones you want, i'll code it for you as time allows.

I like how it was quoted for accuracy and space so many times.... lol
-Eric
0 likes   

Brent
S2K Supporter
S2K Supporter
Posts: 38266
Age: 37
Joined: Sun May 16, 2004 10:30 pm
Location: Tulsa Oklahoma
Contact:

#16 Postby Brent » Thu Jul 21, 2005 9:38 pm

ericinmia wrote:

Code: Select all

<html>
<head>
<title>Hurricane Decoder</title>
<script>
<!--
var headerline1;
var headerline2;
var timeline;
var latlonline;
var minheightline;
var maxsfcwline;
var bearingsfcline;
var maxflwline;
var bearingflline;
var minpline;
var maxtempoline;
var maxtempiline;
var dewpointline;
var eyetypeline;
var eyeformline;
var fixline;
var fixaccline;
var remarksline;
var readpline = false;

   function clearit()
   {
      document.getElementById("report").value = "";
      document.getElementById("report").select();
   }
   
   function round2(innum)
   {
      var answer;

      answer = Math.round(innum*100);
      return answer/100.0;
   }

   function analyze(intext)
   {
      if (intext.indexOf("URNT12") != -1) {headerline1 = intext; return;}
      if ((intext.indexOf("VORTEX") != -1) && (intext.indexOf("MESSAGE") != -1)) {headerline2 = intext; return;}
      if (intext.substring(0,2) == "A.") {timeline = intext; return;}
      if (intext.substring(0,2) == "B.") {latlonline = intext; return;}
      if (intext.substring(0,2) == "C.") {minheightline = intext; return;}
      if (intext.substring(0,2) == "D.") {maxsfcwline = intext; return;}
      if (intext.substring(0,2) == "E.") {bearingsfcline = intext; return;}
      if (intext.substring(0,2) == "F.") {maxflwline = intext; return;}
      if (intext.substring(0,2) == "G.") {bearingflline = intext; return;}
      if (intext.substring(0,2) == "H.") {minpline = intext; return;}
      if (intext.substring(0,2) == "I.") {maxtempoline = intext; return;}
      if (intext.substring(0,2) == "J.") {maxtempiline = intext; return;}
      if (intext.substring(0,2) == "K.") {dewpointline = intext; return;}
      if (intext.substring(0,2) == "L.") {eyetypeline = intext; return;}
      if (intext.substring(0,2) == "M.") {eyeformline = intext; return;}
      if (intext.substring(0,2) == "N.") {fixline = intext; return;}
      if (intext.substring(0,2) == "O.") {fixaccline = intext; return;}
      if (intext.substring(0,2) == "P.") {remarksline = intext; readpline = true; return;}
      if ((intext.indexOf("DEG") != -1) && (intext.indexOf("MIN") != -1)) {latlonline = latlonline+intext; return;}
      if (readpline) {remarksline = remarksline + intext; return;}
      return;
   }

   function fixtime(intime)
   {
      var nowtime = new Date();
      var utctimeval;
      var localtimeval;
      var marker = intime.indexOf("/");
      var thehour, theminute, theday, theyear;
      var newtimes;
      
      // Fix for date of 1st in UTC, but 30/31 in local
      theday = intime.substring(marker-2,marker);
      thehour = intime.substring(marker+1,marker+3);
      theminute = intime.substring(marker+3,marker+5);
      if (nowtime.getFullYear) theyear = nowtime.getFullYear();
      else
         theyear = (nowtime.getYear() <= 1900) ? nowtime.getYear()+1900 : nowtime.getYear();
   
      utctimeval = new Date(theyear, nowtime.getMonth(),theday,thehour,theminute);
      localtimeval = new Date(Date.UTC(theyear, nowtime.getMonth(),theday,thehour,theminute));
      if (localtimeval.getDate() != utctimeval.getDate())
      {
         if (utctimeval.getDate() == 1)
         {
            utctimeval.setMonth(utctimeval.getMonth()+1);
            localtimeval = new Date(Date.UTC(theyear, nowtime.getMonth()+1,theday,thehour,theminute));
         }
      }
      newtimes = "<b>Date/Time of Recon Report:</b> "+localtimeval.toLocaleString();
      return newtimes;
   }

   function fixlat(inline)
   {
      var existline = inline;
      var latd, latm, latdir, lond, lonm, londir;

      existline = existline.substring(3);
      latd = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+4);
      latm = existline.substring(0,existline.indexOf(" MIN"));
      existline = existline.substring(existline.indexOf(" MIN")+5);
      latdir = existline.substring(0,1);
      existline = existline.substring(1);
      lond = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+4);
      lonm = existline.substring(0,existline.indexOf(" MIN"));
      existline = existline.substring(existline.indexOf(" MIN")+5);
      londir = existline.substring(0,1);

      existline = "<b>Position of the center:</b> "+latd+"&deg;"+latm+"' "+latdir+"  "+lond+"&deg;"+lonm+"' "+londir;
      return existline;
   }

   function fixpline(intext)
   {
      var existline = intext;
      var mpress, epress;

      // Search for extrap example
      existline = existline.substring(3);
      mpress = existline.substring(0,existline.indexOf(" MB"));
      epress = round2(parseInt(mpress)*(0.02953));
      epress =
      existline = "<b>Minimum pressure: </b>"+mpress+"mb ("+epress+"in)";
      return existline;
   }

   function fixhline(intext)
   {
      var existline = intext;
      var press, height, normal;

      existline = existline.substring(3);
      if (existline.indexOf("NA") != -1) return "";
      press = existline.substring(0,existline.indexOf(" MB"));
      existline = existline.substring(existline.indexOf(" MB")+4);
      height = existline.substring(0,existline.indexOf(" M"));
      switch (parseInt(press))
      {
      case 700: normal = 3011; break;
      case 850: normal = 1457; break;
      case 925: normal = 762; break;
      default: normal = -1;
      }
      if (normal < 0) return "";

      existline = "<b>Minimum Height Measured At Standard Level Of "+press+"mb:</b> "+height+"m (Normal: "+normal+")";
      return existline;
   }

   function fixswline(intext)
   {
      var existline = intext.substring(3);
      var speed;

      if (intext.indexOf("NA") != -1) return "<b>Maximum Surface Winds Were:</b> Not Estimated";
      speed = existline.substring(0,existline.indexOf(" KT"));
      return "<b>Maximum Surface Winds Were Estimated At:</b> "+speed+"KT";
   }

   function fixsbear(intext)
   {
      var existline = intext.substring(3);
      var angle, dist;

      if (intext.indexOf("NA") != -1) return "<b>No Bearing From Center To Estimated Surface Winds Was Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      dist = existline.substring(0,existline.indexOf(" NM"));
      existline = "<b>Estimated Surface Winds Were Measured "+dist+"nm ("+dist*1.15+"miles) From Center At Bearing "+angle+"&deg;</b>";
      return existline;
   }

   function fixflwbear(intext)
   {
      var existline = intext.substring(3);
      var angle, speed;

      if (intext.indexOf("NA") != -1) return "<b>No Maximum Flight Level Winds Were Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      speed = existline.substring(0,existline.indexOf(" KT"));
      existline = "<b>Maximum Flight Level Winds Were "+speed+"KT ("+round2(speed*1.15)+"mph) From "+angle+"&deg;</b>";
      return existline;
   }

   function fixflbear(intext)
   {
      var existline = intext.substring(3);
      var angle, dist;

      if (intext.indexOf("NA") != -1) return "<b>No Bearing From Center To Maximum Flight Level Winds Was Measured</b>";
      angle = existline.substring(0,existline.indexOf(" DEG"));
      existline = existline.substring(existline.indexOf(" DEG")+5);
      dist = existline.substring(0,existline.indexOf(" NM"));
      existline = "<b>Maximum Flight Level Winds Were Measured "+dist+"nm ("+dist*1.15+"miles) From Center At Bearing "+angle+"&deg;</b>";
      return existline;
   }

   function fixeyetype(intext)
   {
      var existline = intext.substring(3);

      if (intext.indexOf("NA") != -1) return "<b>Eye Wall Was &lt; 50% Closed</b>";
      return "<b>Eye Wall Was Characterized As Being "+existline+"</b>";
   }

   function fixeyeform(intext)
   {
      var existline = intext.substring(3);

      if (intext.indexOf("NA") != -1) return "<b>Eye Did Not Have A Definable Form</b>";
      return "<b>Eye Form Was Characterized As Being "+existline+"</b>";
   }

   function fixfixline(intext)
   {
      var existline = intext.substring(3);
      var ftypes, fheights;

      ftypes = existline.substring(0,existline.indexOf("/"));
      fheights = existline.substring(existline.indexOf("/")+1);
      existline = "<b>Center Fix Established Using:</b> ";
      if (ftypes.indexOf("1") != -1) existline = existline + "Penetration ";
      if (ftypes.indexOf("2") != -1) existline = existline + "Radar ";
      if (ftypes.indexOf("3") != -1) existline = existline + "Wind ";
      if (ftypes.indexOf("4") != -1) existline = existline + "Pressure ";
      if (ftypes.indexOf("5") != -1) existline = existline + "Temperature ";
      existline = existline + "<br><b>Center Fix Established At Level(s):</b> ";
      if (fheights.indexOf("0") != -1) existline = existline + "Surface ";
      if (fheights.indexOf("1") != -1) existline = existline + "1500ft ";
      if (fheights.indexOf("8") != -1) existline = existline + "850mb ";
      if (fheights.indexOf("7") != -1) existline = existline + "700mb ";
      if (fheights.indexOf("5") != -1) existline = existline + "500mb ";
      if (fheights.indexOf("4") != -1) existline = existline + "400mb ";
      if (fheights.indexOf("3") != -1) existline = existline + "300mb ";
      if (fheights.indexOf("2") != -1) existline = existline + "200mb ";
      if (fheights.indexOf("9") != -1) existline = existline + "925mb ";
      return existline;
   }

   function fixacc(intext)
   {
      var existline = intext.substring(3);
      var navacc, metacc;

      navacc = existline.substring(0,existline.indexOf("/"));
      metacc = existline.substring(existline.indexOf("/")+1);
      return "<b>Navigational Accuracy Measured At "+parseFloat(navacc)+"nm</b><br><b>Meteorological Accuracy Measured At "+parseFloat(metacc)+"nm</b>";
   }

   function fixremarks(intext)
   {
      var existline = intext.substring(3);
      var plane, planenum, msncnt, depnum, ocean, storm;

      plane = existline.substring(0,existline.indexOf(" "));
      if (plane.indexOf("AF") != -1)
      {
         planenum = plane.substring(2);
         plane = plane.substring(0,2);
      }
      else
      {
         planenum = plane.substring(4);
         plane = plane.substring(0,4);
      }
      existline = existline.substring(existline.indexOf(" ")+1);
      msncnt = existline.substring(0,2);
      existline = existline.substring(2);
      depnum = existline.substring(0,2);
      existline = existline.substring(2);
      ocean = existline.substring(0,1);
      switch (ocean)
      {
      case "A": ocean = "Atlantic Ocean"; break;
      case "E": ocean = "Eastern Pacific Ocean"; break;
      case "C": ocean = "Central Pacific Ocean"; break;
      }
      existline = existline.substring(2);
      storm = existline.substring(0,existline.indexOf(" "));
      existline = "<b>Storm "+storm+": Observed By "+plane+" #"+planenum+"</b><br><b>Storm #"+depnum+" in "+ocean+"</b>";
      return existline;
   }

   function cleanup()
   {
      if (timeline != "") timeline = fixtime(timeline);
      if (latlonline != "") latlonline = fixlat(latlonline);
      if (minpline != "") minpline = fixpline(minpline);
      if (minheightline != "") minheightline = fixhline(minheightline);
      if (maxsfcwline != "") maxsfcwline = fixswline(maxsfcwline);
      if (bearingsfcline != "") bearingsfcline = fixsbear(bearingsfcline);
      if (maxflwline != "") maxflwline = fixflwbear(maxflwline);
      if (bearingflline != "") bearingflline = fixflbear(bearingflline);
      if (eyetypeline != "") eyetypeline = fixeyetype(eyetypeline);
      if (eyeformline != "") eyeformline = fixeyeform(eyeformline);
      if (fixline != "") fixline = fixfixline(fixline);
      if (fixaccline != "") fixaccline = fixacc(fixaccline);
      if (remarksline != "") remarksline = fixremarks(remarksline);
   }

   function decode()
   {
      var dtext;
      var subline;
      var nextcut;

      dtext = document.getElementById("report").value;
      dtext = dtext.toUpperCase();
      nextcut = dtext.indexOf("\n");
      while (nextcut != -1)
      {
         subline = dtext.substring(0,nextcut);
         analyze(subline);
         dtext = dtext.substring(nextcut+1);
         nextcut = dtext.indexOf("\n");
      }
      cleanup();
//      document.getElementById("line1").innerHTML = headerline1;
//      document.getElementById("line2").innerHTML = headerline2;
      document.getElementById("line3").innerHTML = timeline;
      document.getElementById("line4").innerHTML = latlonline;
      document.getElementById("line5").innerHTML = minheightline;
      document.getElementById("line6").innerHTML = maxsfcwline;
      document.getElementById("line7").innerHTML = bearingsfcline;
      document.getElementById("line8").innerHTML = maxflwline;
      document.getElementById("line9").innerHTML = bearingflline;
      document.getElementById("line10").innerHTML = minpline;
//      document.getElementById("line11").innerHTML = maxtempoline;
//      document.getElementById("line12").innerHTML = maxtempiline;
//      document.getElementById("line13").innerHTML = dewpointline;
      document.getElementById("line14").innerHTML = eyetypeline;
      document.getElementById("line15").innerHTML = eyeformline;
      document.getElementById("line16").innerHTML = fixline;
      document.getElementById("line17").innerHTML = fixaccline;
      document.getElementById("line18").innerHTML = remarksline;
   }
-->
</script>
</head>
<body onload="clearit()">
<center>
<b>Copy and paste recon report in this box:</b> (Reports available
<a target="_blank" href="http://www.nhc.noaa.gov/text/MIAREPNT2.shtml">here</a>)<br>
<textarea id="report" style="width:275px;height:150px"></textarea><br>
<input type="button" id="submit" value="Decode" onclick="decode()">
<input type="button" id="clear" value="Clear" onclick="clearit()">
<br><hr>
<div id="line18"></div>
<div id="line1"></div>
<div id="line2"></div>
<div id="line3"></div>
<div id="line4"></div>
<div id="line5"></div>
<div id="line6"></div>
<div id="line7"></div>
<div id="line8"></div>
<div id="line9"></div>
<div id="line10"></div>
<div id="line11"></div>
<div id="line12"></div>
<div id="line13"></div>
<div id="line14"></div>
<div id="line15"></div>
<div id="line16"></div>
<div id="line17"></div>
</center>
</body>
</html>


Huh??? What is all this mess???
0 likes   
#neversummer

ericinmia
S2K Supporter
S2K Supporter
Posts: 1573
Joined: Fri Sep 12, 2003 11:15 pm
Location: Miami Lakes, FL

#17 Postby ericinmia » Thu Jul 21, 2005 9:55 pm

It decodes this:

Code: Select all

000
URNT12 KNHC 212359
VORTEX DATA MESSAGE
A. 21/23:15:10Z
B. 25 deg 40 min N
  075 deg 51 min W
C. NA  mb NA   m
D. 35  kt
E. 311 deg 024 nm
F. 047 deg 021 kt
G. 302 deg 015 nm
H. EXTRAP 1009 mb
I.  23 C/ 310  m
J.  24 C/  302 m
K.  22 C/ NA
L. NA
M. NA
N. 12345/ 1
O. 0.02 / 1  nm
P. AF307 01EEA INVEST       OB 20
MAX FL WIND 45 KT E QUAD 22:31:00 Z
SLP EXTRAP FROM 1500 FT.
POORLY DEFINED CENTER ON RADAR.


To this:

Code: Select all

Storm INVEST: Observed By AF #307
Storm #EE in Atlantic Ocean
Date/Time of Recon Report: NaN
Position of the center: 25° 40' N 075° 51' W
Maximum Surface Winds Were Estimated At: 35 KT
Estimated Surface Winds Were Measured 024nm (27.599999999999998miles) From Center At Bearing 311°
Maximum Flight Level Winds Were 021KT (24.15mph) From 047°
Maximum Flight Level Winds Were Measured 015nm (17.25miles) From Center At Bearing 302°
Minimum pressure: EXTRAP 1009mb (NaNin)
Eye Wall Was < 50% Closed
Eye Did Not Have A Definable Form
Center Fix Established Using: Penetration Radar Wind Pressure Temperature
Center Fix Established At Level(s): 1500ft
Navigational Accuracy Measured At 0.02nm
Meteorological Accuracy Measured At 1nm
0 likes   

kevin

#18 Postby kevin » Thu Jul 21, 2005 10:04 pm

That is computer source code. Javascript which is a programming language..

Just because you don't get something doesn't mean its a mess or a waste of space. :larrow:

The people who were being silly were the ones who quoted the entire thing. I know its because they click the quote button on the thread page, but really if you copy and paste something into the new reply box, and they select what you want quoted (hopefully something like this:

<html>
<head>
<title> Hurricane Decoder </title>
.... snipped for space


What the heck is this crazy bizzare way of speaking?

<<

It would be helpful.
0 likes   


Return to “Talkin' Tropics”

Who is online

Users browsing this forum: No registered users and 204 guests