[ncl-talk] Interpolation of wind station data
Dennis Shea
shea at ucar.edu
Wed Apr 27 16:15:59 MDT 2016
Hello
[1]
Generally, do not interpolate wind speed and direction directly. One issue
... think
combining winds from 355 and 5 ... :-)
[2]
Technically, on the sphere you should not interpolate u and v separately.
There is a rotation angle (rot) that must be used
uNew = u*cos(rot) + v*sin(rot)
vNew = -u*sin(rot) + v*cos(rot)
==
[3]
The most common method on the sphere is to calculate the
scalar quantities: divergence and relative vorticity;
interpolate the scalar quantities to the new grid;
back-out the rotational and divergent wind components
on the new grid.
uNew = uRot+uDiv
vNew = vRot+vDiv
==
[1-3] said ... I think you can ignore the above. :-)
Greece is not large so the earth's curvature can be ignored.
[a] derive the wind components
[b] interpolate the u and v independently
[c] rederive the wind speeds and directions.
I have not used dgrid2 or natgrid so I have no recommendation.
====
NOTE: The ESMF regrid may also be used.
https://www.ncl.ucar.edu/Applications/ESMF.shtml
ESMF_regrid_21.ncl
<https://www.ncl.ucar.edu/Applications/Scripts/ESMF_regrid_21.ncl>
Or, if you have a lot of stations, use ESMF's nearest neighbor
ESMF_regrid_31.ncl
The latter uses a grid as input but (I think) you can use the
location of the stations.
Good Luck
On Wed, Apr 27, 2016 at 4:33 AM, Stavros Dafis <sdafis at cc.uoi.gr> wrote:
> Dear users,
>
> I would like your help concerning the interpolation of u,v components
> derived by
> weather stations in Greece. I have found only one message from Mr Wang
> back in
> 2008, who faced the same problem, but as far as I know, it was not solved.
> I
> tried to find Mr Wang though, but with no response to the e-mail provided
> in
> the message:
> https://www.ncl.ucar.edu/Support/talk_archives/2008/0497.html
>
> The stations record wind speed and direction in degrees. I first derive
> the u,v
> components and interpolate them using the dsgrid2 method (I have also tried
> with natgrid). Do I have to make explicit calculations for u>0, v<0 etc?
> Mathematically speaking, I think the code is correct, but please make your
> suggestions, because if I change the wind speed somewhere (for example in
> West
> Greece) the vectors are always the same in North Greece (Macedonia) and in
> SW
> parts.
> Part of my code is shown below and the plot derived is attached:
>
>
> x = stations(:,2) ; Column 3 of file contains LONGITUDE values.
> y = stations(:,1) ; Column 2 of file contains LATITUDE values.
> WDIR1 = stations(:,15) ; Column 15 of file contains WIND DIRECTION values.
> z = stations(:,12) ; Column 13 of file contains WIND SPEED values.
>
> ;WDIR = 270 - WDIR1
>
> y!0 = "lat"
> x!0 = "lon"
>
> numxout = 200 ; nflds
> numyout = 200 ; nflds
> xmin = min(x)
> ymin = min(y)
> xmax = max(x)
> ymax = max(y)
> zmin = min(z)
> zmax = max(z)
>
> xc = (xmax-xmin)/(numxout-1)
> yc = (ymax-ymin)/(numyout-1)
> xo = xmin + ispan(0,numxout-1,1)*xc
> yo = ymin + ispan(0,numyout-1,1)*yc
>
> yo!0 = "lat"
> xo!0 = "lon"
>
> ;zo = natgrid(x, y, z, xo, yo) ; Interpolate.
> ;zo = natgrids(x, y, z, xo, yo) ; Interpolate.
> ;zo = dspnt2(x, y, z, xo, yo) ; Interpolate.
>
> zo = dsgrid2(x, y, z, xo, yo) ; Interpolate.
>
> diro = dsgrid2(x, y, WDIR, xo, yo) ; Interpolate.
>
> diro!0 = "lon"
> diro!1 = "lat"
> diro&lat = yo
> diro&lon = xo
> ;------- (operational) ---------------
> rad = 4.*atan(1.0)/180. ; degress to radians
>
> uo = -(abs(z))*sin(WDIR*rad)
> vo = -(abs(z))*cos(WDIR*rad)
>
> u1 = dsgrid2(x, y, uo, xo, yo) ; Interpolate.
> v1 = dsgrid2(x, y, vo, xo, yo) ; Interpolate.
>
> u1!0 = "lon"
> u1!1 = "lat"
> u1&lat = yo
> u1&lon = xo
>
> v1!0 = "lon"
> v1!1 = "lat"
> v1&lat = yo
> v1&lon = xo
>
> ;----------------------------------------------------------------------------
>
> nlat = dimsizes(yo)
> nlon = dimsizes(xo)
>
> u = generate_2d_array(-50,50,min(u1),max(u1),50,(/nlat,nlon/))
> u!0 = "lon"
> u&lon = yo
> u!1 = "lat"
> u&lat = xo
>
> v = generate_2d_array(-50,50,min(v1),max(v1),50,(/nlat,nlon/))
>
> v!0 = "lon"
> v&lon = yo
> v!1 = "lat"
> v&lat = xo
>
> ;------------------------------------------------------
> xo at long_name = "Lon" ; Define some attributes.
> yo at long_name = "Lat"
> zo at long_name = "10-min Wind speed(km/h)"
>
>
> --
> Stavros Dafis
> MSc student Atmospheric Sciences and Environment
> University of Ioannina
> LATMOS Laboratoire Atmospheres, Milieux,Observations Spatiales; Versailles,
> France.
> Tel: +33 0981942212, Mobile: +30 6970420242
> e-mails: sdafis at noa.gr or dafis91 at yahoo.gr
> Weather charts: http://www.metar.gr
> http://www.meteo.gr
> http://www.meteovolos.gr
>
>
> _______________________________________________
> 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/20160427/d3c3c620/attachment.html
More information about the ncl-talk
mailing list