<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi folks,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m trying to retrieve some data for a subset region from the Global Real Time Ocean Forecast System (RTOFS), and I can’t figure out why I get all missing values when I try to read the data.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This seems to be the case for me even if I try to read this whole domain.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is some code:<o:p></o:p></p>
<p class="MsoNormal">------<o:p></o:p></p>
<p class="MsoNormal">; read-rtofs-dods.ncl <o:p></o:p></p>
<p class="MsoNormal">load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/cd_string.ncl"<o:p></o:p></p>
<p class="MsoNormal">; <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Dev = "png"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">;<o:p></o:p></p>
<p class="MsoNormal">myDate = 20160516<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">;NOMADS = "http://nomads.ncep.noaa.gov:9090/dods/rtofs/rtofs_global"+myDate+"/rtofs_glo_2ds_forecast_daily_prog"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">NOMADS = "http://nomads.ncep.noaa.gov:9090/dods/rtofs/rtofs_global"+myDate+"/rtofs_glo_2ds_forecast_3hrly_prog"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">filename = NOMADS ; = url <o:p></o:p></p>
<p class="MsoNormal">print("Fetching URL: ")<o:p></o:p></p>
<p class="MsoNormal">print(" "+filename)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> exists = isfilepresent(filename)<o:p></o:p></p>
<p class="MsoNormal"> if(.not.exists) then <o:p></o:p></p>
<p class="MsoNormal"> print("OPeNDAP isfilepresent test unsuccessful.")<o:p></o:p></p>
<p class="MsoNormal"> print("Either file doesn't exist, or NCL does not have OPeNDAP capabilities on this system")<o:p></o:p></p>
<p class="MsoNormal"> exit<o:p></o:p></p>
<p class="MsoNormal"> else<o:p></o:p></p>
<p class="MsoNormal"> print("OPeNDAP isfilepresent test successful.")<o:p></o:p></p>
<p class="MsoNormal"> f = addfile(filename,"r")<o:p></o:p></p>
<p class="MsoNormal"> vars = getfilevarnames(f)<o:p></o:p></p>
<p class="MsoNormal"> print(vars) ; should be (in any order): <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> if(.not.any(ismissing(vars))) then<o:p></o:p></p>
<p class="MsoNormal"> do i=0,dimsizes(vars)-1<o:p></o:p></p>
<p class="MsoNormal"> printFileVarSummary (f,vars(i))<o:p></o:p></p>
<p class="MsoNormal"> end do<o:p></o:p></p>
<p class="MsoNormal"> end if<o:p></o:p></p>
<p class="MsoNormal"> end if<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">; Define boundary of data<o:p></o:p></p>
<p class="MsoNormal">; Assign lat/lon boundaries to the data<o:p></o:p></p>
<p class="MsoNormal">; Longitudes between 0 and 74 E need to have 360 added to them<o:p></o:p></p>
<p class="MsoNormal">;<o:p></o:p></p>
<p class="MsoNormal">myNlat = 32.0<o:p></o:p></p>
<p class="MsoNormal">mySlat = 10.0<o:p></o:p></p>
<p class="MsoNormal">myWlon = 260.0<o:p></o:p></p>
<p class="MsoNormal">myElon = 300.0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">;myNlat = 26.0<o:p></o:p></p>
<p class="MsoNormal">;mySlat = 21.0<o:p></o:p></p>
<p class="MsoNormal">;myWlon = 260.0<o:p></o:p></p>
<p class="MsoNormal">;myElon = 300.0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">; Full domain <o:p></o:p></p>
<p class="MsoNormal">;myNlat = 90.0<o:p></o:p></p>
<p class="MsoNormal">;mySlat = -90.0<o:p></o:p></p>
<p class="MsoNormal">;myWlon = 74.0<o:p></o:p></p>
<p class="MsoNormal">;myElon = 434.0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">; Get lat/lon/time info first<o:p></o:p></p>
<p class="MsoNormal">lat = f->lat<o:p></o:p></p>
<p class="MsoNormal">print ("Done reading lat")<o:p></o:p></p>
<p class="MsoNormal">lon = f->lon<o:p></o:p></p>
<p class="MsoNormal">print ("Done reading lon")<o:p></o:p></p>
<p class="MsoNormal">time = f->time(0)<o:p></o:p></p>
<p class="MsoNormal">print ("Done reading time")<o:p></o:p></p>
<p class="MsoNormal">;<o:p></o:p></p>
<p class="MsoNormal">; Use just one time when "0"<o:p></o:p></p>
<p class="MsoNormal">mytime = 0<o:p></o:p></p>
<p class="MsoNormal">;mytime = ":"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Nlat = closest_val(myNlat, lat)<o:p></o:p></p>
<p class="MsoNormal">print ("Nlat = " + Nlat + " Lat = " + lat(Nlat) )<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Slat = closest_val(mySlat, lat)<o:p></o:p></p>
<p class="MsoNormal">print ("Slat = " + Slat + " Lat = " + lat(Slat) )<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Wlon = closest_val(myWlon, lon)<o:p></o:p></p>
<p class="MsoNormal">print("Wlon = " + Wlon + " Lon = " + lon(Wlon) )<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Elon = closest_val(myElon, lon)<o:p></o:p></p>
<p class="MsoNormal">print("Elon = " + Elon + " Lon = " + lon(Elon) )<o:p></o:p></p>
<p class="MsoNormal">;<o:p></o:p></p>
<p class="MsoNormal">;exit<o:p></o:p></p>
<p class="MsoNormal">;<o:p></o:p></p>
<p class="MsoNormal">mylat = lat(Slat:Nlat)<o:p></o:p></p>
<p class="MsoNormal">mylon = lon(Wlon:Elon)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">printVarSummary (mylat)<o:p></o:p></p>
<p class="MsoNormal">printVarSummary (mylon)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">print (mylat)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">;exit<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">delete(lat)<o:p></o:p></p>
<p class="MsoNormal">delete(lon)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">lat = f->lat(Slat:Nlat)<o:p></o:p></p>
<p class="MsoNormal">lon = f->lon(Wlon:Elon)<o:p></o:p></p>
<p class="MsoNormal">print ("Done reading subset lat/lon")<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">printVarSummary(lat)<o:p></o:p></p>
<p class="MsoNormal">print (lat)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">printVarSummary(lon)<o:p></o:p></p>
<p class="MsoNormal">print (lon)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">;exit<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">sst = f->sst(mytime,:,Slat:Nlat,Wlon:Elon)<o:p></o:p></p>
<p class="MsoNormal">;sst = f->sst<o:p></o:p></p>
<p class="MsoNormal">print ("Done reading sst")<o:p></o:p></p>
<p class="MsoNormal">printVarSummary(sst)<o:p></o:p></p>
<p class="MsoNormal">print (sst)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">; exit ; Uncomment to stop after sst data are read <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">u_velocity = f->u_velocity(mytime,:,Slat:Nlat,Wlon:Elon)<o:p></o:p></p>
<p class="MsoNormal">;u_velocity = f->u_velocity<o:p></o:p></p>
<p class="MsoNormal">print ("Done reading U")<o:p></o:p></p>
<p class="MsoNormal">printVarSummary(u_velocity)<o:p></o:p></p>
<p class="MsoNormal">print (u_velocity)<o:p></o:p></p>
<p class="MsoNormal">v_velocity = f->v_velocity(mytime,:,Slat:Nlat,Wlon:Elon)<o:p></o:p></p>
<p class="MsoNormal">;v_velocity = f->v_velocity<o:p></o:p></p>
<p class="MsoNormal">print ("Done reading V")<o:p></o:p></p>
<p class="MsoNormal">printVarSummary(v_velocity)<o:p></o:p></p>
<p class="MsoNormal">print (v_velocity)<o:p></o:p></p>
<p class="MsoNormal">speed = sqrt((u_velocity*u_velocity) + (v_velocity*v_velocity))<o:p></o:p></p>
<p class="MsoNormal">print ("Done calculating Speed")<o:p></o:p></p>
<p class="MsoNormal">print (speed)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">exit<o:p></o:p></p>
<p class="MsoNormal">;;;;;;<o:p></o:p></p>
<p class="MsoNormal">;;;;;; END of code snippet<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">------<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">If you run this code, I suggest a redirect into a file, as there are a lot of lines written to standard out.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">What I don’t understand is that I can read a subset of the lat and lon data, but when I try to get any other data they all come up as missing/fill values.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Any help is GREATLY appreciated and I have really chased my tail trying to get past this.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Chris Herbster<o:p></o:p></p>
<p class="MsoNormal">-- <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Dr. Christopher G. Herbster<o:p></o:p></p>
<p class="MsoNormal">Associate Professor<o:p></o:p></p>
<p class="MsoNormal">Director of Science and Technology<o:p></o:p></p>
<p class="MsoNormal">for the ERAU Weather Center<o:p></o:p></p>
<p class="MsoNormal">Applied Aviation Sciences<o:p></o:p></p>
<p class="MsoNormal">Embry-Riddle Aeronautical Univ.<o:p></o:p></p>
<p class="MsoNormal">600 S. Clyde Morris Blvd.<o:p></o:p></p>
<p class="MsoNormal">Daytona Beach, FL 32114-3900<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"> 386.226.6444 Office<o:p></o:p></p>
<p class="MsoNormal">386.226.6446 Weather Center<o:p></o:p></p>
<p class="MsoNormal">http://wx.erau.edu/<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Schedule at: http://wx.erau.edu/faculty/herbster/Schedules/<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>