Hi Jagadish,
Your data is not on a curvilinear grid. A curvilinear grid has the
latitudes and longitudes defined as 2-dimensional variables, lon(i,j)
and lat(i,j).
Your data has lon and lat as 1-dimensional axes, so your data is on a
rectilinear grid, and you can regrid it to any other rectilinear grid
or plot it as it is. Your grid is irregularly spaced, but that poses
no difficulties. To put it on a regularly-spaced grid similar to what
you outline in your script,
cancel mode long_label
cancel mode latit_label
let x_min = `ta,return=xstrt`
let x_max = `ta,return=xend`
let y_min = `ta,return=ystart`
let y_max = `ta,return=yend`
define axis/x=`x_min`:`x_max`:0.48/units=longitude/modulo reg_lon
define axis/y=`y_min`:`y_max`:0.424/units=latitude reg_lat
let reg_ta = ta[gx=reg_lon, gy=reg_lat]
jagadish karmacharya wrote:
Hi Ansley and all,
I have tried using samplexy_curv function to convert my data to
rectilinear coordinate. I tried to take some idea from the mail
http://ferret.pmel.noaa.gov/Ferret/Mail_Archives/fu_2006/msg00034.html
as well But I couldn't figure out the how to apply it with my data.
Once again my data and grid looks like:
The data is in the form:
lon = 118 ;
lat = 109 ;
time = UNLIMITED ; // (12 currently)
variables:
float lon(lon) ;
lon:long_name = "Longitude" ;
lon:units = "degrees_east" ;
lon:actual_range = 52.37275f, 108.0947f ;
float lat(lat) ;
lat:long_name = "Latitude" ;
lat:units = "degrees_north" ;
lat:actual_range = -2.378861f, 44.79094f ;
double time(time) ;
time:long_name = "Time" ;
time:units = "hours since 1900-1-1 00:00:0.0" ;
time:actual_range = 535056., 543072. ;
float TA(time, lat, lon) ;
TA:long_name = "Anemom Temp" ;
TA:units = "K" ;
TA:missing_value = -1.e+30f ;
in ferret:
use SRF.nc
sh d/file
currently SET data sets:
1> SRF.nc (default)
name title I J
K L
TA Anemom Temp 1:118 1:109
... 1:12
sh grid ta
GRID GNC1
name axis # pts start end
LON LONGITUDE 118mi 52.372E(52.373)
108.09E(108.09)
LAT LATITUDE 109 i 2.378S 44.79N
normal Z
TIME TIME 12 i 15-JAN-1961 00:00 15-DEC-1961
00:00
Can you tell me necessary steps for using samplexy_curv function?
Well, as an alternate, I tried to use scat2grid functions with my data
using the hints from the jaison's curv2regular_demo.jnl. I did:
let curv_lon = x[gx=ta] + y[gy=ta]*0
let curv_lat = x[gx=ta]*0 + y[gy=ta]
let scat_lon = xsequence(curv_lon)
let scat_lat = xsequence(curv_lat)
let x_min = int(scat_lon[i=@min])
let x_max = int(scat_lon[i=@max])
let y_min = int(scat_lat[i=@min]) ; let y_max = int(scat_lat[i=@max])
define axis/x=`x_min`:`x_max`:0.48/units=longitudes reg_lon
define axis/y=`y_min`:`y_max`:0.424/units=latitudes reg_lat
define symbol scale = 0.5
define symbol cutoff = 2
let reg_ta =
scat2gridgauss_xy(scat_lon,scat_lat,ta,x[gx=reg_lon],y[gy=reg_lat],($scale),($scale),($cutoff),($cutoff))
fill/l=10/lev=1D/grat reg_ta
But the resulting plot is no different from the one with
"fill/l=10/lev=1D/grat ta" ie the graticules and potical boundry
doesn't match with the plot underneth. However the field are slightly
smoothened in the plot and the differnce plot (fill/l=10/lev=1D/grat
ta-reg_ta) show difference as high as +/- 12 degree over the foot hill
of himalayas
What am i missing here?
Thanking in advance!
Jagadish
Ansley Manke <Ansley.B.Manke@noaa.gov> wrote:
Hi Jagadish,
I think what you want is the SAMPLEXY_CURV function which lets you
specify curvilinear data with its grid, and a set of points. The output
is the variable at those points.
Ansley
Love cheap thrills? Enjoy PC-to-Phone
calls to 30+ countries for just 2¢/min with Yahoo! Messenger with
Voice.
|