[ncl-talk] set_dimension_query

Kunal Bali kunal.bali9 at gmail.com
Tue Sep 19 02:50:08 MDT 2017


Thank you for providing this information.

It's working. The script given below is now able to convert multiple files
into .netcdf with the desired file name.
However, on the same time, it also shows some warnings. But noted that, I
am successfully creating the multiple files into the netcdf. I just need to
know that how can I remove these warnings?

warning:VarVarWrite: Dimension names for dimension number (0) don't match,
assigning name of rhs dimension to lhs and overwriting coordinate variable,
use "(/../)" if this change is not desired
warning:VarVarWrite: Dimension names for dimension number (1) don't match,
assigning name of rhs dimension to lhs and overwriting coordinate variable,
use "(/../)" if this change is not desired
warning:["Execute.c":8640]:Execute: Error occurred at or near line 22 in
file netcdf2.ncl



;----------------------------------------------------------------------

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
;---Read data

        diri = "/Users/Pushp/Desktop/test/"   ; input directory
        fili  = systemfunc("cd "+diri+" ; ls MAIACTAOT.h00v02*hdf")
        nfili = dimsizes(fili)
        print("nfili="+nfili)


        dirnc = "/Users/Pushp/Desktop/test/"   ; output (netCDF) directory

        do nf=0,nfili-1
        pthi = diri+fili(nf)
        f    = addfile(pthi,"r")

        var  = short2flt(f->Optical_Depth_055(:,:))

        nlat = 1200
        nlon = 1200
        lat  = latGlobeFo(nlat, "lat", "latitude", "degrees_north")
        lon  = lonGlobeFo(nlon, "lon", "longitude", "degrees_east")
    ;    lat  = lat(::-1)
        lon  = (/ lon - 180. /)  ; subtract 180 from all values
        lon&lon = lon           ; update coordinates

        var!0 = "lat"    ; you can name these dimensions whatever you want..
        var!1 = "lon"
        var&lat = lat     ; but make sure you refer to the correct named
dimensions
        var&lon = lon


     filroot = str_get_cols(fili(nf), 0, 27)  ; eg:
"MAIACTAOT.h00v02.20000570505"
     filnc    = filroot+".nc"
     pthnc  = dirnc + filnc

     system("/bin/rm -f "+pthnc)
     ncdf = addfile(pthnc,"c")  ; open new netCDF file


     end do    ; end 'nf' loop

   ;     system("/bin/rm -f simple2.nc")
   ;     ncdf = addfile("simple2.nc" ,"c")  ; open output netCDF file

    ;===================================================================
    ; create global attributes of the file (optional)
    ;===================================================================
       fAtt               = True            ; assign file attributes
       fAtt at title         = "NCL Simple Approach to netCDF Creation"
       fAtt at source_file   =  "original-file.nc"
       fAtt at Conventions   = "None"
       fAtt at creation_date = systemfunc ("date")
       fileattdef( ncdf, fAtt )            ; copy file attributes

    ;===================================================================
    ; make time an UNLIMITED dimension; recommended  for most applications
    ;===================================================================
       filedimdef(ncdf,"time",-1,True)

;       ncdf->var&lat = lat
;       ncdf->var&lon = lon
       ncdf->var = var

end


Kunal Bali
Research Scholar
Radio & Atmospheric Science Division
CSIR - National Physical Laboratory
New Delhi - 110012
India





On Mon, Sep 18, 2017 at 9:04 PM, Dennis Shea <shea at ucar.edu> wrote:

> Loop over the files ...
>
>  diri = "/media/Local Disk/NPL/MODIS_FPC/"   ; input directory
>  fili  = systemfunc("cd "+diri +; ls MAIACTAOT.h00v02*hdf")
>  nfili = dimsizes(fili)
>  print("nfili="+nfili)
>
>  dirnc = "/media/Local Disk/NPL/MODIS_FPC/"   ; output (netCDF) directory
>
>  do nf=0,nfili-1
>       pthi = diri+fili(nf)
>       f      = addfile(pthi,"r")
>
>       ....
>
>      filroot = *str_get_cols*(fili(nf), 0, 27)  ; eg:
> "MAIACTAOT.h00v02.20000570505"
>      filnc    = filroot+".nc"
>      pthnc  = dirnc + filnc
>
>      system("/bin/rm -f "+pthnc)
>      ncdf = addfile(pthnc,"c")  ; open new netCDF file
>
>      ....
>
>
> end do    ; end 'nf' loop
>
> =====
> If there is something you do not understand use some print statements.
>
> Become familiar with the 'string' category. Look at all the functions.
>
>    https://www.ncl.ucar.edu/Document/Functions/string.shtml
>
> Please read the documentation for the function used above
>
>    https://www.ncl.ucar.edu/Document/Functions/Built-in/str_get_cols.shtml
>
> Good Luck
>
>
>
> On Mon, Sep 18, 2017 at 6:11 AM, Kunal Bali <kunal.bali9 at gmail.com> wrote:
>
>> Thnks for the reply.
>>
>> that will change the name of only one file. isn't it. but what about the
>> other files
>>
>> I have 365 files in one directory and I need to change all the file name
>> one by one.
>>
>>
>> Kunal Bali
>>
>>
>>
>>
>>
>>
>> On Mon, Sep 18, 2017 at 5:14 PM, Dennis Shea <shea at ucar.edu> wrote:
>>
>>> Really?
>>>
>>> Change:
>>>       system("/bin/rm -f simple.nc")
>>>       ncdf = addfile("simple.nc" ,"c")
>>>
>>> To:
>>>       system("/bin/rm -f MAIACTAOT.h00v02.20000570505.nc
>>> <http://simple.nc>")
>>>       ncdf = addfile("MAIACTAOT.h00v02.20000570505.nc" ,"c")
>>>
>>>
>>> On Mon, Sep 18, 2017 at 12:37 AM, Kunal Bali <kunal.bali9 at gmail.com>
>>> wrote:
>>>
>>>> Thanks, it worked.
>>>>
>>>> one more question is that.
>>>>
>>>> I used the code (given below). So it gives simple.nc name as an output
>>>> file.
>>>>
>>>> ncdf = addfile("simple.nc" ,"c")
>>>>
>>>> If I want to keep the original file name with the output file name then
>>>> what should I do?
>>>>
>>>> I mean the original file name is MAIACTAOT.h00v02.20003660700.hdf
>>>> Now I want to create my netcdf file name  as
>>>> MAIACTAOT.h00v02.20003660700.nc NOT simple.nc.
>>>>
>>>> I can not simply write simple.nc file name because I have many files.
>>>> e.g I have one directory having 365 .hdf file. So I need to convert all
>>>> the hdf file to netcdf file at once with the same name of original file
>>>> names.
>>>>
>>>> I hope you have got my query.
>>>>
>>>> please let me know that too.
>>>>
>>>> Thank You
>>>>
>>>>
>>>> Kunal Bali
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Thu, Sep 14, 2017 at 9:09 PM, Adam Phillips <asphilli at ucar.edu>
>>>> wrote:
>>>>
>>>>> Hi Kunal,
>>>>> It looks to me like your latitudes are flipped. You are setting up and
>>>>> assigning your coordinate lat/lon variables in this coding:
>>>>>
>>>>> nlat = 1200
>>>>> nlon = 1200
>>>>> lat = latGlobeFo(nlat, "lat", "latitude", "degrees_north")
>>>>> lon = lonGlobeFo(nlon, "lon", "longitude", "degrees_east")
>>>>> lat = lat(::-1)
>>>>> lon = (/ lon - 180. /)  ; subtract 180 from all values
>>>>> lon&lon = lon           ; update coordinates
>>>>>
>>>>> var!0 = "lat"    ; you can name these dimensions whatever you want..
>>>>> var!1 = "lon"
>>>>> var&lat = lat     ; but make sure you refer to the correct named
>>>>> dimensions
>>>>> var&lon = lon
>>>>>
>>>>> Assuming I'm right on your latitudes being the issue, one of the
>>>>> following two modifications should work:
>>>>> Delete this line:
>>>>> lat = lat(::-1)
>>>>>
>>>>> If the above doesn't fix it, try this:
>>>>> Change this:
>>>>> lat = lat(::-1)
>>>>> to this:
>>>>> lat = lat(::-1)
>>>>> lat&lat = lat
>>>>>
>>>>> If you continue to have issues please respond to ncl-talk.
>>>>> Adam
>>>>>
>>>>> On Wed, Sep 13, 2017 at 12:35 PM, Kunal Bali <kunal.bali9 at gmail.com>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>> For direct output as a netcdf format, I used the script given below.
>>>>>> It produced the netcdf file easily. But the netcdf file and original hdf
>>>>>> file both showing the different results. The data pattern is shifted. I
>>>>>> mean it may be related to the lat lon position. please see the attached
>>>>>> file, you will understand.  And please let me know which one is correct.
>>>>>>
>>>>>> ;-----------------------------------------------------------
>>>>>> -----------
>>>>>>
>>>>>> 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
>>>>>> ;---Read data
>>>>>>         a = addfile("/media/Local Disk/NPL/MODIS_FPC/MAIACTAOT.h
>>>>>> 00v02.20000570505.hdf","r")
>>>>>>         var  = short2flt(a->Optical_Depth_055(:,:))
>>>>>>             ;          short2flt(a[:]->noxfire)
>>>>>>         nlat = 1200
>>>>>>         nlon = 1200
>>>>>>         lat = latGlobeFo(nlat, "lat", "latitude", "degrees_north")
>>>>>>         lon = lonGlobeFo(nlon, "lon", "longitude", "degrees_east")
>>>>>>         lat = lat(::-1)
>>>>>>         lon = (/ lon - 180. /)  ; subtract 180 from all values
>>>>>>         lon&lon = lon           ; update coordinates
>>>>>>
>>>>>>         var!0 = "lat"    ; you can name these dimensions whatever you
>>>>>> want..
>>>>>>         var!1 = "lon"
>>>>>>         var&lat = lat     ; but make sure you refer to the correct
>>>>>> named dimensions
>>>>>>         var&lon = lon
>>>>>>
>>>>>>                  system("/bin/rm -f simple.nc")
>>>>>>              ncdf = addfile("simple.nc" ,"c")  ; open output netCDF
>>>>>> file
>>>>>>
>>>>>>     ;===========================================================
>>>>>> ========
>>>>>>     ; create global attributes of the file (optional)
>>>>>>     ;===========================================================
>>>>>> ========
>>>>>>        fAtt               = True            ; assign file attributes
>>>>>>        fAtt at title         = "NCL Simple Approach to netCDF Creation"
>>>>>>        fAtt at source_file   =  "original-file.nc"
>>>>>>        fAtt at Conventions   = "None"
>>>>>>        fAtt at creation_date = systemfunc ("date")
>>>>>>        fileattdef( ncdf, fAtt )            ; copy file attributes
>>>>>>
>>>>>>     ;===========================================================
>>>>>> ========
>>>>>>     ; make time an UNLIMITED dimension; recommended  for most
>>>>>> applications
>>>>>>     ;===========================================================
>>>>>> ========
>>>>>>        filedimdef(ncdf,"time",-1,True)
>>>>>>        ncdf->var = var
>>>>>>
>>>>>> end
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Kunal Bali
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Sep 13, 2017 at 11:27 PM, Kunal Bali <kunal.bali9 at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> No problem, I sorted out.
>>>>>>>
>>>>>>> Just changed short to float.
>>>>>>>
>>>>>>> Kunal Bali
>>>>>>> Research Scholar
>>>>>>> Radio & Atmospheric Science Division
>>>>>>> CSIR - National Physical Laboratory
>>>>>>> New Delhi - 110012
>>>>>>> India
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Sep 13, 2017 at 11:24 PM, Kunal Bali <kunal.bali9 at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Thanks for providing this information.
>>>>>>>>
>>>>>>>> Also, I would like to mention that when I plot this data. The
>>>>>>>> values are not in the domain. I mean the real values lie in-between 0 to 1
>>>>>>>> but here it is reaching to 400.
>>>>>>>>
>>>>>>>> So, how to correct the values?
>>>>>>>>
>>>>>>>> Description of the variable is
>>>>>>>>
>>>>>>>> short Optical_Depth_055(YDim=1200, XDim=1200);
>>>>>>>>   :long_name = "AOT at 0.55 micron";
>>>>>>>>   :scale_factor = 0.001; // double
>>>>>>>>   :add_offset = 0.0; // double
>>>>>>>>   :unit = "None";
>>>>>>>>   :_FillValue = -28672S; // short
>>>>>>>>   :valid_range = -100S, 5000S; // short
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Kunal Bali
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Sep 13, 2017 at 10:28 PM, Adam Phillips <asphilli at ucar.edu>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi Kunal,
>>>>>>>>> Yes, clicking on the output netCDF link from the Applications
>>>>>>>>> page:
>>>>>>>>> http://www.ncl.ucar.edu/Applications/o-netcdf.shtml
>>>>>>>>> I would recommend following the inefficient method #1. Unless you
>>>>>>>>> are writing a file with many large variables, the inefficient method works
>>>>>>>>> just fine.
>>>>>>>>> http://www.ncl.ucar.edu/Applications/method_1.shtml
>>>>>>>>> Good luck,
>>>>>>>>> Adam
>>>>>>>>>
>>>>>>>>> On Wed, Sep 13, 2017 at 10:25 AM, Kunal Bali <
>>>>>>>>> kunal.bali9 at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Thank you so much, it worked
>>>>>>>>>>
>>>>>>>>>> I want to know one more thing.
>>>>>>>>>> After rearranging the dimensions can we now convert (or write)
>>>>>>>>>> this arranged file into netcdf format?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Kunal Bali
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Sep 13, 2017 at 8:55 PM, Adam Phillips <asphilli at ucar.edu
>>>>>>>>>> > wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Kunal,
>>>>>>>>>>> I think you just need to rearrange the order of your lines and
>>>>>>>>>>> tweak a couple of lines. As the error message states, lat is not defined in
>>>>>>>>>>> your 3rd line and you are referring to it as if it is.Try this:
>>>>>>>>>>> a = addfile("/media/Local Disk/NPL/MODIS_FPC/MAIACTAOT.h
>>>>>>>>>>> 00v02.20000570505.hdf","r")
>>>>>>>>>>> var  = a->Optical_Depth_055(:,:)
>>>>>>>>>>> nlat = 1200
>>>>>>>>>>> nlon = 1200
>>>>>>>>>>> lat = latGlobeFo(nlat, "lat", "latitude", "degrees_north")
>>>>>>>>>>> lon = lonGlobeFo(nlon, "lon", "longitude", "degrees_east")
>>>>>>>>>>> lat = lat(::-1)
>>>>>>>>>>> lon = (/ lon - 180. /)  ; subtract 180 from all values
>>>>>>>>>>> lon&lon = lon           ; update coordinates
>>>>>>>>>>>
>>>>>>>>>>> var!0 = "lat"    ; you can name these dimensions whatever you
>>>>>>>>>>> want..
>>>>>>>>>>> var!1 = "lon"
>>>>>>>>>>> var&lat = lat     ; but make sure you refer to the correct named
>>>>>>>>>>> dimensions
>>>>>>>>>>> var&lat = lon
>>>>>>>>>>> ;var&XDim_grid1km = lat
>>>>>>>>>>> ;var&YDim_grid1km = lon
>>>>>>>>>>>
>>>>>>>>>>> If you have any further questions please respond to the ncl-talk
>>>>>>>>>>> email list.
>>>>>>>>>>> Adam
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Sep 13, 2017 at 8:38 AM, Kunal Bali <
>>>>>>>>>>> kunal.bali9 at gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Dear NCL
>>>>>>>>>>>>
>>>>>>>>>>>> I have a file with the variable summary. The dimensions are in
>>>>>>>>>>>> 2D.
>>>>>>>>>>>>
>>>>>>>>>>>> ncl 2>  printVarSummary(var)
>>>>>>>>>>>>
>>>>>>>>>>>> Variable: var
>>>>>>>>>>>> Type: short
>>>>>>>>>>>> Total Size: 2880000 bytes
>>>>>>>>>>>>             1440000 values
>>>>>>>>>>>> Number of Dimensions: 2
>>>>>>>>>>>> Dimensions and sizes:    [*YDim_grid1km | 1200] x
>>>>>>>>>>>> [XDim_grid1km | 1200]*
>>>>>>>>>>>> Coordinates:
>>>>>>>>>>>> Number Of Attributes: 7
>>>>>>>>>>>>   long_name :    AOT at 0.55 micron
>>>>>>>>>>>>   scale_factor :    0.001
>>>>>>>>>>>>   add_offset :       0
>>>>>>>>>>>>   unit :    None
>>>>>>>>>>>>   _FillValue :    -28672
>>>>>>>>>>>>   valid_range :    ( -100, 5000 )
>>>>>>>>>>>>   hdf_name :    Optical_Depth_055
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> I am trying to read the dimensions of this file as
>>>>>>>>>>>>
>>>>>>>>>>>> begin
>>>>>>>>>>>> ;---Read data
>>>>>>>>>>>>          a = addfile("/media/Local
>>>>>>>>>>>> Disk/NPL/MODIS_FPC/MAIACTAOT.h00v02.20000570505.hdf","r")
>>>>>>>>>>>>
>>>>>>>>>>>>             var  = a->Optical_Depth_055(:,:)
>>>>>>>>>>>>
>>>>>>>>>>>>          var&XDim_grid1km = lat
>>>>>>>>>>>>          var&YDim_grid1km = lon
>>>>>>>>>>>>
>>>>>>>>>>>>         nlat = 1200
>>>>>>>>>>>>          nlon = 1200
>>>>>>>>>>>>             lat = latGlobeFo(nlat, "lat", "latitude",
>>>>>>>>>>>> "degrees_north")
>>>>>>>>>>>>         lon = lonGlobeFo(nlon, "lon", "longitude",
>>>>>>>>>>>> "degrees_east")
>>>>>>>>>>>>             lat = lat(::-1)
>>>>>>>>>>>>             lon = (/ lon - 180. /)  ; subtract 180 from all
>>>>>>>>>>>> values
>>>>>>>>>>>>             lon&lon = lon           ; update coordinates
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>         var!0 = "lat"
>>>>>>>>>>>>         var!1 = "lon"
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> But the error appeared as
>>>>>>>>>>>> *fatal:Variable (lat) is undefined*
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> So, could anyone please let me know that how to read dimension
>>>>>>>>>>>> of this file.
>>>>>>>>>>>>
>>>>>>>>>>>> Thank You
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Regards
>>>>>>>>>>>> Kunal Bali
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> ncl-talk mailing list
>>>>>>>>>>>> ncl-talk at ucar.edu
>>>>>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Adam Phillips
>>>>>>>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory,
>>>>>>>>>>> NCAR
>>>>>>>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>>>>>>>>> <(303)%20497-1726>
>>>>>>>>>>>
>>>>>>>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> ncl-talk mailing list
>>>>>>>>>> ncl-talk at ucar.edu
>>>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Adam Phillips
>>>>>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>>>>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726 <(303)%20497-1726>
>>>>>>>>>
>>>>>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> ncl-talk mailing list
>>>>>> ncl-talk at ucar.edu
>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Adam Phillips
>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726 <(303)%20497-1726>
>>>>>
>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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/20170919/35f12285/attachment.html>


More information about the ncl-talk mailing list