[ncl-talk] NetCDF output file from NCL not opening in GrADS

S Br sbr.climate at gmail.com
Fri Jul 7 08:19:15 MDT 2017


Hi Dennis,
Thanks for modifying the code. Now, it easily read the time, lat and lon
coordinate. However, still it couldn't generate the dimension and variables
correctly in the output file. It would be nice, if NCL could generate the
the variables and dimension similar to the input file.

*Output file:*

ncdump -h tas_aave_Asia_bandpass30-100.nc
netcdf tas_aave_Asia_bandpass30-100 {
dimensions:
ncl0 = 1000 ;
ncl1 = 1 ;
ncl2 = 1 ;
variables:
double tasmask(ncl0, ncl1, ncl2) ;
tasmask:_FillValue = -999000000. ;
}


*The variables and dimension in the input file is as given below.*

dimensions:
lon = 1 ;
lat = 1 ;
time = UNLIMITED ; // (1000 currently)
variables:
double lon(lon) ;
lon:standard_name = "longitude" ;
lon:long_name = "longitude" ;
lon:units = "degrees_east" ;
lon:axis = "X" ;
double lat(lat) ;
lat:standard_name = "latitude" ;
lat:long_name = "latitude" ;
lat:units = "degrees_north" ;
lat:axis = "Y" ;
double time(time) ;
time:standard_name = "time" ;
time:long_name = "Time" ;
time:units = "years since 850-1-1 00:00:00" ;
time:calendar = "standard" ;
time:axis = "T" ;
double tasmask(time, lat, lon) ;
tasmask:_FillValue = -999000000. ;
tasmask:missing_value = -999000000. ;


Thanks.
SB


On Fri, Jul 7, 2017 at 2:20 PM, Dennis Shea <shea at ucar.edu> wrote:

>    fn  = "tas_aave_Asia.nc" ; define filename
>    in  = addfile(fn,"r")                                 ; open netcdf file
>     x  = in->tasmask(:,0:0,0:0)                   ; get data; avoid
> elimination of degenerate dimension
>     printVarSummary(x)                             ; x(time,lat,lon)
> ; ***********************************************
> ; create the filter weights and apply
> ; ***********************************************
>
>   ihp     = 2                             ; band pass
>   sigma   = 1.0                           ; Lanczos sigma
>
>   nWgt    = 201                           ; loose 100 each end
>   fca     = 1./100.                       ; start freq
>   fcb     = 1./30.                        ; last  freq
>   wgt     = filwgts_lanczos (nWgt, ihp, fca, fcb, sigma )
>   xBPF    = wgt_runave_n ( x, wgt, 0, 0 )      ; 30-100 days
>   printVarSummary(xBPF)
>
> ***********************************************
> ; create new date array for use on the plot
> ; ***********************************************
>   filo = "tas_aave_Asia_bandpass30-100.nc"
>   system ("/bin/rm "+filo) ; remove any pre-existing file
>   fo = addfile(filo , "c") ; open output file
> *;;**filedimdef*
> <http://www.ncl.ucar.edu/Document/Functions/Built-in/filedimdef.shtml>
> (fo,"time",-1,True)       ; make 'time' unlimited
>   fo->tasmax = xBPF                      ; write ud to a file
>
> On Fri, Jul 7, 2017 at 6:04 AM, gibies george <gibiesgeorge at gmail.com>
> wrote:
>
>> But where is your original coordinate?
>>
>> On Jul 7, 2017 4:01 PM, "S Br" <sbr.climate at gmail.com> wrote:
>>
>>> Hi,
>>> Thanks for your reply. Now I reshaped the variable and put an arbitrary
>>> lat/lon value. Still, I couldn't open the file in GrADS.
>>>
>>> I have checked the output file, it correctly reading the dimension but
>>> may be wrong with variables.
>>>
>>> ncdump -h tas_aave_Asia_bandpass30-100.nc
>>> netcdf tas_aave_Asia_bandpass30-100 {
>>> dimensions:
>>> time = UNLIMITED ; // (1000 currently)
>>> lat = 1 ;
>>> lon = 1 ;
>>> variables:
>>> double tasmaskn(time, lat, lon) ;
>>> tasmaskn:_FillValue = -999000000. ;
>>> int lat(lat) ;
>>> int lon(lon) ;
>>> }
>>>
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>
>>> ; ***********************************************
>>> ; create new date array for use on the plot
>>> ; ***********************************************
>>>   filo = "tas_aave_Asia_bandpass30-100.nc"
>>>   system ("/bin/rm "+filo) ; remove any pre-existing file
>>>   fo = addfile(filo , "c") ; open output file
>>>   filedimdef(fo,"time",-1,True)       ; make 'time' unlimited
>>>   tasmask=xBPF
>>>   ntime = 1000
>>>   nlat = 1
>>>   nlon = 1
>>>   tasmaskn = reshape(tasmask,(/ntime,nlat,nlon/))
>>>   printVarSummary(tasmaskn)
>>>   tasmaskn!0="time"
>>>   tasmaskn!1="lat"
>>>   tasmaskn&lat=nlat
>>>   tasmaskn!2="lon"
>>>   tasmaskn&lon=nlon
>>>   fo->tasmaskn = tasmaskn ; write ud to a file
>>> end
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Jul 7, 2017 at 8:45 AM, gibies george <gibiesgeorge at gmail.com>
>>> wrote:
>>>
>>>> The first step I told is to reshape "tasmask" using reshape function.
>>>>
>>>> Secondly what I told is to put some arbitrary lat-lon coordinate value.
>>>>
>>>>
>>>> On 6 July 2017 at 16:29, S Br <sbr.climate at gmail.com> wrote:
>>>>
>>>>> Hi Gibies,
>>>>> Thanks for your reply. I have added as you suggested. I get some error
>>>>> in the code. Do you think, I have done correctly.
>>>>>
>>>>> ; ***********************************************
>>>>> ; create new date array for use on the plot
>>>>> ; ***********************************************
>>>>>   filo = "tas_aave_Asia_bandpass30-100.nc"
>>>>>   system ("/bin/rm "+filo) ; remove any pre-existing file
>>>>>   fo = addfile(filo , "c") ; open output file
>>>>>   filedimdef(fo,"time",-1,True)       ; make 'time' unlimited
>>>>>   tasmask=xBPF
>>>>>   tasmask!0="time"
>>>>>   tasmask!1="lat"
>>>>>   tasmask&lat=*"lat" *
>>>>>   tasmask!2="lon"
>>>>>   tasmask&lon=*"lon"*
>>>>>   fo->tasmask = tasmask ; write ud to a file
>>>>> end
>>>>>
>>>>> I get the error as,
>>>>>
>>>>> fatal:Variable (tasmask) has (1) dimensions can not write to dimension
>>>>> (1)
>>>>> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 38
>>>>> in file bandpass.ncl
>>>>>
>>>>> Thanks.
>>>>> SB
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Jul 6, 2017 at 10:13 AM, gibies george <gibiesgeorge at gmail.com
>>>>> > wrote:
>>>>>
>>>>>> I have seen those mails from Dr. Dennis and Dr. Adam.
>>>>>>
>>>>>> You can use reshape function to add additional coordinate to a
>>>>>> variable. Define some single value coordinate for latitude and longitude.
>>>>>>
>>>>>> varname!0 ="time"
>>>>>> varname!1 = "lat"
>>>>>> varname&lat = .......
>>>>>> varname!2 = "lon"
>>>>>> varname&lon = ......
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Jul 6, 2017 2:08 PM, "S Br" <sbr.climate at gmail.com> wrote:
>>>>>>
>>>>>>> Hi Gibies,
>>>>>>> NCL also provided the same solution as you have mentioned.
>>>>>>> Could you please tell me how can I add single value coordinates
>>>>>>> (time, lat, lon) to the variable.
>>>>>>> Hope, you can write me the command for me.
>>>>>>>
>>>>>>> Thanks.
>>>>>>> SB
>>>>>>>
>>>>>>> On Wed, Jul 5, 2017 at 5:58 PM, gibies george <
>>>>>>> gibiesgeorge at gmail.com> wrote:
>>>>>>>
>>>>>>>> Yes, you can add single value coordinates (time lat lon) to the
>>>>>>>> variable before saving it to nc file.
>>>>>>>>
>>>>>>>> On Jul 5, 2017 9:58 PM, "S Br" <sbr.climate at gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Is it possible to do something inside the NCL script so that it
>>>>>>>>> can be opened by GrADS.
>>>>>>>>>
>>>>>>>>> On Wed, Jul 5, 2017 at 5:25 PM, gibies george <
>>>>>>>>> gibiesgeorge at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> This is because grads required standard file coordinates
>>>>>>>>>> structure. Time lat lon etc.
>>>>>>>>>>
>>>>>>>>>> On Jul 5, 2017 9:43 PM, "S Br" <sbr.climate at gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>> I have applied bandpass filter to my one dimentional NetCDF
>>>>>>>>>>> file. I have written the output to a NetCDF file but this output file is
>>>>>>>>>>> not opening in GrADS. I get the following error.
>>>>>>>>>>>
>>>>>>>>>>> ga-> sdfopen tas_aave_Asia_bandpass30-100.nc
>>>>>>>>>>> Scanning self-describing file:  tas_aave_Asia_bandpass30-100.nc
>>>>>>>>>>> gadsdf: SDF file has no discernable X coordinate.
>>>>>>>>>>>   To open this file with GrADS, use a descriptor file with an
>>>>>>>>>>> XDEF entry.
>>>>>>>>>>>   Documentation is at http://cola.gmu.edu/grads/gado
>>>>>>>>>>> c/SDFdescriptorfile.html
>>>>>>>>>>>
>>>>>>>>>>> Could you please suggest if I am doing somewhere wrong in my NCL
>>>>>>>>>>> script . The input file is perfectly fine with GrADS.
>>>>>>>>>>>
>>>>>>>>>>> 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"
>>>>>>>>>>> begin
>>>>>>>>>>>
>>>>>>>>>>>    fn  = "tas_aave_Asia.nc" ; define filename
>>>>>>>>>>>    in  = addfile(fn,"r")                                 ; open
>>>>>>>>>>> netcdf file
>>>>>>>>>>>     x  = in->tasmask(:,0,0)
>>>>>>>>>>>   ; get data
>>>>>>>>>>>
>>>>>>>>>>> ; ***********************************************
>>>>>>>>>>> ; create the filter weights and apply
>>>>>>>>>>> ; ***********************************************
>>>>>>>>>>>
>>>>>>>>>>>   ihp     = 2                             ; band pass
>>>>>>>>>>>   sigma   = 1.0                           ; Lanczos sigma
>>>>>>>>>>>
>>>>>>>>>>>   nWgt    = 201                           ; loose 100 each end
>>>>>>>>>>>   fca     = 1./100.                       ; start freq
>>>>>>>>>>>   fcb     = 1./30.                        ; last  freq
>>>>>>>>>>>   wgt     = filwgts_lanczos (nWgt, ihp, fca, fcb, sigma )
>>>>>>>>>>>   xBPF    = wgt_runave ( x, wgt, 0 )      ; 30-100 days
>>>>>>>>>>>
>>>>>>>>>>>    copy_VarMeta(x,xBPF)
>>>>>>>>>>>    dNames= getvardims(xBPF)
>>>>>>>>>>>    dSIZES=dimsizes(xBPF)
>>>>>>>>>>>    print (dNames)
>>>>>>>>>>>    print (dSIZES)
>>>>>>>>>>>
>>>>>>>>>>> ; ***********************************************
>>>>>>>>>>> ; create new date array for use on the plot
>>>>>>>>>>> ; ***********************************************
>>>>>>>>>>>   filo = "tas_aave_Asia_bandpass30-100.nc"
>>>>>>>>>>>   system ("/bin/rm "+filo) ; remove any pre-existing file
>>>>>>>>>>>   fo = addfile(filo , "c") ; open output file
>>>>>>>>>>>   tasmax=xBPF(:)
>>>>>>>>>>>   fo->tasmax = tasmax ; write ud to a file
>>>>>>>>>>> end
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>> SB
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> ncl-talk mailing list
>>>>>>>>>>> ncl-talk at ucar.edu
>>>>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>>>
>>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170707/a6a8381e/attachment.html 


More information about the ncl-talk mailing list