[Thread Prev][Thread Next][Index]
Re: Regridding in space and time
Hi Chris,
You reached there almost...but missed few points. I modified
your script (see the attachment:scat2grid.jnl, using the data
sample_data.txt) to get proper time dimension for the variable based on
following details...
1. Your data is repeating for the common X-Y locations for 5 time
points ( 1990- 3/31, 4/30, 5/21, 6/14 & 6/21). But the lat-lon
point "80.50 -67.75" exists only for "1990 03 31". If this
point is skipped we are left with 107 spacial points and 5 time
points ==> 107*5 = 535 values (or lines in the data file).
Now read the variable in Ferret like...
define axis/x=1:107:1 xscat ! spatial points
define axis/t=1:5:1 tscat ! time points
define grid/x=xscat/t=tscat gscat
file/grid=gscat/var=..............
2. to define a time axis choose only the five values from year, month
& day (skip all the repeated values). Get the time values using
days1900 function, define a time axis..assign to the variable
using @ASN regridding.
3. Use this new variable in scat2grid function. Now the variable is
2D but one of the dimention is time. So you have to give only
the common lat and lon points as the arguments to the scat2grid.
Define the final destination grid such that it is within the limits
of the original data. Dont forget to use the /UNITS attribute
while defining latitude or longitude axis
4. Define a climatological monthly time axis then regrid to this
usin @MODULO regridding to get the climatology.
Please go through the modified script..if anything need to be
explained..let me know.
As a "bonus" you can see how to use "POLYGON" command to look at the
original data in a spatial plot without any interpolation/extrapolation.
Hope this helps
With Regards
Jaison
On Thu, 18 Nov 2004, Chis Konig wrote:
> Hi there,
>
> I have data that came in 2D-fields at irregular times, i.e. it is
> unevenly spaced in time (weekly - monthly) and space (i.e. 2D but was
> not on a lon-lat-grid). I'd like to make a climatology with monthly
> means etc. from it.
>
> Unless there is an elegant way of doing that all at once (3D
> regridding?) I think I have to achieve this in two steps (but correct me
> if I'm wrong):
>
> - First regrid it in space onto a lon-lat-grid for each time step.
> - Secondly regrid it over time, i.e. make monthly averages etc.
>
> I might prefer a two-stepped approach anyway as it gives me more
> control, e.g. different types of interpolation for space and time.
>
> The data is in ASCII and in the form:
>
> yr mo dy lat lon var
>
> An example file can be found here:
> http://math.nyu.edu/~konigc/sample_data/sample_data.txt
>
> The first three variables (time) are non-decreasing but identical for
> several hundreds to thousands data points (all the data from one field).
>
> That's how far I got:
>
> !!!!!!!!!!!!!!!!!!!!!!!!
>
> define axis/x=1:1000:1 x_temp
> define grid/x=x_temp g_temp
> file/var="yr,mo,dy,lat,lon,var"/grid=g_temp sample_data.txt
>
> let gregday = days1900(yr,mo,dy)
>
> define axis/x=-75:-55:0.25 xax
> define axis/y=79:83:0.25 yax
> !Those axes would be different for the total data.
>
> let var_2=scat2gridgauss_XY(lon,lat,var,x[gx=xax],y[gy=yax],0.5,0.5,2,2)
> !OR
> let var_2=scat2gridlaplace_XY(lon,lat,var,x[gx=xax],y[gy=yax],5,2)
>
> shade var_2
> go land
>
> !!!!!!!!!!!!!!!!!!!!!!!!
>
> My problems with that approach:
>
> - I lose the time dimension in the regridding process.
> - The data is confined to the ocean. But with scat2gridXXX the
> information 'spills' onto the land. Is there a possibility to use a
> simpler interpolation (nearest neighbour, linear...)?
>
> Thanks for any help!
>
> Chris
>
>
>
>
--
___________________________________________________
Jaison Kurian
Centre for Atmospheric and Oceanic Sciences
Indian Institute of Science
B A N G A L O R E 560 012
Ph: +91-80-3942505
+91-80-3600450
Fax:+91-80-3600865
___________________________________________________
!
! delete the line containing data for 1990 03 31 80.50 -67.75
! to bring all days to a common scattered points
!
define axis/x=1:107:1 xscat ! data points
define axis/t=1:5:1 tscat ! time points
define grid/x=xscat/t=tscat gscat
file/var="yr,mo,dy,lat,lon,var"/grid=gscat sample_data.txt
! let us have a cross check
list/y=5 var
! get all the 5 dates
let yr_5 = yr[i=1] ! values need only for I=1,L=1:5
let mo_5 = mo[i=1] ! "
let dy_5 = dy[i=1] ! "
list yr_5, mo_5, dy_5
let gregday = days1900(yr_5,mo_5,dy_5)
define axis/t/t0="01-JAN-1900:00"/units=days/from_data t5day=gregday
list t[gt=t5day]
! get the variable onto the time grid instead of Y
let var_t = var[GT=t5day@ASN]
plot/l=5 var_t
message
! now do the scat2grid
! choose min & max for defining the axes so that those
! values are within the actual range
let lat_1D = lat[l=1] ! we need only the 107 common values
let lon_1D = lon[l=1] ! we need only the 107 common values
define axis/x=-61.5:-67.5:0.25/units=longitudes xlon
define axis/y=80.5:81.75:0.25/units=latitudes ylat
let var_2=scat2gridgauss_XY(lon_1D,lat_1D,var_t,x[gx=xlon],y[gy=ylat],0.125,0.125,2,2)
fill/l=1 var_2
plot /ov/vs/color=7 lon[l=1],lat[l=1]
go land
! no you can define a monthly climatological axis (if needed..because now
! you have one value per month)..and make the climatology using var_t
! let us see what "polygon" can do
message
let xpts = XSEQUENCE(lon[l=1,i=1:107])
let ypts = XSEQUENCE(lat[l=1,i=1:107])
let dxp=0.2 ; let bx=ysequence({`(-1)*dxp`,`dxp`,`dxp`,`(-1)*dxp`})
let dzp=0.05 ; let bz=ysequence({`dzp`,`dzp`,`(-1)*dzp`,`(-1)*dzp`})
polygon bx+xpts,bz+ypts,var_t[l=1]
plot /ov/vs lon[l=1],lat[l=1]
go land
[Thread Prev][Thread Next][Index]
Dept of Commerce /
NOAA /
OAR /
PMEL /
TMAP
Contact Us | Privacy Policy | Disclaimer | Accessibility Statement