[ncl-talk] write variable attribute
Luo, Chao
chao.luo at eas.gatech.edu
Fri Aug 28 14:21:09 MDT 2015
Thanks very much for your help and time. I still can't write out variable attribute even I followed your sample, and I don't what caused the problem.
Appreciate any suggestions.
Chao
----- Original Message -----
From: "Alan Brammer" <abrammer at albany.edu>
To: "Chao Luo" <chao.luo at eas.gatech.edu>
Cc: "ncl-talk Talk" <ncl-talk at ucar.edu>
Sent: Friday, August 28, 2015 12:39:28 PM
Subject: Re: [ncl-talk] write variable attribute
The below example is how it should work. A ncl_filedump of your output netcdf might be useful for people to see what is missing compared to the data in the script.
Not sure I follow what the problem is. If the metadata is written I don't see how the attributes weren't also.
$ ncl
ncout = addfile(" test.nc ","c")
x = 0
x!0 = "test"
x&test = 23
x at Some_att = "First Att"
x at Some_other_att = "Second Att"
x at date = systemfunc("date")
ncout->x = x
exit
$ ncl_filedump test.nc
Copyright (C) 1995-2015 - All Rights Reserved
University Corporation for Atmospheric Research
NCAR Command Language Version 6.3.0
The use of this software is governed by a License Agreement.
See http://www.ncl.ucar.edu/ for more details.
Variable: f
Type: file
filename: test
path: test.nc
file global attributes:
dimensions:
test = 1
variables:
integer x ( test )
date : Fri Aug 28 19:32:35 UTC 2015
Some_other_att : Second Att
Some_att : First Att
integer test ( test )
On Fri, Aug 28, 2015 at 3:13 PM, Luo, Chao < chao.luo at eas.gatech.edu > wrote:
Yes, it write out metadata of TEMP2, but still no TEMP2 attribute write out when I use ncdf->tem2 = temp2. What I want to write out is TEMP2 values and attribute. Thanks!
Chao
From: "Alan Brammer" < abrammer at albany.edu >
To: "Chao Luo" < chao.luo at eas.gatech.edu >
Cc: "ncl-talk Talk" < ncl-talk at ucar.edu >
Sent: Friday, August 28, 2015 11:06:55 AM
Subject: Re: [ncl-talk] write variable attribute
You've commented out the line that explicitly writes the attributes to the file. Likely because you haven't explicitly defined the variable in the file.
But by also surrounding temp2 with (/ /) you're telling ncl to not copy any metadata.
That notation is only useful when you have already defined the variable in the file.
So
ncdf->temp2 = temp2
Will write out the contents and the metadata/attributes with the variable.
; filevarattdef(ncdf,"temp2",temp2)
ncdf->TFLAG =TFLAG
ncdf->temp2 = (/temp2/)
On Fri, Aug 28, 2015 at 1:33 PM, Luo, Chao < chao.luo at eas.gatech.edu > wrote:
<blockquote>
Dear All,
I am working on temperature interpolation from 36km to 4km by ESMF_regrid, and want to write out the TEMP2 at new resolution,
unfortunately the temp2 attribute didn't write out in netcdf file, I have tried to define TEMP2 attribute by:
temp2!0 = "time"
temp2!1 = "lay"
temp2!2 = "lat"
temp2!3 = "lon"
temp2 at long_name = "TEMP2"
temp2 at units = "k"
temp2 at var_desc = "temperature at 2 m"
and by function of filevarattdef. Both didn't work.
Thanks very much for and help or suggestions!
Here is the script I used:
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl"
begin
diri_36 = "/data11/cluo/CMAQv5.0.1/scripts/mcip4.1/36km/201107/data/"
diri_4 = "/data12/cluo/smoke3.6.5/data/ge_dat/"
namei_36 = "GRIDCRO2D_148x112_20110701"
namei_4 = " geo_em.d01_1332x1008.nc "
f1 = addfile(diri_36+namei_36,"r")
;output lat/lon
lat2d_36km = f1->LAT(0,0,:,:) ; (TSTEP, LAY, ROW, COL) , 36km
lon2d_36km = f1->LON(0,0,:,:) ; (TSTEP, LAY, ROW, COL) , 36km
printVarSummary (lon2d_36km)
printMinMax(lon2d_36km,True)
f2 = addfile(diri_4+namei_4,"r")
;input lat/lon
lat2d_4km = f2->XLAT_M(0,:,:) ; 4km
lon2d_4km = f2->XLONG_M(0,:,:) ; 4km
printVarSummary (lon2d_4km)
printMinMax(lon2d_4km,True)
name_in = "METCRO2D_148x112_20110701"
nlay = 1
ntime = 25
time = new((/ntime/),integer)
time = ispan(0,ntime-1,1)
f3 = addfile(diri_36+name_in,"r") temp2_36 = f3->TEMP2(:,:,:,:) ;(TSTEP, LAY, ROW, COL)
TFLAG = f3->TFLAG(:,0,:)
temp2_36 at _FillValue = 9.999e+36
printVarSummary (temp2_36)
printMinMax(temp2_36,True)
diro = "/data11/cluo/cmaq4.6/data/post/smk31_post/"
filo = " out.nc " ; input file name
fl_nm_out = diro+filo
system ("/bin/rm -f "+fl_nm_out) ; Remove any pre-existing file
ncdf = addfile(fl_nm_out,"c")
;---Set up options for regridding
Opt = True
Opt at SrcGridLat = lat2d_36km ; source grid
Opt at SrcGridLon = lon2d_36km
Opt at DstGridLat = lat2d_4km ; destination grid
Opt at DstGridLon = lon2d_4km
Opt at SrcRegional = True ; Necessary if grids
Opt at DstRegional = True ; are regional
Opt at InterpMethod = "bilinear" ; "patch", "conserve"
Opt at ForceOverwrite = True ; Optional, but recommended.
Opt at PrintTimings = True ; Optional.
Opt at Debug = True ; Optional
temp2 = ESMF_regrid(temp2_36,Opt) ; Do the regridding
temp2!0 = "time"
temp2!1 = "lay"
temp2!2 = "lat"
temp2!3 = "lon"
temp2 at long_name = "TEMP2"
temp2 at units = "k"
temp2 at var_desc = "temperature at 2 m"
printVarSummary (temp2)
printMinMax(temp2,True)
; filevarattdef(ncdf,"temp2",temp2)
ncdf->TFLAG =TFLAG
ncdf->temp2 = (/temp2/)
end
_______________________________________________
ncl-talk mailing list
ncl-talk at ucar.edu
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
</blockquote>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150828/27dff390/attachment.html
More information about the ncl-talk
mailing list