
wrf_user_ll_to_ij
Finds the nearest WRF-ARW model grid indexes (i,j) to the requested longitude and latitude locations (deprecated).
Prototype
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" ; These two libraries are automatically load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl" ; loaded from NCL V6.4.0 onward. ; No need for user to explicitly load. function wrf_user_ll_to_ij ( file_handle : file or list, lon : numeric, lat : numeric, opt : logical ) return_val : float or double
Arguments
file_handleReference to a single WRF-ARW NetCDF file opened with addfile or a list of WRF-ARW NetCDF files opened with addfiles.
lonlat
Longitude and latitude arrays for which index locations into a WRF-ARW model domain are required.
optA logical scalar that can optionally contain attributes. See description below.
Return value
An array that holds the index locations of a WRF model domain that are the closest to the requested lon, lat values.
If scalar lon, lat values are inputted, the return value will be a 1D array of length of 2, where the first (leftmost) element represents the lon index and the second (rightmost) element represents the lat index.
If an array of lon, lat values are inputted, the return value will be a 2 x n array, where n is the length of the lon, lat arrays.
The return values will represent indexes in the WRF-ARW lon, lat model domain and will be 1-based. This is different from wrf_user_ll_to_xy in which the index values are 0-based.
Important note: if the index values from this function are later used as indexes in NCL scripts, then a value of 1 needs to be deducted from the values first.
Description
This function will be deprecated in NCL version 6.6.0. Use wrf_user_ll_to_xy instead.
This function makes use of map projection information stored in the global attributes of the WRF-ARW file (or files) to find the index locations which are the closest to the requested lat/lon locations. If the requested lat/lon locations are outside your model domain, the returned indexes locations will represent a point outside the domain.
The return values returned are 1-based. If these values are later used as indexes in NCL scripts, 1 needs to be deducted from the values first.
The opt variable can contain the following attributes. Attributes are case-insensitive:
- returnInt - True, will return an integer value, False will
return real (defaults to True)
- useTime - which time in the file should be used when extracting XLAT/XLONG arrays from input file. Only important to set if output is for a moving nest and all the output times are in a single wrfout file.
wrf_user_ll_to_ij is part of a library of functions and procedures in WRFUserARW.ncl written to help users plot ARW WRF model data.
See Also
wrf_user_ll_to_xy, wrf_user_xy_to_ll, wrf_user_ij_to_ll
See the full list of WRF functions.
Examples
Example 1
A simple example showing how to use this function to extract a particular lat/lon region of interest for your data. The print statements in this example will also help ensure that you are using this function properly.
a = addfile("wrfout_d01_2000-01-24_12:00:00.nc","r") minlat = 30 maxlat = 40 minlon = -80 maxlon = -70 opt = True loc = wrf_user_ll_to_ij(a,(/minlon,maxlon/),(/minlat,maxlat/),opt) loc = loc-1 ; To convert to NCL subscripts ;---The requested and calculated values should be close print("Requested min/max xlon = " + minlon + "/" + maxlon) print("Calculated min/max xlon = " + xlon(loc(1,0),loc(0,0)) + "/" + \ xlon(loc(1,1),loc(0,1))) print("Requested min/max xlat = " + minlat + "/" + maxlat) print("Calculated min/max xlat = " + xlat(loc(1,0),loc(0,0)) + "/" + \ xlat(loc(1,1),loc(0,1))) ;---Just for fun, pick a variable and take a subdomain of it. tc2 = wrf_user_getvar(a,"T2",0) ; T2 in Kelvin printMinMax(tc2,0) tc2_sub = tc2(loc(1,0):loc(1,1),loc(0,0):loc(0,1)) tc2_sub@description = tc2@description + " (subdomain)" ; just an example printMinMax(tc2_sub,0)
Example 2
This example shows how using the output from wrf_user_ll_to_ij as input to wrf_user_ij_to_ll should give you close to the same values:
a = addfile("wrfout_d01_2000-01-24_12:00:00.nc","r") xlat = a->XLAT(0,:,:) xlon = a->XLONG(0,:,:) minlat = 30 maxlat = 40 minlon = -80 maxlon = -70 ;---Get ij indexes, and then use these to get lat/lon values back again. opt = True loc = wrf_user_ll_to_ij(a,(/minlon,maxlon/),(/minlat,maxlat/),opt) latlon = wrf_user_ij_to_ll(a,loc(0,:),loc(1,:),opt) ;---The min/max values printed should be close. print("----") print("Requested min/max xlon = " + minlon + "/" + maxlon) print("Actual min/max xlon = " + xlon(loc(1,0)-1,loc(0,0)-1) + "/" + \ xlon(loc(1,1)-1,loc(0,1)-1)) print("Calculated min/max xlon = " + latlon(0,0) + "/" + latlon(0,1)) print("----") print("Requested min/max xlat = " + minlat + "/" + maxlat) print("Actual min/max xlat = " + xlat(loc(1,0)-1,loc(0,0)-1) + "/" + \ xlat(loc(1,1)-1,loc(0,1)-1)) print("Calculated min/max xlat = " + latlon(1,0) + "/" + latlon(1,1)) print("----")
Example 3
Have the "loc" values returned as floating point values, rather than integers:
a = addfile("wrfout_d01_2000-01-24_12:00:00.nc","r") res = True res@returnInt = False ; return real values loc = wrf_user_ll_to_ij(a, -100.0, 40.0, res) print("X/Y location is: " + loc)
Example 4
You can retrieve ij coordinates from a list of WRF ARW NetCDF files:
files = systemfunc("ls -1 wrfout_d01_2000*") + ".nc" a = addfiles(files,"r") res = True res@returnInt = False ; return real values loc = wrf_user_ll_to_ij(a, -100.0, 40.0, res) print("X/Y locations are: " + loc)
You can see some other example scripts and their resultant images at:
http://www2.mmm.ucar.edu/wrf/OnLineTutorial/Graphics/NCL/