[ncl-talk] R: R: Wrong behaviour of lat/lon coordinates in an interpolated field

Federico Buscemi - federico.buscemi@studio.unibo.it federico.buscemi at studio.unibo.it
Tue Jul 6 04:58:38 MDT 2021


Thank you for your help, Dennis.

I had already noticed the absence of some values ​​in the last column, in fact I had temporarily used only row 263 in my script, randomly chosen among those in which there were no missing values. That would have been a problem that I would have faced later.

I apologize but I have probably explained myself badly. I have no problem with the position of the wind barbs on the map. Their position corresponds to the real position of the stations. Instead I have problems with the interpolated sea level pressure field. I suppose the problem lies in this part of the code, where the lat / lon coordinates are assigned to the "p_int_real" variable:

  xo = fspan(11.8000, 12.8000, 4000)
  yo = fspan(44.8000, 45.4000, 2400)

  yo at units = "degrees_north"
  xo at units = "degrees_east"

  yo!0 = "lat"
  xo!0 = "lon"
  yo at axis = "Y"
  xo at axis = "X"

  p_int = natgrid(x, y, z, xo, yo)
  p_int_real = transpose(p_int)

  p_int_real!0 = "lat"
  p_int_real!1 = "lon"

  p_int_real&lat = yo
  p_int_real&lon = xo

  p_int_real&lat at units = "degrees_north"
  p_int_real&lon at units = "degrees_east"

There must be something I got wrong because it is as if the assignment doesn't actually happen.


________________________________
Da: Dennis Shea <shea at ucar.edu>
Inviato: martedì 6 luglio 2021 04:50
A: Federico Buscemi - federico.buscemi at studio.unibo.it <federico.buscemi at studio.unibo.it>
Cc: ncl-talk at mailman.ucar.edu <ncl-talk at mailman.ucar.edu>
Oggetto: Re: [ncl-talk] R: Wrong behaviour of lat/lon coordinates in an interpolated field

Currently, I don't have the time to look at the coding in detail.
I am going to suggest that you work with a scalar field like pressure to debug this code.
Then add the wind components.

I did look at the text files. In many of the files the last value is not present. For example:

vento_direzione_201911.TXT

The 1st 3 lines

12/11/19;00:00;39;42;53;60;35;47;33;272;359
12/11/19;00:05;37;40;51;60;32;48;31;111;               <=== last value is missing [MANY warning messages]
12/11/19;00:10;35;43;48;64;36;48;30;356;23

I added some code to eliminate Warning messages

The attached script illustrates some of the issues.

%> ncl debug_3.ncl  |  less

On Mon, Jul 5, 2021 at 4:22 PM Federico Buscemi - federico.buscemi--- via ncl-talk <ncl-talk at mailman.ucar.edu<mailto:ncl-talk at mailman.ucar.edu>> wrote:
Hello,
I hope you can see it now. Thank you.
________________________________
Da: Federico Buscemi - federico.buscemi at studio.unibo.it<mailto:federico.buscemi at studio.unibo.it> <federico.buscemi at studio.unibo.it<mailto:federico.buscemi at studio.unibo.it>>
Inviato: lunedì 5 luglio 2021 23:01
A: ncl-talk at mailman.ucar.edu<mailto:ncl-talk at mailman.ucar.edu> <ncl-talk at mailman.ucar.edu<mailto:ncl-talk at mailman.ucar.edu>>
Oggetto: Wrong behaviour of lat/lon coordinates in an interpolated field

Dear all,

I am having some trouble with my script, copied and pasted below. I interpolated sea level pressure values (z), read from two of the attached text files, recorded in six locations around Venezia, Italy. I wanted to plot the interpolated field in the Venezia Lagoon area. Even if values are well interpolated by means of "natgrid" function, it seems that they are not associated with latitude and longitude coordinates, since contours are always drawn in the same way, although I vary lat/lon coordinates of the map. Since I don't get errors in my output, I don't know how to solve this issue. I tried in several ways, but still can't figure it out. Any suggestion would be appreciated. Thank you.

Federico Buscemi

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
begin

  fname1 = "filetxt/vento_direzione_201911.TXT"
  fname2 = "filetxt/vento_velocita_201911.TXT"
  fname3 = "filetxt/Vento_Direzione_ISPRA.txt"
  fname4 = "filetxt/Vento_Velocità_ISPRA.txt"
  fname5 = "filetxt/pressione_201911.TXT"
  fname6 = "filetxt/Pressioni_ISPRA.txt"
  lines1 = asciiread(fname1,-1,"string")
  lines2 = asciiread(fname2,-1,"string")
  lines3 = asciiread(fname3,-1,"string")
  lines4 = asciiread(fname4,-1,"string")
  lines5 = asciiread(fname5,-1,"string")
  lines6 = asciiread(fname6,-1,"string")

  delim = ";"
  ndata = str_fields_count(lines1, delim)

  date = str_get_field(lines1, 1, delim)
  time = str_get_field(lines1, 2, delim)

  dpiatt = stringtoint(str_get_field(lines1, 3, delim))
  dmalpor = stringtoint(str_get_field(lines1, 6, delim))
  dchipor = stringtoint(str_get_field(lines1, 7, delim))
  dsang = stringtoint(str_get_field(lines1, 9, delim))
  dmeab = stringtoint(str_get_field(lines1, 11, delim))
  dpame = stringtoint(str_get_field(lines3, 3, delim))
  dfopo = stringtoint(str_get_field(lines3, 5, delim))

  vpiatt = stringtofloat(str_get_field(lines2, 3, delim))
  vmalpor = stringtofloat(str_get_field(lines2, 6, delim))
  vchipor = stringtofloat(str_get_field(lines2, 7, delim))
  vsang = stringtofloat(str_get_field(lines2, 9, delim))
  vmeab = stringtofloat(str_get_field(lines2, 11, delim))
  vpame = stringtofloat(str_get_field(lines4, 3, delim))
  vfopo = stringtofloat(str_get_field(lines4, 5, delim))

  ppiatt = stringtofloat(str_get_field(lines5, 3, delim))
  ppaca = stringtofloat(str_get_field(lines5, 4, delim))
  pmeab = stringtofloat(str_get_field(lines5, 5, delim))
  ppame = stringtofloat(str_get_field(lines6, 3, delim))
  pfopo = stringtofloat(str_get_field(lines6, 4, delim))
  plime = stringtofloat(str_get_field(lines6, 5, delim))

  wpiatt = wind_component(vpiatt,dpiatt,0)
  wmalpor = wind_component(vmalpor,dmalpor,0)
  wchipor = wind_component(vchipor,dchipor,0)
  wsang = wind_component(vsang,dsang,0)
  wmeab = wind_component(vmeab,dmeab,0)
  wpame = wind_component(vpame,dpame,0)
  wfopo = wind_component(vfopo,dfopo,0)

  latpiatt = 45.3142417
  lonpiatt = 12.5083139
  latmalpor = 45.3398
  lonmalpor = 12.2919667
  latchipor = 45.2325389
  lonchipor = 12.2805972
  latsang = 45.4284083
  lonsang = 12.3462639
  latmeab = 45.235
  lonmeab = 12.7716667
  latpame = 45.4027694
  lonpame = 11.8585417
  latfopo = 44.8438333
  lonfopo = 12.4624028
  latpaca = 45.4364324
  lonpaca = 12.3335352
  latlime = 45.43015
  lonlime = 12.38295

  x = (/lonpame, lonfopo, lonpiatt, lonmeab, lonpaca, lonlime/)
  y = (/latpame, latfopo, latpiatt, latmeab, latpaca, latlime/)
  z = (/ppame(263), pfopo(263), ppiatt(263), pmeab(263), ppaca(263), plime(263)/)

  xo = fspan(11.8000, 12.8000, 4000)
  yo = fspan(44.8000, 45.4000, 2400)

  yo at units = "degrees_north"
  xo at units = "degrees_east"

  yo!0 = "lat"
  xo!0 = "lon"

  p_int = natgrid(x, y, z, xo, yo)
  p_int_real = transpose(p_int)

  p_int_real!0 = "lat"
  p_int_real!1 = "lon"

  p_int_real&lat = yo
  p_int_real&lon = xo

  p_int_real&lat at units = "degrees_north"
  p_int_real&lon at units = "degrees_east"


  wks = gsn_open_wks("pdf","station")       ; send graphics to PNG file

  mpres = True
  mpres at gsnFrame = False
  mpres at mpLimitMode = "LatLon"
  mpres at mpMinLatF                   = 40.5
  mpres at mpMinLonF                   = 10
  mpres at mpMaxLatF                   = 48.8
  mpres at mpMaxLonF                   = 15.8
  mpres at mpDataBaseVersion = "HighRes"
  mpres at mpOutlineBoundarySets = "AllBoundaries"
  mpres at gsnMaximize = True

  map = gsn_csm_map(wks,mpres)

  cnres = True
  cnres at gsnAddCyclic = False
  cnres at gsnFrame = False
  cnres at cnFillOn = False
  cnres at cnLinesOn = True
  cnres at cnInfoLabelOn = False
  cnres at cnLevelSelectionMode = "ManualLevels"
  cnres at cnMinLevelValF = 980.0
  cnres at cnMaxLevelValF = 1010.0
  cnres at cnLevelSpacing = .5
  cnres at cnFillDrawOrder = "PreDraw"
  cnres at cnLineLabelsOn = True
  cnres at cnLineLabelPlacementMode = "Constant"
;  cnres at sfXArray            = xo
;  cnres at sfYArray            = yo

  cnres at tmXBBorderOn = False
  cnres at tmXBOn = False
  cnres at tmXTBorderOn = False
  cnres at tmXTOn = False
  cnres at tmYLBorderOn = False
  cnres at tmYLOn = False
  cnres at tmYRBorderOn = False
  cnres at tmYROn = False


  wmsetp("wbs", .045)

  wmbarbmap(wks, latpiatt, lonpiatt, wpiatt(0,263), wpiatt(1,263))
  wmbarbmap(wks, latsang, lonsang, wsang(0,263), wsang(1,263))
  wmbarbmap(wks, latmalpor, lonmalpor, wmalpor(0,263), wmalpor(1,263))
  wmbarbmap(wks, latchipor, lonchipor, wchipor(0,263), wchipor(1,263))
  wmbarbmap(wks, latmeab, lonmeab, wmeab(0,263), wmeab(1,263))
  wmbarbmap(wks, latpame, lonpame, wpame(0,263), wpame(1,263))
  wmbarbmap(wks, latfopo, lonfopo, wfopo(0,263), wfopo(1,263))

  cnp = gsn_csm_contour(wks,p_int_real,cnres)

  overlay(map,cnp)

end
_______________________________________________
ncl-talk mailing list
ncl-talk at mailman.ucar.edu<mailto:ncl-talk at mailman.ucar.edu>
List instructions, subscriber options, unsubscribe:
https://mailman.ucar.edu/mailman/listinfo/ncl-talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210706/465a5d4e/attachment.html>


More information about the ncl-talk mailing list