[Thread Prev][Thread Next][Index]

Re: [ferret_users] Re: finding monthly maximum in daily data [regriding problem]



Hi Peter,
First, about your first message where you had one month too few. The definition gives you the start of each month and you need one more point to be the end of the last month. I haven't tested this, but I think it'd just be this in the commands you show:

   LET indices = L[L=1:`nyears*12`] + 1

And, about the @sum regridding giving you a value of 3.5. That would occur if the new axis overlaps a time step from the old axis by half a grid cell. In your original message, you showed the axis. See how the TBOXLO values show that they start at hour 12:


yes? sh axis/t=1-jan-1961:3-jan-1961 tax
 name       axis              # pts   start                end
 TAX       TIME             14610 r   01-JAN-1961 00:00    31-DEC-2000 00:00
T0 = 15-JAN-1901 00:00:00
   Axis span (to cell edges) = 350640
 
       L     T                   TBOX      TBOXLO                TSTEP (HOURS)
       1>  01-JAN-1961 00:00:00  24        31-DEC-1960 12:00:00   525624
       2>  02-JAN-1961 00:00:00  24        01-JAN-1961 12:00:00   525648
       3>  03-JAN-1961 00:00:00  24        02-JAN-1961 12:00:00   525672


That means that when we're regridding say, the data from the first of January 1981 to the new axis, if your variable pre has a value of 1, only half of that 1 will be added to the sum for the month January 1981 and half would be added to the month December 1980.

Ansley



Peter Szabo wrote:
Hello Friends,

Maybe im becoming annoying, but one more thing:

if i use trueyear time-axis for regriding a variable, then list the original ones for the critical years i have different results.

------------------ its the definition of the trueyear-axis for 40 years. i checked: it works fine.
let start_year = 1960
let nyears = 41
let indices = l[l=1:`nyears`]
let year = start_year + indices
def ax/un=days/t0=1-jan-1900/ed trueyear = DAYS1900(year,1,1)
------------------ now i do the regriding
let prem=if pre[x=19.1,y=47.5,d=4] ge 20 then 1 else 0
let premx=prem[gt=trueyear@sum]
------------------ now i list the variable (the values should be integer)
yes? list premx[l=20:21]
JUL-1981 / 20:  3.500
 JUL-1982 / 21:  3.500
------------------ now i list the original variable with a sum transformation for checking the latter variable, but its different (and this seems to be correct, because its integer)
yes? list prem[t="1-jan-1980":"31-dec-1980"@sum]
             TIME     : 01-JAN-1980 00:00 to 31-DEC-1980 00:00 (summed)
          3.000
yes? list prem[t="1-jan-1981":"31-dec-1981"@sum]
             TIME     : 01-JAN-1981 00:00 to 31-DEC-1981 00:00 (summed)
          3.000

Does anyone know why this occurs?

Peter

On Wed, Nov 26, 2008 at 9:30 AM, Peter Szabo <szabpet83@xxxxxxxxx> wrote:
Hello Ansley,

Thanks a lot for the help.
>From now on i should take care of these regridings and transformations when i use both in one command, but its simpler and self-explanatory when i use them seperately and one after an other.

And yes, i wanted to create a continuous monthly axis. (As you suggested) In the users guide i found the precise axis i really needed:

! Define a 40 year monthly axis starting in Jan 1961
LET start_year = 1961


LET nyears = 40
LET indices = L[L=1:`nyears*12`]
LET month = MOD(indices-1,12)+1
LET year = start_year + INT((indices-1)/12)
DEFINE AXIS/UNITS=days/T0=1-jan-1900/EDGES truemonth = DAYS1900(year,month,1)
    

BUT, if i use the truemonth axis for regriding, i miss the last point in time: i have created 479 instead of 480.

yes? sh axis/t=1-aug-2000:1-jan-2001 truemonth

 name       axis              # pts   start                end
 TRUEMONTH TIME               479 i   16-JAN-1961 12:00    16-NOV-2000 00:00
T0 = 1-JAN-1900
   Axis span (to cell edges) = 14579
 
       L     T                   TBOX      TBOXLO                TSTEP (DAYS)
     475>  16-JUL-2000 12:00:00  31        01-JUL-2000 00:00:00    36721.5
     476>  16-AUG-2000 12:00:00  31        01-AUG-2000 00:00:00    36752.5
     477>  16-SEP-2000 00:00:00  30        01-SEP-2000 00:00:00    36783
     478>  16-OCT-2000 12:00:00  31        01-OCT-2000 00:00:00    36813.5
     479>  16-NOV-2000 00:00:00  30        01-NOV-2000 00:00:00    36844

Peter



On Tue, Nov 25, 2008 at 7:33 PM, Ansley Manke <Ansley.B.Manke@xxxxxxxx> wrote:
Hi Peter,
The monthly axis you defined is a regularly-spaced axis, with grid cells approximately one month in size, but the months will be centered approximately on the first of each month. Do you want an axis with the first cell representing all of January 1961 then all of February, and so on?  If so, then you would come closer to that if you did not use the /edges qualifier.  But to really do it right, try this: Look up "monthly axis, creating" in the Users Guide index.  It'll take you to the section on DEFINE AXIS/EDGES, which has an example showing how to define a set of values representing the start of each month, and then using /EDGES to create a monthly axis where the edges are the boundaries between months and the coordinate value is in the middle.

As to the results you're getting, when you specify both a transformation, like X=@AVE,and a regridding operation, which in your case is GT=tmonthly2@MAX, together in the same _expression_, Ferret does the regridding first. As you found there's a difference between the maximum in each month of all the data in the x and y range, vs the maximum in each month of the data after averaging in x and y.  A person might want either result, so it's important to nail down in what order you want operations you want to be done, as you did in making two separate definitions.

Ansley



Peter Szabo wrote:
Hi ferreters,

one comment:
It looks proper, when i used any of the axes (now i used:
def axis/t="15-JAN-1961":"15-DEC-2000"/np=480/edges tmonthly2) and

let prex=pre[x=@ave,y=@ave]
let premmax=prex[gt=tmonthly2@max]


instead of

let premmax=pre[x=@ave,y=@ave,gt=tmonthly2@max]

Sorry, i should have mentioned the "x=@ave,y=@ave" operations.

The given values seem to be correct (the maximum value on the attached GIF are closer to the original GIF which was posted in my latter letter), but i still dont know if the used time-axis is appropriate or not.
And i dont know why i cant use the x=@ave, y=@ave and the gt=tmonthly2@max regriding operations together.

Peter

On Tue, Nov 25, 2008 at 2:52 PM, Peter Szabo <szabpet83@xxxxxxxxx> wrote:
Dear Ferret Users,

Im totally confused about creating appropriate time-axes: i would like to get monthly maximum precipitation from daily data set.
Here are some details of my original data set:

yes? sh axis/t=1-jan-1961:3-jan-1961 tax
 name       axis              # pts   start                end
 TAX       TIME             14610 r   01-JAN-1961 00:00    31-DEC-2000 00:00
T0 = 15-JAN-1901 00:00:00
   Axis span (to cell edges) = 350640
 
       L     T                   TBOX      TBOXLO                TSTEP (HOURS)
       1>  01-JAN-1961 00:00:00  24        31-DEC-1960 12:00:00   525624
       2>  02-JAN-1961 00:00:00  24        01-JAN-1961 12:00:00   525648
       3>  03-JAN-1961 00:00:00  24        02-JAN-1961 12:00:00   525672

When i try to find the monthly maximum value through regriding to monthly data with the below command, i just cant have the correct values.

def axis/t="15-JAN-1961":"15-DEC-2000"/np=480 tmonthly
let premmax=pre[gt=tmonthly@max]

I also tried creating the time axis with "/edges" and some others also.

def axis/t="15-JAN-1961":"15-DEC-2000"/np=480/edges tmonthly
def axis/t="1-JAN-1961:00:00":"31-DEC-2000:00:00"/t0="1-JAN-1961:00:00"/np=480/edges/units=days tmonthly
etc.

None of them gave what i expected.
I enclose the original daily data set (HU_predaily.gif) and one of the plots after regriding (HU_premax_tmonthly.gif). The maximum on the original plot is 33.75 and on the others they are always bigger (around 37).

Can anyone help me?

Thanks in advance,
Peter Szabo







[Thread Prev][Thread Next][Index]

Contact Us
Dept of Commerce / NOAA / OAR / PMEL / TMAP

Privacy Policy | Disclaimer | Accessibility Statement