[ncl-talk] set_dimension_query

Dennis Shea shea at ucar.edu
Tue Sep 19 11:06:45 MDT 2017


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.
> h00v02.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.
> h00v02.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>
>
>
>
>
>
>
> _______________________________________________
> 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>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> 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>
>
>
>
>
>
>
> _______________________________________________
> 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/20170919/1edf147f/attachment-0001.html>


More information about the ncl-talk mailing list