[ncl-talk] regridding EASE snow data

Michael Notaro mnotaro at wisc.edu
Wed Dec 2 08:50:55 MST 2015


Thanks, Mary.  I tried using ESMF_regrid (wasn't aware of this function before)

and it seemed to work well.  it regrids without interpolation.

Michael


Michael Notaro
Associate Director
Nelson Institute Center for Climatic Research
University of Wisconsin-Madison
Phone: (608) 261-1503
Email: mnotaro at wisc.edu


________________________________
From: ncl-talk-bounces at ucar.edu <ncl-talk-bounces at ucar.edu> on behalf of Mary Haley <haley at ucar.edu>
Sent: Wednesday, December 2, 2015 9:39 AM
To: Michael Notaro
Cc: ncl-talk at ucar.edu
Subject: Re: [ncl-talk] regridding EASE snow data

Hi Michael,

Most of our regridding routines do some sort of interpolation.

You could try triple2grid, which *places* values at the nearest locations of a 2D rectilinear grid.

You will need to first turn your EASE grid and it's lat/lon values into 1D variables:

lat1d    = ndtooned(latitude)
lon1d    = ndtooned(longitude)
cover1d  = ndtooned(cover)
opt      = False  ; if True, then some options are available

cover_regrid = triple2grid(lon1d,lat1d,cover1d,lon,lat,opt)

I admit I've never tried this, so please let ncl-talk know if this works for you.

You can see what "opt" options are available:

http://www.ncl.ucar.edu/Document/Functions/Built-in/triple2grid.shtml
triple2grid - University Corporation for Atmospheric Research
NCL Home > Documentation > Functions > Regridding triple2grid. Places unstructured (randomly-spaced) data onto the nearest locations of a rectilinear grid.
Read more...<http://www.ncl.ucar.edu/Document/Functions/Built-in/triple2grid.shtml>




--Mary


On Tue, Dec 1, 2015 at 12:02 PM, Michael Notaro <mnotaro at wisc.edu<mailto:mnotaro at wisc.edu>> wrote:

Does anyone have a suggestions for quickly regridding

EASE snow cover data, with the following characteristics,


latitude(720 rows, 720 columns)

longitude(720 rows, 720 columns)

cover(720 rows, 720 columns)


to a new 0.2 degree x 0.2 degree grid, with the following

characteristics?


lat=fspan(0.,90.,451)

lon=fspan(0.,180.,901)

grid(451,901)


It needs to be regridded, not interpolated, as

the values are 10 for snow covered land and

20 for non-snow covered land.


I've tried using getind_latlon2d within dual

do loops, but it was extremely slow.


My latest attempt is below, using mask

to reduce data to only nearby locations.

In this case, I am trying to regrid 14 years

worth of daily snow cover.


Thanks, Michael




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"

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"

begin


cvr=new((/14,12,31,720,720/),float)

cvr at _FillValue=1e+35

cvr=1e+35


a=addfile("1999/nhtsd25e2_19990101_v01r01.nc<http://nhtsd25e2_19990101_v01r01.nc>","r")

latitude=a->latitude ; (rows,cols)

longitude=a->longitude


do iyr=0,13

  do imn=0,11

    do id=0,30

      years=iyr+1999

      if (imn.le.8) then

        months="0"+(imn+1)

      else

        months=""+(imn+1)

      end if

      if (id.le.8) then

        days="0"+(id+1)

      else

        days=""+(id+1)

      end if

      filen=""+years+"/nhtsd25e2_"+years+""+months+""+days+"_v01r01.nc<http://v01r01.nc>"

      if (isfilepresent(filen)) then

        a=addfile(filen,"r")

        cvr(iyr,imn,id,:,:)=byte2flt(a->ims_snow_cover_extent(0,:,:)) ; byte (time, 720 rows, 720 cols) 10=snow covered land; 20=snow free land

      end if

    end do

  end do

end do


lat=fspan(0.,90.,451)

lat!0="lat"

lat at units="degrees_north"

lat&lat=lat


lon=fspan(0.,180.,901)

lon!0="lon"

lon at units="degrees_east"

lon at lon=lon


grid=new((/14,12,31,451,901/),float)

grid at _FillValue=1e+35

grid=1e+35


do i=0,450

  do j=0,900


    cover=mask(cvr,latitude.ge.lat(i)+0.5,False)

    cover=mask(cover,latitude.le.lat(i)-0.5,False)

    cover=mask(cover,longitude.ge.lon(j)+0.5,False)

    cover=mask(cover,longitude.le.lon(j)-0.5,False)


    do iyr=0,13

      do imn=0,11

        do id=0,30


          snow=num(cover(iyr,imn,id,:,:).eq.10)

          nosnow=num(cover(iyr,imn,id,:,:).eq.20)

          combined=snow+nosnow


          if (combined.gt.0) then

            if (snow.ge.nosnow) then

              grid(iyr,imn,id,i,j)=100.

            else

              grid(iyr,imn,id,i,j)=0.

            end if

          end if


        end do

      end do

    end do


  end do

end do

year=ispan(1999,2012,1)

year!0="year"

year&year=year

month=ispan(1,12,1)

month!0="month"

month&month=month

day=ispan(1,31,1)

day!0="day"

day&day=day


grid!0="year"

grid!1="month"

grid!2="day"

grid!3="lat"

grid!4="lon"

grid&year=year

grid&month=month

grid&day=day

grid&lat=lat

grid&lon=lon


system("rm climo_snowcover_asia.nc<http://climo_snowcover_asia.nc>")

out=addfile("climo_snowcover_asia.nc<http://climo_snowcover_asia.nc>","c")

out->grid=grid




Michael Notaro
Associate Director
Nelson Institute Center for Climatic Research
University of Wisconsin-Madison
Phone: (608) 261-1503<tel:%28608%29%20261-1503>
Email: mnotaro at wisc.edu<mailto:mnotaro at wisc.edu>

_______________________________________________
ncl-talk mailing list
ncl-talk at ucar.edu<mailto: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/20151202/3f7bd709/attachment.html 


More information about the ncl-talk mailing list