[ncl-talk] Reading in .ieeer8 file and plotting it with NCL
Dennis Shea
shea at ucar.edu
Mon Jan 9 15:33:22 MST 2017
There are 'variables that contain coordinates' and 'coordinate variables'.
Coordinate Variables (CVs) are one-dimensional and contain montonicall
{in/de}creasing numerical values. Think 'rectilinear grid'. The
'copy_VarCoords' applies only to this strict subset of coordinates.
===
Looking at the SFWF variable:
float SFWF(time, nlat, nlon) ;
SFWF:long_name = "Virtual Salt Flux in FW Flux formulation"
;
SFWF:units = "kg/m^2/s" ;
SFWF:coordinates = "TLONG TLAT time" ; <*****************
SFWF:grid_loc = "2110" ;
SFWF:cell_methods = "time: mean" ;
SFWF:_FillValue = 9.96921e+36f ;
SFWF:missing_value = 9.96921e+36f ;
===
REPLACE:
************************************************************
; Copy variable attributes to the binary data
;************************************************************
printVarSummary(flx)
copyVarMeta(sfwf,flx)
WITH
tlat = f->TLAT
ltlon = f->TLON
=======================
then, in your graphics code
res at lat2d = lat2d
res at lon2d = lon2d
+++++++++++++++++++++++++
http://www.ncl.ucar.edu/Applications/
Under "Models" ... Click CESM: POP
There are numerous examples of plotting this type of data.
HTH
D
On Mon, Jan 9, 2017 at 9:46 AM, Hughlett, Taylor M <taylor.hughlett at uta.edu>
wrote:
> Hi Dennis,
>
> I finally got around to doing this. I am attempting to copy over metadata
> from the lat/lon coordinates in a netCDF file to the flx variable in the
> binary file, but it tells me the syntax is wrong? I followed the examples
> on the website…
>
> Here is the full script with the area of concern highlighted:
>
> ;************************************************************
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
> ;************************************************************
>
> begin
>
> ;************************************************************
> ; Set file paths
> ;************************************************************
>
> fileb = "sfwf_mm_PHC2_salx_flxio_20090205.ieeer8"
> dirb = "/glade/p/work/hughlett/PETM/paleo_setup/ocn/sfwf/"
> pathb = dirb+fileb
>
> reffl = "b.e12.B1850CN.PETM8x.f09_g16.pop.h.0001-01.nc"
> refflpath = "/glade/scratch/hughlett/csm/b.e12.B1850CN.PETM8x.f09_g16/
> ocn/hist/"
> refpth = refflpath+reffl
>
> pltnm = "bin_sfwf_mm_PHC2_salx_flxio_20090205"
> pltdir = "/glade/scratch/hughlett/plots/b.e12.B1850CN.PETM8x.
> f09_g16/ocn/horizontal/"
> pltpth = pltdir+pltnm
> ;************************************************************
> ; Set dimensions
> ;************************************************************
>
> ntim = 12
> nlat = 320
> nlon = 384
>
> dims = (/ntim,nlat,nlon/)
>
> ;************************************************************
> ; Open and read binary file
> ;************************************************************
>
> setfileoption("bin","ReadByteOrder","BigEndian")
> sss = fbindirread(pathb, 0, dims, "double")
> flx = fbindirread(pathb, 1, dims, "double")
>
> ;************************************************************
> ; Open and read referece file
> ;************************************************************
>
> f = addfile(refpth,"r")
> sfwf = f->SFWF
>
> ;************************************************************
> ; Copy variable attributes to the binary data
> ;************************************************************
>
> printVarSummary(flx)
>
> copyVarMeta(sfwf,flx)
>
> ;************************************************************
> ; Details of plot
> ;************************************************************
>
> field = "SFWF"
> plt_unit = "kg m ~S~-2~N~ s~S~-1~N~"
> fieldname = "Surface Freshwater Forcing"
>
> ContourMode = "ManualLevels"
> ;ContourMode = "AutomaticLevels"
> ;ContourMode = "ExplicitLevels"
> maxcn = 0.0002
> mincn = -0.0002
> ci = 0.00005
>
> ;************************************************************
> ; Set workstation and resources
> ;************************************************************
> wks = gsn_open_wks("ps",pltpth) ; open a postscript file
> gsn_define_colormap(wks,"MPL_BrBG")
>
> res = True
> res at mpProjection = "MOLLWEIDE" ; choose projection
> res at mpGridAndLimbOn = True ; turn on lat/lon lines
> res at mpPerimOn = False ; turn off box around plot
> res at mpGridLatSpacingF = 30. ; spacing for lat lines
> res at mpGridLonSpacingF = 30. ; spacing for lon lines
> res at cnFillOn = True ; Fill contours
> res at mpGridLonSpacingF = 30. ; spacing for lon lines
> res at cnFillOn = True ; Fill contours
> res at cnSmoothingOn = True
>
> ;res at mpMinLatF = 30. ; range to zoom in on
> ;res at mpMaxLatF = 60.
> ;res at mpMinLonF = 100.
> ;res at mpMaxLonF = 180.
>
> cnSmoothingTensionF = -2.5
> res at mpFillOn = False
> res at mpCenterLonF = 0
> res at cnLevelSelectionMode = ContourMode
> if(ContourMode.eq."ExplicitLevels")then
> res at cnLevels = contours
> end if
> if(ContourMode.eq."ManualLevels")then
> res at cnMaxLevelValF = maxcn
> res at cnMinLevelValF = mincn
> res at cnLevelSpacingF = ci
> end if
> res at gsnSpreadColors = True
> res at cnLinesOn = True
> res at cnLineLabelsOn = True
> res at cnLineLabelFontHeightF = 0.006
> ;res at cnLineLabelFontAspectF = 1.1
>
> res at gsnDraw = False ; Do not draw plot
> res at gsnFrame = False ; Do not advance frome
> res at tiMainFontHeightF = .03
> res at lbLabelFontHeightF = 0.012
> res at cnLineLabelFontHeightF = .006
> res at cnLineLabelBackgroundColor = "white"
> res at txFontHeightF = 0.02
> res at gsnRightString = plt_unit
> res at gsnLeftString = fieldname
> res at mpDataBaseVersion ="MediumRes"
> res at txFont = 21
> res at tiMainFont = 21
> res at tiXAxisFont = 21
> res at tiYAxisFont = 21
> res at lbLabelFont = 21
> res at tmXBLabelFont = 21
> res at tmYLLabelFont = 21
>
> ;************************************************************
> ; Plot
> ;************************************************************
>
> plot = new(1,graphic)
> plot(0) = gsn_csm_contour_map(wks,flx(1,:,:),res)
>
> end
>
> Taylor M Hughlett, Ph.D.
> UTA Earth and Environmental Sciences
> 500 Yates St.
> Geoscience Bldg Rm 117
> Arlington, TX 76013-0049
>
> From: Dennis Shea <shea at ucar.edu>
> Date: Thursday, January 5, 2017 at 12:26 PM
> To: "Hughlett, Taylor M" <taylor.hughlett at uta.edu>
> Cc: Dave Allured - NOAA Affiliate <dave.allured at noaa.gov>, "
> ncl-talk at ucar.edu" <ncl-talk at ucar.edu>
>
> Subject: Re: [ncl-talk] Reading in .ieeer8 file and plotting it with NCL
>
> ntim = 12
>
> nlat = 320
>
> mlon = 384
>
> dims = (/ntim,nlat,mlon/) ; dims(3)
>
> filb = "binary_file_name"
>
> dirb = "/dir/where_binary_file/located/"
>
> pthb = dirb+filb
>
>
> * setfileoption*("bin","ReadByteOrder","BigEndian")
>
> sss = *fbindirread*(pthb, 0, dims, "double")
>
> fx = *fbindirread*(pthb, 1, dims, "double")
>
>
>
> On Thu, Jan 5, 2017 at 10:21 AM, Hughlett, Taylor M <
> taylor.hughlett at uta.edu> wrote:
>
>> Hi Dave,
>>
>> Thank you so much for the information. I was able to track down the file
>> that has all of the descriptions I required, and am now working on reading
>> it in using NCL!
>>
>> Cheers,
>> Taylor M Hughlett, Ph.D.
>> UTA Earth and Environmental Sciences
>> 500 Yates St.
>> Geoscience Bldg Rm 117
>> Arlington, TX 76013-0049
>>
>> From: Dave Allured - NOAA Affiliate <dave.allured at noaa.gov>
>> Date: Wednesday, January 4, 2017 at 6:52 PM
>> To: "Hughlett, Taylor M" <taylor.hughlett at uta.edu>
>> Cc: "ncl-talk at ucar.edu" <ncl-talk at ucar.edu>
>> Subject: Re: [ncl-talk] Reading in .ieeer8 file and plotting it with NCL
>>
>> Taylor,
>>
>> > 2. How do I know what data is stored on the file prior
>> > to reading it in (i.e. Variables)? Or is this even possible?
>>
>> Files called "binary" without additional qualification can only be
>> understood by formal documentation, or by at least a minimal description
>> from the person who created the file. You need to get this description
>> from the source of your data. Typically there is no descriptive metadata
>> stored inside such files, and the assumption is that this description is
>> somewhere external.
>>
>> The description should include file layout details such as array sizes,
>> positions, dimension order of storage, elemental data type, byte order,
>> fortran write mode if any, and record structure if any. The description
>> should also include what variables and possibly metadata are stored. If
>> the layout details are hard to get, it can sometimes help to find out just
>> what software created the file.
>>
>> The suffix .ieeer8 says to me, "8-byte reals", because only fortran uses
>> the type name "real" instead of "float" or "floating point". A fuller type
>> description is "8-byte IEEE floating point values", but that is just a
>> guess. If correct, that would be NCL data type "double", and that does not
>> answer any of the other questions about file layout.
>>
>> --Dave
>>
>>
>> On Wed, Jan 4, 2017 at 1:47 PM, Dennis Shea <shea at ucar.edu> wrote:
>>
>>> Were the data records written by fortran or
>>> See: http://www.atmos.washington.ed
>>> u/~salathe/osx_unix/endian.html
>>>
>>> or ?????
>>>
>>> [0]
>>> The problem with binary is that someone must describe how the data was
>>> written. Fortran's default (sequential) binary has **hidden record
>>> separators**. The user could also open a binary with "access=direct". This
>>> means 'flat' binary files (no record separators.
>>>
>>> [1]
>>> Were the binary files created on a big- or little-endian system? See:
>>> https://en.wikipedia.org/wiki/Endianness
>>>
>>> [2]
>>> Likely, fbindirread *or* fbinrecread would work. However, without more
>>> knowledge not much more can be said.
>>>
>>> [3]
>>> One major reason for the creation of HDF and netCDF to allow the files
>>> to be 'blindly' examined via a suite of standard function functions.
>>>
>>>
>>>
>>> On Wed, Jan 4, 2017 at 1:30 PM, Hughlett, Taylor M <
>>> taylor.hughlett at uta.edu> wrote:
>>>
>>>> Good afternoon everyone,
>>>>
>>>> I am attempting to read in a .ieeer8 file using NCL so that it can be
>>>> plotted.
>>>>
>>>> I am completely new with binary files, so bear with me.
>>>>
>>>> I understand that this is a binary file, so visualization and reading
>>>> it is much more complicated than it would be with netCDF’s.
>>>>
>>>> After having looked over the instructions on the NCL site, I am still
>>>> having some confusion with how to get started.
>>>>
>>>> Specifically, I have these questions:
>>>>
>>>> 1. Will the fbindirread work to read in a .ieeer8 file (I am
>>>> assuming the file is fortran as it is a restart file for CESM1’s POP2)?
>>>> 2. How do I know what data is stored on the file prior to reading
>>>> it in (i.e. Variables)? Or is this even possible?
>>>>
>>>> Any help would be greatly appreciated with this, and I am happy to
>>>> provide more information if it is required.
>>>>
>>>> Thanks,
>>>> Taylor M Hughlett, Ph.D.
>>>> UTA Earth and Environmental Sciences
>>>> 500 Yates St.
>>>> Geoscience Bldg Rm 117
>>>> Arlington, TX 76013-0049
>>>>
>>>
>> _______________________________________________
>> 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/20170109/e931a897/attachment.html
More information about the ncl-talk
mailing list