[ncl-talk] set_dimension_query

Kunal Bali kunal.bali9 at gmail.com
Mon Sep 18 06:11:59 MDT 2017


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.h
>>>>>>>>>> 00v02.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
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170918/9bcf0695/attachment-0001.html>


More information about the ncl-talk mailing list