[ncl-talk] set_dimension_query

Kunal Bali kunal.bali9 at gmail.com
Tue Sep 26 10:26:00 MDT 2017


Thanks for all the suggestions Dennis sir.
But now I have come to know that the dimensions

nlat=1200
nlon=1200

are belongs to only of Indian region.

And the code I am using below is not displaying the data over Indian region.

 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

So please help me regarding this issue.

regards
Kunal Bali






On Tue, Sep 19, 2017 at 10:36 PM, Dennis Shea <shea at ucar.edu> wrote:

> Ditto what Marston posted.
>
> ===
> Please look at NCL's FAQ.
>
> [1] Click "Support" at top of page
> [2] Click FAQ
>
> I think it would be instructive to look at all of the topics.
>
> For example:
>
> *Error messages and other issues*
> Look at #7
>
>
>
> On Tue, Sep 19, 2017 at 3:03 AM, Marston Johnston <shejo284 at gmail.com>
> wrote:
>
>> It tells you in the warning message, exactly what to do to remove the
>> warning.
>>
>> If you want to improve you coding skills, it would better to understand
>> why the warning is occurring in the first place: dimension 0 and 1 of the
>> variable you are passing has no names or the names do not match the
>> variable on the lhs.
>>
>>
>>
>> /M
>>
>>
>>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> Marston S. Ward, PhD
>>
>> Department of Earth Sciences
>>
>> University of Gothenburg, Sweden
>>
>> Email: marston.johnston at gu.se
>>
>> SkypeID: marston.johnston
>>
>> Phone: +46-31-7864901 <+46%2031%20786%2049%2001>
>>
>> Only the fruitful thing is true!
>>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>>
>>
>>
>>
>> *From: *ncl-talk <ncl-talk-bounces at ucar.edu> on behalf of Kunal Bali <
>> kunal.bali9 at gmail.com>
>> *Date: *Tuesday, 19 September 2017 at 10:50
>> *Cc: *"ncl-talk at ucar.edu" <ncl-talk at ucar.edu>
>> *Subject: *Re: [ncl-talk] set_dimension_query
>>
>>
>>
>> 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.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 <%28303%29%20497-1726>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> 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 <%28303%29%20497-1726>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> 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 <%28303%29%20497-1726>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> 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
>>
>>
>>
>>
>>
>> _______________________________________________ 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/20170926/84d4bf31/attachment.html>


More information about the ncl-talk mailing list