# Re: how to add lat/lon/depth to an existing netcdf file

```Hi Prasad,
If you want to solve your problem using ferret then
the solution is regridding as suggested by Edward. Since you have
a big file with many grid points, regridding in ferret will be time
consuming. Again the regridding will depend on how your lat. lon &
depth axes are....wether they are uniformly spaced or not. Ofcourse
you can modify much easily if you are familiar with editing netcdf
using fortran or c.

Here is an example for adding lat lon and depth dimension to
a netcdf file through regridding in ferret. I took a case with
10 lat, 10 lon &  5 depth  points.

Hope this helps

With Regards

Jaison

if your x, y & z axes are uniformly spaced like ......
----------------
lon : 42,44,46,48,50....60    ! 10 points
lat : 11,12,13.....20         ! 10 points
dep : 0,10,..40               !  5 points

use data.nc ! in your case tavg.icecpl.199001.nc

define axis/x=42:60:2/units=longitudes xax
define axis/y=11:20:1/units=latitudes  yax
define axis/z=0:40:10/units=meters/DEPTH  zax  ! /DEPTH
! for "positive=down" z-axis
define grid/x=xax/y=yax/z=zax gr_xyz
define grid/x=xax/y=yax gr_xy

let/title="something"/unit="something" HDIFT_new = HDIFT[g=gr_xy@asn]
let/title="something"/unit="something" UET_new   = UET[g=gr_xyz@asn]
let/title="something"/unit="something" VNT_new   = VNT[g=gr_xyz@asn]

fill/k=1 UET_new

! saving to a file

save/file="./regridded_data.nc"/append HDIFT_new, UET_new, VNT_new
------------------------------------------------------------------

suppose you have non-uniform spacing for axes..then
-------------------
it will be easier to read the values of lat, lon and dep from
an ascci file since you have many grid points.
suppose  lon   is in 1st column
lat   is in 2nd   "
depth is in 3rd   "    like

40 0  0
42 2  2
46 3  5
50 5  10
55 8  25
60 10
63 14
65 15
67 17
74 20

in a file...say "axis_values.dat"

! since these three columns have different lengths (in your
! case 900,601,40) little care should be taken to read them

define axis/x=1:10:1 dummyx  ! in your case 1:900:1
define axis/y=1:10:1 dummyy  ! in your case 1:601:1
define axis/z=1:5:1 dummyz   ! in your case 1:40:1
define grid/x=dummyx grx
define grid/y=dummyy gry
define grid/z=dummyz grz

!   /skip is to skip "rows" and "-" is to skip "columns"

!   read lon/x values and define x-axis from those values

file/skip=0/var="xdat,-,-"/grid=grx axis_values.dat
define axis/from_data/x/units=longitudes/name=xaxis xdat

!   read lat/y values and define y-axis from those values

file/skip=0/var="-,ydat,-"/grid=gry axis_values.dat
define axis/from_data/y/units=latitudes/name=yaxis ydat

!   read dep/z values and define z-axis from those values

file/skip=0/var="-,-,zdat"/grid=grz axis_values.dat
define axis/from_data/z/units=meters/DEPTH/name=zaxis zdat

define grid/x=xaxis/y=yaxis gr_xy         ! for 2-D variable
define grid/x=xaxis/y=yaxis/z=zaxis gr_xyz ! for 3-D variables

use data.nc  ! in your case tavg.icecpl.199001.nc

! regridding via @asn will directly associate the axis vales (from
!      defined grid ) to the newly defined variable

let HDIFT_2 = HDIFT[g=gr_xy2@asn]
let UET_2   = UET[g=gr_xyz@asn]
let VNT_2   = VNT[g=gr_xyz@asn]

plot/i=1/j=1 VNT_2

! for saving to file/putting title and units see first section above
------------------------------------------------------------------------

On Thu, 22 Apr 2004, Thoppil, Prasad IND wrote:

> Hi ferret users:
>
> I have model outputs written in netcdf format. There is no lat/lon/depth
> information in these files and I would like to add them into an existing
> netcdf file. It is impossible to dump this file using ncdump and add
> lat/lon because it is a huge file (800 MB). I hope someone out there can
> help me with this.
>
> Thanks,
>
>
> Following is the ncdump output
>
> netcdf tavg.icecpl.199001 {
> dimensions:
>         i = 900 ;
>         j = 601 ;
>         k = 40 ;
> variables:
>         float HDIFT(j, i) ;
>                 HDIFT:long_name = "Vertically integrated horz mix T
> tend" ;
>                 HDIFT:units = "degC/cm^2" ;
>                 HDIFT:grid_loc = "2110" ;
>                 HDIFT:missing_value = -12345.f ;
>         float UET(k, j, i) ;
>                 UET:long_name = "East Flux of Heat" ;
>                 UET:units = "degC/s" ;
>                 UET:grid_loc = "3211" ;
>                 UET:missing_value = -12345.f ;
>         float VNT(k, j, i) ;
>                 VNT:long_name = "North Flux of Heat" ;
>                 VNT:units = "degC/s" ;
>                 VNT:grid_loc = "3121" ;
>                 VNT:missing_value = -12345.f ;
>

--
___________________________________________________

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
___________________________________________________

```