[ncl-talk] About trajectories routine

Carlos Batista krlosbatist at gmail.com
Sun Dec 7 05:13:31 MST 2014


Hello Gustavo.

My files were written in Fortran, compiled in ifort. I can transform this
data into ASCII using the very FORTRAN or NetCDF using GrADS. However, do
not know if using the GrADS will work too.

Gustavo, my data are ocean variables (salinity). Therefore, I have
variables in all oceans and I would like to trace their paths, like the
example that is on the page. That means I have more than 1 trajectorie?

Gustavo, the cbinread did not work. What really works is the descriptor
fbinrecread. I tried again without the time information, as you
recommended.

Now there's one new problem. The problem arises within another command:
coordinate matrices.

See the new test:
;*******************************
carlos at carlos-Lenovo-IdeaPad-Z400-Touch:~/area/$ ncl

 Copyright (C) 1995-2013 - All Rights Reserved
 University Corporation for Atmospheric Research
 NCAR Command Language Version 6.1.2
 The use of this software is governed by a License Agreement.
 See http://www.ncl.ucar.edu/ for more details.

ncl 0> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
ncl 1> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
ncl 2> ;**************************************************
ncl 3> begin
ncl 4> ntime = 250

ncl 6>  big = fbinrecread("dados.bin",0,(/1,ntime,1/),"float")

ncl 7>  wks = gsn_open_wks("ps","traj")
ncl 8>    res            = True
ncl 9>    res at gsnDraw    = False
ncl 10>    res at gsnFrame   = False
ncl 11>    res at vpWidthF   = 0.80
ncl 12>    res at vpHeightF  = 0.80
ncl 13>    res at mpMaxLatF  = -20
ncl 14>    res at mpMinLatF  = -60
ncl 15>    res at mpMinLonF  = -75
ncl 16>    res at mpMaxLonF  = -25
ncl 17>
ncl 18>    res at tiMainString    = "Example of a trajectory plot"  ; title
ncl 19>    res at gsnCenterString = "markers every 4th time step"
ncl 20>
ncl 21>    map = gsn_csm_map_ce(wks,res)
ncl 22> ;*********************************************
ncl 23> ; trajectory parameters
ncl 24> ;*********************************************
ncl 25>    xpt = new(ntime,float)
ncl 26>    ypt = new(ntime,float)
ncl 27> traj = (/-1,-0.5,0.1,0.5,1/)
ncl 28> pres                  = True
ncl 29>    pres at gsLineThicknessF = 2.0
ncl 30>    colors= (/"red","blue","dark green","grey","magenta"/)
ncl 31>
ncl 32>    mres  = True
ncl 33>    first = True
ncl 34> ;********************************
ncl 35>    c=0
ncl 36>    do i = 0,dimsizes(traj)-1

*ncl 37>       ypt = big(2,:,traj(i))                  *

ncl 38>       xpt = big(1,:,traj(i))


ncl 40>       pres at gsLineColor = colors(c)
ncl 41>       c=c+1
ncl 42>       gsn_polyline(wks,map,xpt,ypt,pres)
ncl 44> ; add markers to the trajectories
ncl 45>
ncl 46>       mres at gsMarkerIndex  = 16
ncl 47>       mres at gsMarkerSizeF  = 4.0
ncl 48>       mres at gsMarkerColor  = "black"
ncl 49>       gsn_polymarker(wks,map,xpt(::4),ypt(::4),mres) ; draw every
4th marker
ncl 50>
ncl 51> ; create a unique marker to indicate the start of the trajectory
ncl 52>
ncl 53>       first at gsMarkerSizeF  = 8.0
ncl 54>       first at gsMarkerColor  = "green"
ncl 55>
ncl 56>       gsn_polymarker(wks,map,xpt(0),ypt(0),first)
ncl 57>       delete(first at gsMarkerColor)
ncl 58>       delete(first at gsMarkerSizeF)

ncl 59>    end do
ncl 60>    draw(map)
ncl 61>    frame(wks)
ncl 62>
ncl 63> end

warning:fbinrecread: size specified is greater than record size, filling
with missing values
fatal:Illegal subscript. Subscripts must be integer when not using
coordinate indexing
fatal:["Execute.c":8126]:Execute: *Error occurred at or near line 37*

;;;;;;;*****************************

Thanks again!

Cheers!
Carlos Batista




2014-12-06 23:10 GMT-02:00 Gustavo Correa <gus at ldeo.columbia.edu>:

> Hi Carlos
>
> Binary files are a pain.
> You need to know how they were written (Fortran or C, sequential or direct
> access, the number
> type that was written: 4-byte real, 8-byte real, 4-byte integer, etc,
> if there are record separators, etc), then choose the right function to
> read the file based
> on this information.
> Better avoid them, use self describing formats like NetCDF,
> or for small amounts of data just plain ascii.
>
> Do you know any of the information above of your data file?
> Can you at least do:
>
> ls -l dados.bin
>
> Anyway, do you have a single stream of 250 data points (ie. a single
> "trajectory")?
> If this is the case (and the error message suggests this) you should
> instruct the
> reading function to read only those 250 data points.
> It sounds as you have only one trajectory, not 100, but it is hard to tell.
> If this is the case, you need to change the example script more than just
> the data reading routine, to match the data you have.
>
> In addition, if you don't have the time information written to the file,
> you should not try to read it, ie. remove this:
> >  time= fbinrecread("dados.bin",1,(/ntime/),"float")
>
>
> Also, the error message suggests that the file was not written by Fortran,
> maybe it was written by a C program.
> Have you tried cbinread instead?
> Say, something like this:
>
> > big = cbinread("dados.bin",(/1,ntime,1/),"float")
>
>
> I hope this helps,
> Gus Correa
>
>
> On Dec 6, 2014, at 1:26 PM, Carlos Batista wrote:
>
> > Hi Gustavo, How are you?
> >
> > My file is in the binary format.
> > I have only one variable over time (250 Timesteps).
> >
> > In NCl I tried to enter the information by modifying the size of the
> read data
> > ;*******************************************************************
> > ; 1 variables x 250 x 100 Timesteps trajectories
> > Ntime = 250
> >
> > big fbinrecread = ("my_data.bin" 0, (/ 1, Ntime, 100 /), "float")
> > time = fbinrecread ("my_data.bin", 1, (/ Ntime /), "float")
> >
> > ;*********************************************************************
> >
> > Another thing I did not understand is why the existence of only 100
> trajectories. If I want more I can change this value?
> >
> > **********************************see the
> error*****************************
> >
> > carlos at carlos-Lenovo-IdeaPad-Z400-Touch:~/area/$ ncl
> >  Copyright (C) 1995-2013 - All Rights Reserved
> >  University Corporation for Atmospheric Research
> >  NCAR Command Language Version 6.1.2
> >  The use of this software is governed by a License Agreement.
> >  See http://www.ncl.ucar.edu/ for more details.
> >
> > ncl 0> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> > ncl 1> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> > ncl 2> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
> > ncl 3> begin
> > ncl 4>  ntime = 250
> > ncl 5> big = fbinrecread("dados.bin",0,(/1,ntime,100/),"float")
> >
> > ncl 6>  time= fbinrecread("dados.bin",1,(/ntime/),"float")
> >
> > ncl 7>  wks = gsn_open_wks("ps","traj")
> > ncl 8> ;*********************************************
> > ncl 9> ; color preps
> > ncl 10> ;*********************************************
> > ncl 11>   cnLevels=fspan(34.5,34.8,8)
> > ncl 12>   cmap = RGBtoCmap ("redyellowblue.rgb")
> > ncl 13>   gsn_define_colormap (wks,cmap)
> > ncl 14>
> > ncl 15>    res            = True
> > ncl 16>    res at gsnDraw    = False
> > ncl 17>    res at gsnFrame   = False
> > ncl 18>    res at vpWidthF   = 0.80
> > ncl 19>    res at vpHeightF  = 0.80
> > ncl 20>    res at mpMaxLatF  = -20
> > ncl 21>    res at mpMinLatF  = -60
> > ncl 22>    res at mpMinLonF  = -75
> > ncl 23>    res at mpMaxLonF  = -25
> > ncl 24>
> > ncl 25> ; label bar resources
> > ncl 26>    res_lb                    = True
> > ncl 27>    res_lb at vpWidthF           = 0.60
> > ncl 28>    res_lb at vpHeightF          = 0.10
> > ncl 29>    res_lb at lbPerimOn          = False
> > ncl 30>    res_lb at lbOrientation      = "Horizontal"
> > ncl 31>    res_lb at lbLabelStride      = 2
> > ncl 32>    res_lb at lbLabelAlignment   = "InteriorEdges"
> > ncl 33>    res_lb at lbFillColors       = cmap(2:,:)
> > ncl 34>    res_lb at lbMonoFillPattern  = True
> > ncl 35>    res_lb at lbLabelFontHeightF = 0.015
> > ncl 36>
> > ncl 37>    res at tiMainString    = "Trajectories colored by salinity
> (ppt)"  ; title
> > ncl 38>
> > ncl 39>    map = gsn_csm_map_ce(wks,res)
> > ncl 40> ;*********************************************
> > ncl 41> ; trajectory parameters
> > ncl 42> ;*********************************************
> > ncl 43>    xpt = new(ntime,float)
> > ncl 44>    ypt = new(ntime,float)
> > ncl 45>    traj = (/1,10,53,67,80/)
> > ncl 46>
> > ncl 47> ;*********************************************
> > ncl 48> ; some plot parameters
> > ncl 49> ;*********************************************
> > ncl 50>    pres                  = True
> > ncl 51>    pres at gsLineThicknessF = 2.0
> > ncl 52>
> > ncl 53>    mres  = True
> > ncl 54>    first = True
> > ncl 55> ;********************************
> > ncl 56>    do i = 0,dimsizes(traj)-1
> > ncl 57>       ypt = big(2,:,traj(i))
> > ncl 58>       xpt = big(1,:,traj(i))
> > ncl 59>       sst = big(8,:,traj(i))
> > ncl 60>
> > ncl 61>      do j=0,dimsizes(ypt)-2
> > ncl 62>         pres at gsLineColor=GetFillColor(cnLevels,cmap,avg(
> (/sst(j),sst(j+1)/)))
> > ncl 63>
>  gsn_polyline(wks,map,(/xpt(j),xpt(j+1)/),(/ypt(j),ypt(j+1)/),pres)
> > ncl 64>      end do
> > ncl 65>
> > ncl 66>
> > ncl 67> ; create a unique marker to indicate the start of the trajectory
> > ncl 68>
> > ncl 69>       first at gsMarkerSizeF  = 9.0
> > ncl 70>       first at gsMarkerColor  = "red"
> > ncl 71>
> > ncl 72>       gsn_polymarker(wks,map,xpt(0),ypt(0),first) ; draw start
> of traj
> > ncl 73>       delete(first at gsMarkerColor)
> > ncl 74>       delete(first at gsMarkerSizeF)
> > ncl 75>    end do
> > ncl 76>
> gsn_labelbar_ndc(wks,dimsizes(cnLevels)+1,cnLevels,0.30,0.30,res_lb)
> > ncl 77>    draw(map)
> > ncl 78>    frame(wks)
> > ncl 79>
> > ncl 80> end
> >
> > warning:fbinrecread: size specified is greater than record size, filling
> with missing values
> > fatal:fbinrecread: 0 or less than zero fortran control word, FILE NOT
> SEQUENTIAL ACCESS!
> > fatal:["Execute.c":8126]:Execute: Error occurred at or near line 6
> > **************************************************
> >
> > Thanks!
> > Carlos
> >
> >
> > 2014-12-06 16:00 GMT-02:00 Gustavo Correa <gus at ldeo.columbia.edu>:
> > Hi Carlos
> >
> > I guess it all depends on how your your input data file looks like.
> > Is it an ascii, binary, NetCDF, HDF, GRIB file?
> > NetCDF, HDF, and to some extent GRIB are self describing, and can be read
> > with NCL's "addfile" function:
> >
> > http://www.ncl.ucar.edu/Document/Functions/Built-in/addfile.shtml
> >
> > Ascii layout is easy to see directly on the file, and can be read with
> NCL's "asciiread" function:
> >
> > http://www.ncl.ucar.edu/Document/Functions/Built-in/asciiread.shtml
> >
> > Those above are in general they  easier to read than binary,
> > because the latter can vary in layout and record structure in many
> different ways.
> > But you can also read binary, with fbinread, cbinread, fbinrecread, etc,
> > although all depends on how it was written/created:
> >
> > http://www.ncl.ucar.edu/Document/Functions/io.shtml
> >
> >
> > You say
> > "I have data with just 1 variable to 250 times."
> >
> > Is it a NetCDF or HDF file?
> > Is it an ascii column file with 250 lines, one value per line?
> > Does it have a column for time also, say one "time value" pair per line?
> > Is it binary?  If binary, how is it organized?
> >
> > The example traj_1.ncl reads a file with this layout:
> > ******
> > ; note this trajectory file contains data in the form of
> > ; 9 variables x 131 timesteps x 100 trajectories
> >    ntime = 131
> >
> >    big = fbinrecread("traj.bin",0,(/9,ntime,100/),"float")
> >    time= fbinrecread("traj.bin",1,(/ntime/),"float")
> > ******
> >
> > You can change the two "fbinrecread" commands above and
> > adjust them to your input file layout, but you need to know the input
> file
> > type and layout.
> >
> > I hope this helps,
> > Gus Correa
> >
> >
> > On Dec 6, 2014, at 12:09 PM, Carlos Batista wrote:
> >
> > > Hi users
> > > My name is Carlos and I'm new in the use of NCL...
> > > I need to know what the structure of the data read by the routine
> trajectories. https://www.ncl.ucar.edu/Applications/traj.shtml ... for
> example: traj_1.ncl
> > >
> > > I have data with just 1 variable to 250 times. How can I know the
> number of trajectories of such data?
> > >
> > > Who has an example with data is read could send for me, please!
> > > _______________________________________________
> > > ncl-talk mailing list
> > > List instructions, subscriber options, unsubscribe:
> > > http://mailman.ucar.edu/mailman/listinfo/ncl-talk
> >
> > _______________________________________________
> > ncl-talk mailing list
> > List instructions, subscriber options, unsubscribe:
> > http://mailman.ucar.edu/mailman/listinfo/ncl-talk
> >
>
> _______________________________________________
> ncl-talk mailing list
> 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/20141207/08ca3c7e/attachment.html 


More information about the ncl-talk mailing list