
region_ind
Returns the indices (subscripts) of two-dimensional latitude/longitude arrays that span user specified latitude/longitude boundaries.
Available in version 5.1.0 and later.
Prototype
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" ; This library is automatically loaded ; from NCL V6.2.0 onward. ; No need for user to explicitly load. function region_ind ( lat2d [*][*] : numeric, lon2d [*][*] : numeric, latS [1] : numeric, latN [1] : numeric, lonW [1] : numeric, lonE [1] : numeric ) return_val : (4) [integer or long]
Arguments
lat2dA two-dimensional array that contains latitudes.
lon2dA two-dimensional array that contains longitudes.
latSSouthern boundary
latNNorthern boundary
lonWWestern boundary
lonEEastern boundary
Return value
A one dimensional array of length 4 containing index subscripts which span the region of interest.
As of version 6.0.0, this can be of type integer or long.
Description
Finds the first and last indices (subscripts) of two-dimensional lat2d/lon2d arrays containing the region of interest.
Note: This function may not be appropriate for all curvilinear grids.
See Also
ind, ind_resolve, getind_latlon2d
Examples
Example 1
Find the indices (subscripts) which span a user specified region of interest.
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" ; ; f = addfile("NARRmonhr-b_221_20021201_2100_000.grb" , "r") glon2d = f->gridlon_221 glat2d = f->gridlat_221 printMinMax(glat2d, 0) printMinMax(glon2d, 0) latS = 30 ; California [*rough*] latN = 43 lonW = -125 lonE = -113 ji = region_ind (glat2d,glon2d, latS, latN, lonW, lonE) jStrt = ji(0) ; lat start jLast = ji(1) ; lat last iStrt = ji(2) ; lon start iLast = ji(3) ; lon last LAT2D = glat2d(jStrt:jLast,iStrt:iLast) LON2D = glon2d(jStrt:jLast,iStrt:iLast) printMinMax(LAT2D, 0) printMinMax(LON2D, 0) ; read data just for the region of interest x = f->LHTFL_221_SFC_113(:,jStrt:jLast,iStrt:iLast)The (edited) output
(0) glat2d: min= 0.898 max= 85.334 (0) glon2d: min=-179.998 max=179.992 (0) LAT2D : min= 28.680 max= 44.247 (0) LON2D : min=-128.941 max=-111.976
Example 2
The following is from a user question:
Say I've got a 2-D array (lat/lon) that has a blob of data in the middle surrounded by missing values. Is there an NCL function that will automatically crop or trim that array to the edges of the data, thereby getting rid of the surrounding cells of missing data?
Another user responded as follows:
Although it won't eliminate every missing value, this simple function should crop the array to the smallest rectangular region that includes all of the non-missing data:
undef("crop2D") function crop2D(x[*][*]:numeric) local i begin i = ind_resolve(ind(.not.ismissing(ndtooned(x))),dimsizes(x)) x_crop = x( min(i(:,0)):max(i(:,0)), min(i(:,1)):max(i(:,1)) ) return(x_crop) end