# [ncl-talk] Array reordering in OISST

Dennis Shea shea at ucar.edu
Mon May 20 11:16:53 MDT 2019

I *think* I understand what you want to do. You use:

[A]  This following uses *standard subscripting (indexing):*

print("sst(n,*90-30,130*)="+sst(n,*90-30,130)*+" "+lon(130)+"E
"+lat(90-30)+"N")
print("sstre(n,130,90+30-1)="+sstre(n,130,90+30-1)+" "+lon(130)+"E
"+sstre&lat(90+30-1)+"N")

[B] I think you intended to use *coordinate subscripting
<https://www.ncl.ucar.edu/Document/Language/subscript_coord.shtml> *which
uses the following syntax:
*{...}*
A 'best practices' programming style is to use variables rather than
hard-wiring numbers. Generally, this makes ithe intended use more clear.

LATS = 30
LATN = 90
LON = 130

SST = sst(n,*{*LATS:LATN*}*,*{*LON*}*)
printVarSummary(SST)

or, say
LATS = 30
LATN = 90
LONW = 110
LONE  = 150

SST = sst(n,*{*LATS:LATN*}*,*{*LON*W:LONE}*)
printVarSummary(SST)

=================================
*     short *sst(time, lat, lon)

The coordinates are:

Coordinates:
time: [66443..80078]
*lat: [89.5..-89.5]               ; <=== North-to-South
ordering*
lon: [0.5..359.5]

[2] NCL has the *short2flt *
<https://www.ncl.ucar.edu/Document/Functions/Contributed/short2flt.shtml>function
that unpacks an maintains meta data.

sst =* short2flt*( f->sst )
*; import and unpack the variable maintaining meta data*
*    printVarSummary
<https://www.ncl.ucar.edu/Document/Functions/Built-in/printVarSummary.shtml>(sst)*
*printMinMax*
<https://www.ncl.ucar.edu/Document/Functions/Contributed/printMinMax.shtml>
(sst,0)

[3]  It is not necessary to explicitly read the following coordinate
variables from the file. NCL imports the variable as a *data structure*
['object'] that contains the array values and meta data including
coordinate information associated with the variable.

time = sst*&*time
lat    = sst*&*lat
lon   = sst*&*lon

[4] There are different methods for accessing subsets of a variable:
classic indexing and coordinate variable indexing. See above.

[5] Generally, *NCL graphics* *are aware of coordinate order.* Hence, no
reordering is necessary.

---
[6]

On Sun, May 19, 2019 at 9:46 PM Atsuyoshi MANDA <am at bio.mie-u.ac.jp> wrote:

> Hi,
>
> I am trying to reorder the array dimensions in the monthly mean OISST
> ftp://ftp.cdc.noaa.gov/Datasets/noaa.oisst.v2/sst.mnmean.nc.
>
> However, reordering using the named subscripting in my script does not
> work.
>
> Please see the attached files:
> OIV2LR.sst.1982JUL.png (original data)
> OIV2LR.sstre.1982JUL.png (reordered data)
>
> Any suggestions would be greatly appreciated.
>
> Here is my script:
> ;=========================
> indir="./"
> infle="sst.mnmean.nc"
> in=indir+"/"+infle
>
> script_name  = get_script_name()
> outdir="BIN_"+systemfunc("basename "+script_name+" .ncl")
>
> dset="OIV2LR"
> MM=7
>
> month_abbr = (/"","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP", \
>                     "OCT","NOV","DEC"/)
> MMM=month_abbr(MM)
>
> system("mkdir -vp "+outdir)
>
>
>
> ;printVarSummary(f)
> ;print(f)
>
> lon=f->lon
> lat=f->lat
> sst=f->sst
> time=f->time
>
> utc_date = cd_calendar(time, 0)
>
> year   = tointeger(utc_date(:,0))    ; Convert to integer for
> month  = tointeger(utc_date(:,1))    ; use sprinti
> day    = tointeger(utc_date(:,2))
> hour   = tointeger(utc_date(:,3))
> minute = tointeger(utc_date(:,4))
> second = utc_date(:,5)
> date_str = sprinti("%0.2iZ ", hour) + sprinti("%0.2i ", day) + \
>            month_abbr(month) + " "  + sprinti("%0.4i", year)
>
> yyyys=1982
> yyyye=2017
>
> sst_scaled=sst*sst at scale_factor + sst at add_offset
> copy_VarAtts(sst,sst_scaled)
> copy_VarCoords(sst,sst_scaled)
> printVarSummary(sst_scaled)
>
> sstre=sst_scaled(time|:,lon|:,lat|:)
> copy_VarAtts(sst_scaled,sst)
> copy_VarCoords(sst_scaled,sstre)
> printVarSummary(sstre)
>
>
>
> dim=dimsizes(year)
> nt=dim(0)
>
> do n=7,7 ;0,nt-1
>
> if(year(n) .ge. yyyys .and. year(n) .le. yyyye .and. month(n) .eq. MM)then
> print(n+" "+date_str(n))
>
>
> figdir="FIG_"+systemfunc("basename "+script_name+" .ncl")+"_"+dset
> system("mkdir -vp "+figdir)
> type="png"
>
>
>
> figfle=dset+"."+"sstre."+year(n)+MMM+""
> fig=figdir+"/"+figfle
>
> print("figfle="+figfle+"."+type)
>
> wks = gsn_open_wks(type, fig)
>
> res=True
>   res at cnFillOn              = True               ; turn on color fill
>   res at cnLinesOn             = False              ; turn off contour lines
> plot1=gsn_csm_contour_map(wks,sstre(n,:,:),res)
>
>
>
> figfle=dset+"."+"sst."+year(n)+MMM+""
> fig=figdir+"/"+figfle
>
> print("figfle="+figfle+"."+type)
>
> wks = gsn_open_wks(type, fig)
>
> res=True
>   res at cnFillOn              = True               ; turn on color fill
>   res at cnLinesOn             = False              ; turn off contour lines
> plot1=gsn_csm_contour_map(wks,sst(n,:,:),res)
>
>
> print("sst(n,90-30,130)="+sst(n,90-30,130)+" "+lon(130)+"E
> "+lat(90-30)+"N")
> print("sstre(n,130,90+30-1)="+sstre(n,130,90+30-1)+" "+lon(130)+"E
> "+sstre&lat(90+30-1)+"N")
>
> end if
>
> end do
> ;=========================
>
> Thank you,
> Atsuyoshi
>
> -
> Atsuyoshi Manda, Ph.D
> Associate Professor,
> Mie University
> 1577 Kurimamachiya-cho Tsu city, Mie 514-8507 JAPAN
> _______________________________________________
> 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/20190520/bdedeab1/attachment.html>