[ncl-talk] reading binary data
Dennis Shea
shea at ucar.edu
Wed May 11 11:37:51 MDT 2016
The NCL equivalent of what you sent is:
nlat = 180
mlon = 360
lat = fspan(-89.5,89.5,nlat)
lon = fspan(-179.5, 179.5,mlon)
fili = "2015161_highQc_aot550_eps.dat" ; total size 259200 (=
4*nlat*mlon)
var1f = fbindirread(fili,0,(/nlat,mlon/),"float")
; or .... these are equivalent in this case
var1c = cbinread(fili,(/nlat,mlon/),"float")
============
No error messages!! Everything looks great!
...... NOT .....
The golden rule of data processing is ***Look at your data***.
============
Did you try to print the min and max values in IDL?
Likely, they would be 'nice' numbers.
Did you try to print the min and max values in NCL?
If you did, you would see
(0) min=nan max=nan
=============
IDL (Matlab too!) recognizes NaN (nan) as values to be ignored. AKA
'missing values'
NCL recognizes the netCDF _FillValue attribute. This can *not* be a NaN.
You *must* change the NaNs to a real number for NCL.
Please read the following.
http://www.ncl.ucar.edu/Document/Functions/Built-in/isnan_ieee.shtml
http://www.ncl.ucar.edu/Document/Functions/Built-in/replace_ieeenan.shtml
Add the following at the end of the above. This is one example of how to
*Look at your data* !
nNaN = num(isnan_ieee(var1f)) ; # of NaN
values
pcNaN = (tofloat(nNaN)/(nlat*mlon))*100 ; % NaN
print("nNaN="+nNaN+" pcNaN="+pcNaN+"%")
(0) nNaN=33395 pcNaN=51.5355% ; 51.5% ... more
than half
printMinMax(var1f,0) ; BEFORE
(0) min=nan max=nan
if (any(isnan_ieee(var1f))) then
value = 1.e20
replace_ieeenan (var1f, value, 0)
var1f at _FillValue = value
end if
printMinMax(var1f,0) ; AFTER
min=-0.0499198 max=3.96129
========
The _FillValue attribute is fundamental to NCL.
Please read the documentation at:
http://www.ncl.ucar.edu/Document/Manuals/
Mini-Reference Manual
The official Reference manual
http://www.ncl.ucar.edu/Document/Manuals/Ref_Manual/NclVariables.shtml#MissingValueAttribute
Also, the two DKRZ Manuals at the above site.
=================
Further, the NCL plot code you sent in thye initial email whicj I think you
cut and pasted from some example will likely not yield a nice plot.
Likely, you will have to use raster mode.
res at cnFillMode = "RasterFill" ; Raster Mode
http://www.ncl.ucar.edu/Applications/raster.shtml
On Wed, May 11, 2016 at 9:52 AM, Debasish Hazra <debasish.hazra5 at gmail.com>
wrote:
> Thanks Dennis. But it still does no produce any figures. I have attached
> the script of ncl. Found the following instruction of how to read that in
> iDL :
>
> res = 1.0 ; 1.0 degree spatial resolution
> nlon = ROUND(360./res) ; number of columns (-180,180)
> nlat = ROUND(180./res) ; number of rows (-90, 90)
> lonFirst = -180+0.5*res ; west boundary (first column)
> latFirst = -90+0.5*res ; south boundary (first row)
>
> dailyGriddedAod550 = FLTARR(nlon, nlat)
>
> date = '2015161' ; string in YYYYDDD format
>
> fileName = date+'_highQc_aot550_eps.dat'
> OPENR, lun, /GET_LUN, fileName
> READU, lun, dailyGriddedAod550
> CLOSE, lun
> FREE_LUN, lun
>
> Thanks.
> Debasish
>
> On Tue, May 10, 2016 at 4:21 PM, Dennis Shea <shea at ucar.edu> wrote:
>
>> Did you look at the size of your file??
>>
>> 259200 2015161_highQc_aot550_eps.dat
>> ^^^^^^^
>>
>> float or integer are 4 bytes
>>
>> 4*180*360 = 259200 so **one** float or integer variable
>>
>> You are using
>>
>> setfileoption("bin","readbyteorder","littleendian")
>>
>> var1 =
>> cbinread("./EPS_HQ/2015161_highQc_aot550_eps.dat",(/2,180,360/),"float")
>> var2 =
>> cbinread("./EPS_HQ/2015161_highQc_aot550_eps.dat",(/2,180,360/),"integer")
>>
>> For two integer or float variables the size should be: 259200 + 259200 =
>> 518400
>>
>> At the very least, you should have been getting an NCL error message
>> about wrong size.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Tue, May 10, 2016 at 12:32 PM, Debasish Hazra <
>> debasish.hazra5 at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I am trying to read binary data with ncl (v6.3) but not sure whether it
>>> is reading it right. Also, it does not produce any plots. Attached are the
>>> script presently working on and sample data. Any help on this is well
>>> appreciated.
>>>
>>> Thanks.
>>> Debasish.
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20160511/c3d2fa25/attachment.html
More information about the ncl-talk
mailing list