[ncl-talk] About regridding from

Tao Lu hakufu.asano at gmail.com
Wed Jan 18 04:47:13 MST 2017


Hello

Thank you for your reply.

I have succeeded to do objective analysis according to Barry's code.

The problem relied on that obj_anal_ic function does not return meta data.
So, I could not get the plot graph correctly.
Instead of obj_anal_ic, I took the function obj_anal_ic_Wrap.

I attached the edited script.

Thank you for your kind help.

Tao

On Wed, Jan 18, 2017 at 5:56 AM, Barry Lynn <barry.h.lynn at gmail.com> wrote:

> Hi:
> I think it is easiest to grid the radar data to the  WRF grid, as I did in
> my original program.
>
> This doesn't use regrid programs, but objective analysis.
>
> If the wrf grid is coarser than the radar data, the data will be smoothed.
>
> Using NCL requires perseverance. Sometimes it is easier to start with a
> basic example.
>
> If you make data lat, Lon, value, the program I sent will read it.
>
> You then need to set/list the files, and the name of the WRF file,
>
> Sorry I can't help more at the moment.
>
>
>
> On Tuesday, January 17, 2017, Dennis Shea <shea at ucar.edu> wrote:
>
>> [1]
>> A general rule for regridding is to go from high-resolution to
>> low-resolution. *If* the variable is 'smoothly varying' virtually any
>> interpolation method (eg: bilinear) will do. If the data is fractal (eg:
>> hourly/3hrly/daily precipitation), then other methods may be more
>> appropriate.
>>
>> Interpolating from low-resolution to high-resolution, does *not* provide
>> any additional information. However, depending upon your objective and use,
>> this may be what you need to do.
>>
>> [2]
>> Look at ESMF Regridding: http://www.ncl.ucar.edu/Applications/ESMF.shtml
>>
>> Look at Example 21
>>
>> [a] Take the radar data and make one-dimensional
>> lat_radar/lon_radar/value_radar arrays. These are your input ('Source').
>> Create a weight file (say)
>>
>> Opt at WgtFileName= "WGT.Radar_to_WRF.nc" ; default is "weights_file.nc"
>>
>> [b] The target grid is defined by  the WRF: XLAT, XLONG variables. There
>> are numerous examples on the ESMF page to illustrate how to do this.
>>
>> [c] Run the script
>>
>> [d] The weight file can be used subsequently for other regriddings.
>>
>> =============
>> NOTE:
>> It is your responsibility to look at and study the ESMF URL. Read it
>> carefully before proceeding. Responding to ncl-talk questions, especially,
>> ESMF can be quite time consuming and we have our own jobs to do.
>>
>> Good Luck
>>
>> On Tue, Jan 17, 2017 at 10:41 AM, Barry Lynn <barry.h.lynn at gmail.com>
>> wrote:
>>
>>> Hi Tao:
>>>
>>> I apologize, but I can't answer right now as I am traveling.
>>>
>>> However, in order to provide ncl-talkers with enough information/data,
>>> you can write out the data grid (lat/lon) you are trying to plot on from
>>> WRF, and upload one time step of it (or two).  You should also upload the
>>> radar data.
>>>
>>> ;---Write wrf variables lat/lon to file for ncltalk.nc
>>>
>>>
>>>     system("rm -f file_for_ncltalk.nc")
>>>      fout = addfile("file_for_ncltalk.nc","c")
>>>      fout->xlat      = xlat
>>>       fout->xlong     = xlong
>>>
>>> Barry
>>>
>>> On Tue, Jan 17, 2017 at 7:14 PM, Tao Lu <hakufu.asano at gmail.com> wrote:
>>>
>>>> Hello Barry:
>>>>
>>>> Thank you very much for your reply.
>>>> I  am very appreciated that you shared your codes with us.
>>>>
>>>> Some editions have been done in my situation.
>>>> However, I could not get contour after grid =
>>>> obj_anal_ic(lon_o,lat_o,obs_o,xlon_m,xlat_m,rscan,False).
>>>> I attached the edited code and run information, please help me check
>>>> that.
>>>>
>>>> I also have some questions about the method for regridding:
>>>> 1. There is a item named "rightmost dimension or leftmost dimension" in
>>>>     http://www.ncl.ucar.edu/Document/Functions/Built-in/obj_anal
>>>> _ic.shtml
>>>>     I googled it but have no ideal.
>>>>
>>>> 2. Also according to the webpage in 1. obs_o at _FillValue will be
>>>> ignored.
>>>>     Does it mean that missing value won't be accounted for when
>>>> interpolation?
>>>>
>>>> 3. "cband radar observations: min=0   max=220" before regridding
>>>>     "var_zoom min=0   max=23.5354" after regridding
>>>>      After regridding the radar density is much smaller than original
>>>> maximum.
>>>>     Is it normal? Maybe as you said rscan is important.
>>>>
>>>> 4. When you use
>>>>     grid = obj_anal_ic(lon_o,lat_o,obs_o,xlon_m,xlat_m,rscan,False)
>>>>
>>>>     You calculate this
>>>>     ;---Get slice of lat/lon data at halfway points.
>>>>     nlat   = dims2d(0)
>>>>     nlon   = dims2d(1)
>>>>     xlat_m = xlat2d_m(:,nlon/2)
>>>>     xlon_m = xlon2d_m(nlat/2,:)
>>>>
>>>>     Is it reasonable to calculate lat/lon at a quarter points?
>>>>
>>>> 5. If use halfway points to regrid radar data,
>>>> [image: Inline image 1]
>>>>   We will get a n(xlat_m) x n(xlon_m) regridded array.
>>>>   So, what will the array's lat/lon will be?
>>>>
>>>> 6. This method is to interpolate radar data to wrf grid.
>>>>     Is the mean average method more suitable for radar data? Because
>>>> radar have
>>>>     so many data points unlike rain gauge data?
>>>>
>>>>
>>>> My ascii data converted from radar is too large, if you need it I will
>>>> send it to you.
>>>> The data is something like below:
>>>> # crain_composite_data:rain_density:lat:lon:ndata=2406400:
>>>> # 2015-09-09_00:00:00
>>>> -9999       47.32916666666667       137.01874999999998
>>>> -9999       47.32916666666667       137.03125
>>>> -9999       47.32916666666667       137.04375
>>>> -9999       47.32916666666667       137.05625
>>>> -9999       47.32916666666667       137.06875
>>>> -9999       47.32916666666667       137.08124999999998
>>>>
>>>>
>>>> Waiting for your reply.
>>>> Thank you very much.
>>>>
>>>> Tao
>>>>
>>>>
>>>> On Tue, Jan 17, 2017 at 4:05 AM, Barry Lynn <barry.h.lynn at gmail.com>
>>>> wrote:
>>>>
>>>>> Hi Tao:
>>>>>
>>>>> Here, I gridded the radar data to the WRF grid.
>>>>>
>>>>> You will need to adapt what I did to your situation, but the most
>>>>> important step is to decide on the degree of smoothing (which is set by
>>>>> rscan).
>>>>>
>>>>>  grid = obj_anal_ic(lon_o,lat_o,obs_o,xlon_m,xlat_m,rscan,False)
>>>>>
>>>>> Please write if you have questions.
>>>>>
>>>>> Barry
>>>>>
>>>>> On Mon, Jan 16, 2017 at 9:11 AM, Tao Lu <hakufu.asano at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Dear ncl-talk
>>>>>>
>>>>>> Hello.
>>>>>>
>>>>>> I am new to regridding, if possible please give me some help and
>>>>>> advice.
>>>>>>
>>>>>> What I am doing?: Compare two kind of grid data
>>>>>> *I have two kind of data.*
>>>>>> 1. radar data:
>>>>>> resolution:            0.5 minute x 0.75 minute, as seen not regular
>>>>>> grids
>>>>>> file format:            ascii
>>>>>> [image: Inline image 1]
>>>>>> 2. output data from WRF:
>>>>>>  dx = 30000,
>>>>>>  dy = 30000,
>>>>>>  map_proj = 'lambert',
>>>>>>  ref_lat   =  36.00,
>>>>>>  ref_lon   =  140.00,
>>>>>>  truelat1  =  30.0,
>>>>>>  truelat2  =  60.0,
>>>>>>  stand_lon = 140.0,
>>>>>> file fomat:                    netcdf
>>>>>> [image: Inline image 3]
>>>>>>
>>>>>> *I have to regrid the two data to each other or to new grid.*
>>>>>> 1. Regrid wrf data grid to radar data grid?
>>>>>> 2. Regrid radar data to wrf data?
>>>>>> 3. Regrid both to another data?
>>>>>> Which is easiest?
>>>>>>
>>>>>> I am really new to this, please give me some guide line, I will
>>>>>> further operation on my work.
>>>>>>
>>>>>> Thank you very much for your kind help.
>>>>>>
>>>>>> Tao
>>>>>>
>>>>>>
>>>>>> --
>>>>>> ******************************************************
>>>>>> Tao Lu    (M. Eng)
>>>>>> Laboratory of River Engineering and Hydrology,
>>>>>> Dept. of Civil and Environmental Engineering,
>>>>>> Graduate School of Science and Engineering,
>>>>>> Chuo University
>>>>>>
>>>>>> 1-13-27,Kasuga,Bunkyo-ku,Tokyo
>>>>>> 112-8551, Japan
>>>>>> TEL: 03-3817-1805;   Phone: 070-2188-7509
>>>>>> Email1: hakufu.asano at gmail.com
>>>>>> Email2: lutao at civil.chuo-u.ac.jp
>>>>>> *****************************************************
>>>>>>
>>>>>> _______________________________________________
>>>>>> ncl-talk mailing list
>>>>>> ncl-talk at ucar.edu
>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Barry H. Lynn, Ph.D
>>>>> Senior Lecturer,
>>>>> The Institute of the Earth Science,
>>>>> The Hebrew University of Jerusalem,
>>>>> Givat Ram, Jerusalem 91904, Israel
>>>>> Tel: 972 547 231 170
>>>>> Fax: (972)-25662581
>>>>>
>>>>> C.E.O, Weather It Is, LTD
>>>>> Weather and Climate Focus
>>>>> http://weather-it-is.com
>>>>> Jerusalem, Israel
>>>>> Local: 02 930 9525
>>>>> Cell: 054 7 231 170
>>>>> Int-IS: x972 2 930 9525
>>>>> US 914 432 3108 <(914)%20432-3108>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> ******************************************************
>>>> 盧 涛 (ル タオ) 修士課程2年
>>>>
>>>> 〒112-8551 東京都文京区春日1-13-27
>>>>
>>>> 中央大学理工学研究科都市環境学専攻
>>>>
>>>> 河川・水文研究室(山田正教授)
>>>>
>>>>
>>>> TEL: 03-3817-3406;   Phone: 070-2188-7509
>>>> Email1: hakufu.asano at gmail.com
>>>> Email2: lutao at civil.chuo-u.ac.jp
>>>> *******************************************************
>>>> ******************************************************
>>>> Tao Lu    (M. Eng)
>>>> Laboratory of River Engineering and Hydrology,
>>>> Dept. of Civil and Environmental Engineering,
>>>> Graduate School of Science and Engineering,
>>>> Chuo University
>>>>
>>>> 1-13-27,Kasuga,Bunkyo-ku,Tokyo
>>>> 112-8551, Japan
>>>> TEL: 03-3817-1805;   Phone: 070-2188-7509
>>>> Email1: hakufu.asano at gmail.com
>>>> Email2: lutao at civil.chuo-u.ac.jp
>>>> *****************************************************
>>>>
>>>
>>>
>>>
>>> --
>>> Barry H. Lynn, Ph.D
>>> Senior Lecturer,
>>> The Institute of the Earth Science,
>>> The Hebrew University of Jerusalem,
>>> Givat Ram, Jerusalem 91904, Israel
>>> Tel: 972 547 231 170
>>> Fax: (972)-25662581
>>>
>>> C.E.O, Weather It Is, LTD
>>> Weather and Climate Focus
>>> http://weather-it-is.com
>>> Jerusalem, Israel
>>> Local: 02 930 9525
>>> Cell: 054 7 231 170
>>> Int-IS: x972 2 930 9525
>>> US 914 432 3108 <(914)%20432-3108>
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>
> --
> Barry H. Lynn, Ph.D
> Senior Lecturer,
> The Institute of the Earth Science,
> The Hebrew University of Jerusalem,
> Givat Ram, Jerusalem 91904, Israel
> Tel: 972 547 231 170
> Fax: (972)-25662581
>
> C.E.O, Weather It Is, LTD
> Weather and Climate Focus
> http://weather-it-is.com
> Jerusalem, Israel
> Local: 02 930 9525
> Cell: 054 7 231 170
> Int-IS: x972 2 930 9525
> US 914 432 3108 <(914)%20432-3108>
>
>


-- 
******************************************************
盧 涛 (ル タオ) 修士課程2年

〒112-8551 東京都文京区春日1-13-27

中央大学理工学研究科都市環境学専攻

河川・水文研究室(山田正教授)


TEL: 03-3817-3406;   Phone: 070-2188-7509
Email1: hakufu.asano at gmail.com <mail%3Amet.yamos at gmail.com>
Email2: lutao at civil.chuo-u.ac.jp <mail%3Ayamoto at civil.chuo-u.ac.jp>
*******************************************************
******************************************************
Tao Lu    (M. Eng)
Laboratory of River Engineering and Hydrology,
Dept. of Civil and Environmental Engineering,
Graduate School of Science and Engineering,
Chuo University

1-13-27,Kasuga,Bunkyo-ku,Tokyo
112-8551, Japan
TEL: 03-3817-1805;   Phone: 070-2188-7509
Email1: hakufu.asano at gmail.com <mail%3Amet.yamos at gmail.com>
Email2: lutao at civil.chuo-u.ac.jp <mail%3Ayamoto at civil.chuo-u.ac.jp>
*****************************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170118/7beb155e/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 4669 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170118/7beb155e/attachment-0003.png 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 392777 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170118/7beb155e/attachment-0004.png 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 44666 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170118/7beb155e/attachment-0005.png 
-------------- next part --------------
;###############################################################
;
; Program to do objective analysis from radar data to wrf grid
; 
;
;##############################################################

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

begin

;---Set bounding box
; bounding box for cover kinu watershed
  ;lats		= (/ 30.00, 40.00 /)
  ;lons		= (/ 132.00, 142.00 /)
  lats		= (/ 28.00, 44.00 /)
  lons		= (/ 128.00, 144.00 /)

  
;---We generate plots, but what kind do we prefer?
  type				= "png"
  type at wkWidth			= 1500                        ; Increase size for a slightly
  type at wkHeight			= 1500
  slice_loc			= "1-2" ; 1/2 of bounding box
  rscan_plan			= "0.25-0.1" ; latitude degrees
  box                           = "_bigbox_"
  output_name 			= "after_obs" + box + "_" + slice_loc + "_" + rscan_plan 
  wks 				= gsn_open_wks(type,output_name)


;---Set some basic resources
  res                      = True
  res at gsnMaximize          = True
  res at gsnAddCyclic         = False    ; Don't add cyclic point

; map resources 
  res at mpFillOn             = True
  res at mpOutlineOn          = True
  res at mpDataBaseVersion    = "HighRes"
  ;res at mpDataBaseVersion    = "MediumRes"
  
; set projection coordinated with wrf
; map sources
  ;res at tfDoNDCOverlay		= True

  res at mpLimitMode 		= "LatLon"
  res at mpMinLatF            	= 28.0
  res at mpMaxLatF            	= 46.0
  res at mpMinLonF            	= 126.0
  res at mpMaxLonF            	= 146.0
  res at mpProjection		= "LambertConformal"
  res at mpLambertParallel1F 	= 30.
  res at mpLambertParallel2F    	= 60.
  res at mpLambertMeridianF     	= 136.
  
  res at pmTickMarkDisplayMode 	= "Always" 
  res at tmXTLabelsOn 		= False               
  res at tmYRLabelsOn 		= False  

; label bar sources  
  res at lbAutoManage          	= False
  res at pmLabelBarHeightF    	 = 0.12
  

; contour resources  
  res at cnFillOn             = True
  res at cnLinesOn            = False
  res at cnLevelSelectionMode = "ExplicitLevels"
; color of lab cband
  res at cnLevels             = (/0.1, 1, 5, 10, 20, 50, 100, 210/)
  res at cnFillColors         = (/"white","cyan", "blue","green","yellow","darkorange", \
                               "coral1","red","blueviolet"/)



;---Get xlat,xlon from model for interpolation
  filepath	= "./wrfout_d01_2015-09-08_12:00:00"
  a		= addfile(filepath,"r")
  time		= 0
  xlat2d_m	= wrf_user_getvar(a,"XLAT",time)
  xlon2d_m	= wrf_user_getvar(a,"XLONG",time)
  dims2d	= dimsizes(xlat2d_m)
  
  ;printVarSummary(xlat2d_m)
  ;printVarSummary(xlon2d_m)
  ;printVarSummary(xland)
  ;print(dims2d)
  ;print (xlat2d_m)

;---Set zoomin indices
; loc(0,;) is west-east (x) ; loc(1,:) is south-north (y)
; subtract one since we want to use it as an index in NCL
  loc		= wrf_user_ll_to_ij(a, lons, lats, True)
  loc		= loc - 1
  x_start	= loc(0,0)
  x_end		= loc(0,1)
  y_start	= loc(1,0)
  y_end		= loc(1,1)
  
  print ("---Bounding Box Information---")
  print ("x_start = " + x_start + "	x_end = " + x_end)
  print ("y_start = " + y_start + "	y_end = " + y_end)
  print ("------------------------------")
  print ("")
  
  
;---Loop of time   
  times		= wrf_user_getvar(a,"times",-1)  ; get all times in the file
  
  do itime = 0, 0
    if (itime.eq.0)then
      asc_file = "./crain_composite_2015.09.09.00.00_UTC"
    end if

;---Read ascii data
    stime 	= get_cpu_time()
    data	= asciiread(asc_file, -1, "float")
    header	= readAsciiHead(asc_file,2)
    date	= str_get_field(header(1),2," ")
      
; read data
    radar	= data(7::3)
    lat_obs	= data(8::3)
    lon_obs	= data(9::3)
      
; these long_name and units attributes are not necessary. I
; did this so I got better output from print statements below.

    radar at long_name	= "cband radar observations"
    radar at units	= "mm/h"
    lat_obs at long_name	= "observed latitudes"
    lat_obs at units	= "degrees_north"
    lon_obs at long_name	= "observed longitudes"
    lon_obs at units	= "degrees_east"

    radar at _FillValue	= -999

    etime = get_cpu_time()
    print("Reading the radar data took " + (etime-stime) + " seconds.")
    print ("")

    ;printVarSummary(radar)
    ;printVarSummary(lat_obs)
    ;printVarSummary(lon_obs)
    printMinMax(radar,0)
    printMinMax(lat_obs,0)
    printMinMax(lon_obs,0)
    print ("")

    
;---Get slice of lat/lon data at halfway points.
    nlat   = dims2d(0)
    nlon   = dims2d(1)
    xlat_m = xlat2d_m(:,nlon/2)
    xlon_m = xlon2d_m(nlat/2,:)

    ;printVarSummary(xlat_m)
    ;printVarSummary(xlon_m)
    ;printMinMax(xlat_m,0)
    ;printMinMax(xlon_m,0)


;---Objective analysis function    
;    rscan = (/1,0.5,0.25/)
;    rscan = (/0.5,0.25,0.225/)
;    rscan = (/0.25,0.125,0.05/)
    rscan = (/0.25,0.1/)
;    rscan   = (/1.0/)

;
; obj_anal_ic_Wrap: iterative improvement objective analysis and returns meta data
;
    stime = get_cpu_time()
    
    grid    	= obj_anal_ic_Wrap(lon_obs,lat_obs,radar,xlon_m,xlat_m,rscan,False)
    
    etime = get_cpu_time()
    print("objective analysis took " + (etime-stime) + " seconds.") 
    print ("")
   
    lon_2d_zoom = xlon2d_m(y_start:y_end,x_start:x_end)
    lat_2d_zoom = xlat2d_m(y_start:y_end,x_start:x_end)
    var_zoom	= grid(y_start:y_end,x_start:x_end)
    
    var_zoom at _FillValue = -999
    
    ;printVarSummary(grid)
    ;printMinMax(grid,0)
    ;printVarSummary(lon_2d_zoom)
    ;printMinMax (lon_2d_zoom, 0)
    ;printVarSummary(lat_2d_zoom)
    ;printMinMax (lat_2d_zoom, 0)
    ;printVarSummary(var_zoom)
    ;printMinMax(var_zoom,0)
    ;print (var_zoom&south_north) ; extract lat and lon

;
;------------------ function without meta data use ----------------------
;------------------ lon_2d_zoom, lat_2d_zoom to plot --------------------
;
    ;grid    	= obj_anal_ic(lon_obs,lat_obs,radar,xlon_m,xlat_m,rscan,False)
    ;var_zoom	= grid(y_start:y_end,x_start:x_end)
    
    ;var_zoom at _FillValue = -999
    
; change multi dimension array to one dimension array 
    lon_1d 	= ndtooned(lon_2d_zoom)
    lat_1d 	= ndtooned(lat_2d_zoom)
    var_zoom_1d = ndtooned(var_zoom)
    ;printVarSummary(var_zoom_1d)

; by setting the ScalarField resources sfXArray and sfYArray to 
; the 1-d or n-d arrays lon and lat, 
; to explicitly define the range for the X and Y axes.
    ;res at sfXArray	= lon_2d_zoom      ; Associates lat/lon locations
    ;res at sfYArray	= lat_2d_zoom      ; with data values.
;--------------------------------------------------------------------------
  
;---Draw raster contours
    stime = get_cpu_time()
    
;set titles, size and resources
    mainstring	= date + " (UTC)"
    leftstring	= "Cband rain after regridding"
    rightstring	= "dt = 5 minutes"
    size	= 0.02

    res at tiMainString 			= mainstring     
    res at gsnLeftString 			= leftstring 				; add the gsn titles
    res at gsnRightString  		= rightstring
    res at tiMainFontHeightF  		= 0.030
    res at gsnLeftStringFontHeightF   	= size			; instead of using txFontHeightF or gsnStringFontHeightF 
    ;res at gsnCenterStringFontHeightF 	= size			; to set the gsnLeft/Center/RightString font heights,
    res at gsnRightStringFontHeightF  	= size			; individually set each string's font height.
    res at cnFillMode 			= "RasterFill"    

; make plot    
    contour_pre = gsn_csm_contour_map(wks,var_zoom,res)
    
    etime = get_cpu_time()
    print("raster contours took " + (etime-stime) + " seconds.") 
    print ("")
 
 
;---Output grid data after objective analysis
    ;stime = get_cpu_time()
    write_table("after_obs" + output_name + ".txt","w",[/lat_1d,lon_1d,var_zoom_1d/],"%8.3f %8.3f %8.3f")
    ;etime = get_cpu_time()
    ;print("write grid data after objective took " + (etime-stime) + " seconds.") 
 
 
;---End loop of time
  end do
  
  
  
end


More information about the ncl-talk mailing list