[ncl-talk] Subsetting MACAv2 files

Rick Brownrigg brownrig at ucar.edu
Fri Sep 7 10:54:53 MDT 2018


Hi Toni,

I don't know the answer to your question for certain, but compression might
indeed be the issue. You can test this readily by running something like:

   ncl_convert2nc ..your-netcdf-filename.nc -nc4 -cl 5

and comparing the resultant file to the input. The "-cl 5" specifies a
compression level, a value ranging from 1 to 9 (the docs say that values
above 5 yield only marginally better compression).

If this is the case, you can compress your files at the time you write them
with a "CompressLevel" setfileoption:

    http://ncl.ucar.edu/Document/Functions/Built-in/setfileoption.shtml

Hope that helps...
Rick


On Fri, Sep 7, 2018 at 9:48 AM, Toni Klemm <toni-klemm at tamu.edu> wrote:

> Good morning,
>
> I created spatial subsets from MACAv2 downscaled climate projections for
> the continental US (CONUS), however, the subsetted files have the same file
> as the originals (ca. 1.5 GB), even though the subset area only covers
> about half of CONUS (I checked). I couldn’t attach the files, but I
> attached the NCL script below. The NCL script I use is adapted from one I
> used to create subsets of vegetation projections for which the file size
> afterwards was about half, as one would expect. Does anyone have ideas for
> why the size isn’t reduced? Is the original MACAv2 data somehow compressed
> and gets uncompressed in the process? Any advice is much appreciated.
>
> Thank you very much!
>
> Best,
> Toni
>
>
>
> ; ---------------------------------------------------
>
> 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
>
> RCP_in_list = [/"rcp45","rcp85"/]
>
> RCP_out_list = [/"rcp_45","rcp_85"/]
>
> model_list = [/"CCSM4","GFDL-ESM2M","HadGEM2-ES365","IPSL-CM5A-LR",
> "MRI-CGCM3"/]
>
> variable_list = [/"ppt","tdmean","tmax","tmin"/]
>
> do h = 0, ListCount(RCP_in_list) - 1
>
>   do j = 0, ListCount(model_list) - 1
>
>     do k = 0, ListCount(variable_list) - 1
>
>
>   ; ***********************************************
>   ; READ IN MACA FILE
>   ; ***********************************************
>
>   print("1 - Read in " + RCP_in_list[h](0) + "/" + model_list[j](0) + "/"
> + variable_list[k](0) + ".nc")
>
>   MACA_f = addfile("~/NIFA/MACAv2/MACA_" + RCP_in_list[h](0) + "/" +
> model_list[j](0) + "/" + variable_list[k](0) + ".nc", "r")
>
>
>   ; ***********************************************
>   ; READ IN VARIABLES
>   ; ***********************************************
>
>   print("2 - Read in variable")
>
>   if(variable_list[k](0) .eq. "ppt") then
>   variable = MACA_f->ppt(:,:,:)
>   end if
>
>   if(variable_list[k](0) .eq. "tdmean") then
>   variable = MACA_f->tdmean(:,:,:)
>   end if
>
>   if(variable_list[k](0) .eq. "tmax") then
>   variable = MACA_f->tmax(:,:,:)
>   end if
>
>   if(variable_list[k](0) .eq. "tmin") then
>   variable = MACA_f->tmin(:,:,:)
>   end if
>
>   lat = MACA_f->lat
>   lon = MACA_f->lon
>   time = MACA_f->time
>   description = variable at long_name
>
>
>   ; ***********************************************
>   ; CREATE US-SUBSET OF THE GLOBAL DATA
>   ; ***********************************************
>
>   print("3 - Create lat/lon subset")
>
>   ; let's choose latitudes of
>     latind = (/25,50/)
>
>   ; let's choose longitudes of
>     lonind = (/-118,-92/)
>
>   lti = ind_nearest_coord(latind,lat,0)  ; lti, lni = variables,
> ind_nearest_coord = pre-defined functions to determine the indices of
> locations closest to the coordinate array, needed later to define
> var_subdomain_3D
>   lni = ind_nearest_coord(lonind,lon,0)
>
>   lat_subdomain = lat(lti(0):lti(1))
>   lon_subdomain = lon(lni(0):lni(1))
>
>   var_subdomain_3D = variable(:,lti(0):lti(1),lni(0):lni(1))  ; define
> the subdomain based on latind and lonind
>
>
>   ; ***********************************************
>   ; 3 - WRITE THE SUBSET INTO NEW netCDF FILE
>   ; ***********************************************
>
>   print("4 - Write subset into new netCDF file")
>
>     netCDF1 = True    ; Output format is NetCDF
>
>   if (netCDF1) then
>     diro = "~/NIFA/MACAv2/subset_lat_lon/" + RCP_out_list[h](0) + "/" +
> model_list[j](0) + "/"
>     filo = variable_list[k](0) + "_lat_lon.nc"
>
>   end if
>
>   setfileoption("nc","Format","LargeFile")
>
>   if (netCDF1) then
>     system("/bin/rm -f "+ diro + filo)   ; removes old files with the same
> name if they are present
>     ncdf = addfile(diro + filo,"c")
>
>     setfileoption(ncdf,"DefineMode",True)
>
>     ; create attributes
>     fAtt = True
>     fAtt at title = "MACAv2 data, RCP: " + RCP_out_list[h](0) + " Climate
> model: " + model_list[j](0) + " Variable: " + variable_list[k](0)
>     fAtt at description = description
>     fAtt at Conventions = "None"
>     fAtt at creation_date = systemfunc("date")
>
>     fileattdef(ncdf,fAtt)
>
>     dimNames = (/"time","lat","lon"/)
>     dimSizes = (/dimsizes(time),dimsizes(lat_subdomain),dimsizes(lon_
> subdomain)/)
>     dimUnlim = (/True,False,False/)
>
>     filedimdef(ncdf,dimNames,dimSizes,dimUnlim)
>
>     filevardef(ncdf,"time",typeof(time),(/"time"/))
>     filevardef(ncdf,"lat",typeof(lat_subdomain),(/"lat"/))
>     filevardef(ncdf,"lon",typeof(lon_subdomain),(/"lon"/))
>     filevardef(ncdf,"var",typeof(var_subdomain_3D),(/"time","lat","lon"/))
>
>     ; now write all the variables to the file
>
>     ncdf->time = (time)
>     ncdf->lat  = (lat_subdomain)
>     ncdf->lon  = (lon_subdomain)
>     ncdf->var  = (var_subdomain_3D)
>
>   end if
>
>   print("**** DONE ****")
>   print("")
>
>   delete([/variable,var_subdomain_3D,lat,lon/])
>
>
>     end do   ; end variable list loop
>
>   end do  ; end model list loop
>
> end do  ; end RCP list loop
>
> end
>
>
>
>
> *Toni Klemm, Ph.D.*Postdoctoral Research Associate
> Department of Ecosystem Science and Management
> College of Agriculture and Life Sciences
> Texas A&M University, College Station, TX
> Contributor to the Early Career Climate Forum <http://www.eccforum.org>
> www.toni-klemm.de | @toniklemm <http://twitter.com/toniklemm>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> 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/20180907/454ce7b2/attachment.html>


More information about the ncl-talk mailing list