[Thread Prev][Thread Next][Index]

Re: [ferret_users] ASCII DATA



Hi Ashley -

Is there a reason why you need to read the lon,lat values in the file? It sounds as if you already know the axis information (since you are defining a grid based on some knowledge of the structure). What is the point of having lon and lat on a lat/lon/time grid?

But if you do want to keep this information, one way is to do 2 separate reads. It requires knowing the format of the data records (or a careful read of Chapter 2, section 5.2 of the manual on "delimited reads"), or see the last block below for a kluge.

! first read lon,lat
define axis/x=8.0833E:22.917E/npo=90 xaxis
define axis/y=48.083:53.917/npo=36 yaxis
define grid/x=xaxis/y=yaxis mygridxy
file/var="lat,lon"/g=mygridxy/ord=xy mydatafile.dat ! note: need those quotes around the variable list!

! save the lon,lat variables for later use
save/file=saved_lon_lat.cdf lon,lat

! now read the data pre, knowing the fortran format of the file
! if you decided that you don't really need lon,lat, then just start here
define axis/t=15-SEP-1988:14-AUG-1989:`365.2425/12`/units=days/T0=15- SEP-1988 taxis
define grid/x=xaxis/y=yaxis/t=taxis mygridxyt
file/format=(12x,12f9.1)/var=pre/g= mygridxyt/col=12/ord=xyt mydatafile.dat
! I have "guessed" at the format, note the use of "12x" to skip 12 spaces at the beginning of each record

! if you don't know the format, or if it is free format, then you can still do this as in step 1 above,
! using an extra write/read to force a format
file/ var="lat,lon,pre1,pre2,pre3,pre4,pre5,pre6,pre7,pre8,pre9,pre10,pre11,pr e12"/g=mygridxy/ord=xy mydatafile.dat
! write it out to a dummy file
list/nohead/format=(12f9.1)/file=dummy.dat pre1,pre2,pre3,pre4,pre5,pre6,pre7,pre8,pre9,pre10,pre11,pre12
! now read it back in, on the grid you want
file/format=(12f9.1)/var=pre/g= mygridxyt/col=12/ord=xyt dummy.dat

I think that will work!

Billy K
On Dec 11, 2006, at 2:41 PM, Jaison Kurian wrote:

Hi Ashley,
Your ascii file is not in a format which can be properly
opened in Ferret. Columns 3-14 contains data on an XYT grid, which
should be readed along the line/row using /COLUMNS qualifier. But the
presence of lon and lat in the first 2 columns makes this jobs diffi-
cult. Ferret can skip lines/rows easily, but not columns. There are
many Linux "text" commands which can modify the original ASCII data
to a format which can be opened in Ferret.

Here is an example using "awk" utility in Linux/Unix (you can
also try commands like column, cut, sed, colrm etc). Modify this
example according to your ASCII data and give a try. Please let me
know if you have any problems with this method.

Regards,

Jaison

Example for reading ASCII data after removing first 2-columns
-------------------------------------------------------------
Suppose you have an ascii file with 3-lon, 2-lat & 12-time points,
arranged as Lon, lat, data(t=1:12) ..like this

1 1 1 2 3 4 5 6 7 8 9 10 11 18
2 1 0 8 9 7 6 5 4 2 3 19 10 13
3 1 5 3 2 4 9 3 2 6 2 16 14 12
1 2 1 2 3 4 5 6 7 8 9 10 11 18
2 2 0 8 9 7 6 5 4 2 3 19 10 14
3 2 5 3 2 4 9 3 2 6 2 16 14 12

in a file latlon_prec.dat. Then try as follows

!-----------------jnl file starts here---------------------------------
! If you precisely know the lat lon points to define the grid, then you
! don't need the first two columns of the ASCII data. Also ferret
! will not skip "columns". Remove first two columns using awk command
! as follows, save the resulting data to an intermediate file

spawn rm -f prec.dat ! remove if this intermediate file exists
spawn awk '{$1=$2=""; print}' latlon_prec.dat > prec.dat

! define input grid

define axis/x=1:3:1 xax
define axis/y=1:2:1 yax
define axis/t=1:12:1 tax
define grid/x=xax/y=yax/t=tax gfile

! read in data from the intermediate file
! give the proper ORDER in which data is arranged--> along a line/ row
! time varies fastest (since we are reading with COLUMNS qualifier)
! so T should come first....choose X and Y as required...

FILE/grid=gfile/ORDER=TXY/COLUMNS=12/var=prec prec.dat

list/i=3/j=2 prec ! check if data has been properly read

set var/bad=-999.99/title="My variable"/units="my_units" prec

! do your calculations here

! save the data if you need to access it easily in future..

! sp rm -f savedata.nc
! save/file=savedata/APPEND prec
! save/file=savedata/APPEND other, variables, here

! remove the intermediate file

sp rm -f prec.dat
!--------------------------------------------------------------------- ---

On Mon, 4 Dec 2006, Ashley Watson wrote:

Hi everyone,

I'm trying to read an ASCII data file with 3 variables. The file looks like:

lon lat Pre(t=1) Pre(t=2) ............Pre(t=12)
..................................................................... ...............
..................................................................... ...............
..................................................................... ..............

So there are 14 columns in datafile. The first two variables are lat, lon
and the third one is variable with 12 timesteps.
I tried to read this data with commnds:

define axis/x=8.0833E:22.917E/npo=90 xaxis
define axis/y=48.083:53.917/npo=36 yaxis
define
axis/t=15-SEP-1988:14-AUG-1989:`365.2425/12`/units=days/T0=15- SEP-1988 taxis
define grid/x=xaxis/y=yaxis/t=taxis mygrid
file/var=lat,lon,pre/grid=mygrid/col=14/order=xyt mydatafile.dat


It does'nt work. show data command shows:
I J K L
lon 1:90 1:36 ... 1:12
lat 1:90 1:36 ... 1:12
pre 1:90 1:36 ... 1:12

The problem is L should be 1 for lat, lat variables. Whats wrong. Any
suggestion

Ashley

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
William S. Kessler
NOAA / Pacific Marine Environmental Laboratory
7600 Sand Point Way NE
Seattle WA 98115 USA

william.s.kessler@noaa.gov
Tel: 206-526-6221
Fax: 206-526-6744
Home page: http://www.pmel.noaa.gov/people/kessler/



[Thread Prev][Thread Next][Index]

Dept of Commerce / NOAA / OAR / PMEL / TMAP

Contact Us | Privacy Policy | Disclaimer | Accessibility Statement