[ncl-talk] About trajectories routine

Carlos Batista krlosbatist at gmail.com
Sun Dec 7 11:08:01 MST 2014


Hello Gustavo.

Gustavo, my data has a latitude, longitude, time and the values of my
variable.

I imagine that at each grid point (x, y, and time) there are values of
my variable
that change with time.

Which of the scripts could do the course? The traj_1.ncl or traj_2.ncl?

Could you tell me how the data should be organized for the scripts work?

With these my data: x, y variable time-varying .... is possible to trace the
trajectories of my variable?

Gustavo, sorry so many questions, but I need to understand how the script works
for trying to organize the data correctly.

Thanks!!!
Cheers!

Carlos Batista

2014-12-07 12:42 GMT-02:00 Gustavo Correa <gus at ldeo.columbia.edu>:

> Hi Carlos
>
> Something is amiss, which is hard for me to understand,
> because you didn't tell clearly what is in your data.
>
> To draw trajectories, you need the position (x,y)
> of the particles.
> You could use the salinity information *also* (as in example traj_2.ncl,
> where
> salinity values are associated to variations in the trajectory color).
> However, the fundamental information you need is position (x,y), not
> salinity itself,
> and that is what is used in example traj_1.ncl.
>
> What do you have (x,y), or do you have salinty only?
> What is in the 250 points in your file?
>
> In the example traj_1.ncl, ntime=131, the input file seems to have
> a first Fortran record (record 0) with 9 x 131 x 100 data points,
> and a second Fortran record (record 1) with 131 data points (presumably
> the time data values associated to the first record).
> The first record seems to store x (xpt) and y (ypt) coordinates in the
> big(1,:,traj(i)),
> and big(2,:,traj(i)) points of the first record in the input file.
> You see? The script uses the particle position (x,y) to draw the
> trajectories.
> It doesn't even use the salinity values (which is used only in scrpit
> traj_2.ncl,
> and seems to be stored in big(8,:,traj(i)).
>
> That is as far as I can tell from the code in those two examples (which I
> haven't run/tried).
>
> Does your file have  the salinity values only?
> If that is the case, you cannot draw trajectories.
> You may not need all the information that the file in the examples have.
> However, you definitely need the particle position (x,y).
>
> I hope this helps,
> Gus Correa
>
> On Dec 7, 2014, at 7:13 AM, Carlos Batista wrote:
>
> >
> > 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
> >
> > _______________________________________________
> > 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/720d42dc/attachment.html 


More information about the ncl-talk mailing list