[ncl-talk] Extracting "dates" if a threshold is exceeded in any gridpoint of a domain
Karin Meier-Fleischer
meier-fleischer at dkrz.de
Wed Apr 26 10:20:50 MDT 2017
Hi Lyndon,
first you have to select the sub-region of your data and then get the
time indices where your data is greater equal than the threshold.
Your script should be looking like:
begin
f = addfile("vort_700hPa.nc","r") ;-- open file
vr = f->vr ;-- read variable
time = f->time ;-- read time
ntimes = dimsizes(time) ;-- get size of time
;-- define sub-region
lat0 = 7.5
lat1 = 27.5
lon0 = 11.0
lon1 = 135.0
vr_region = vr(:,{lat0:lat1},{lon0:lon1}) ;-- select the data of
the sub-region
printVarSummary(vr_region)
threshold = 3e-5 ;-- define threshold
;-- loop over time to retrieve times where data is greater equal threshold
j = 0
do i=0,ntimes-1
tmp := ndtooned(vr_region(i,:,:)) ;-- convert to 1d array
if(any(tmp .ge. threshold)) then
if(j .eq. 0) then
tt = time(i) ;-- first time step
where threshold is exceeded
else
tt := array_append_record (tt, time(i), 0) ;-- append next
time step where threshold is exceeded
end if
j = j+1
end if
end do
;-- convert time to readable date string
utc_date = cd_calendar(tt, 0) ;-- convert
date to UT-referenced date
year = sprinti("%0.4i",tointeger(utc_date(:,0))) ;-- get year
as integer value
mon = sprinti("%0.2i",tointeger(utc_date(:,1))) ;-- get
month as integer value
day = sprinti("%0.2i",tointeger(utc_date(:,2))) ;-- get day
as integer value
str_date = year+"/"+mon+"/"+day ;-- yyyy/mm/dd
print(str_date)
end
Hope this helps,
Karin
Am 26.04.17 um 07:09 schrieb Lyndon Mark Olaguera:
> Dear fellow NCL users,
>
>
> I would like to extract the "date" when any grid point in a domain
> exceeds a threshold value using NCL (daily time steps). I tried to
> create a netcdf file of daily vorticity using the script below.
>
> I would like to add a line in this script that will extract the date
> (day month year) whenever a grid point from this domain is exceeded:
> LAT : 7.5N to 27.5N
> LON : 110E to 135E
>
> the threshold value that I am using is 3e-5 per second.
>
>
> I am attaching the netcdf file and the image in this email.
> test_2003_30.png
> <https://drive.google.com/file/d/0B9faET7Bc2o8RWRXcTdKZEx0YlE/view?usp=drive_web>
>
>
> Is this possible in NCL?
> Is there any function in NCL that can extract values from every
> gridpoint in a specified domain?
>
>
> I'll appreciate if anyone can point me to the right
> direction/functions to implement this in NCL.
>
> Many thanks in advance!
>
>
> begin
> ;************************************************
> ; variable and file handling
> ;************************************************
> ufile = addfile("uwind_may_2003_700hPa.nc","r") ; open netcdf file
> u = ufile->uwnd(:,0,:,:) ; pull u off file
> lat = ufile->lat
> lon = ufile->lon
> vfile = addfile("vwind_may_2003_700hPa.nc","r")
> v = vfile->vwnd(:,0,:,:) ; pull v off file
> ;************************************************
> ; calculate vorticity on a Gaussian Grid
> ;************************************************
> ;vrt = u ; retain coordinates
> ;vrt = uv2vrG_Wrap(u,v)
> vr = uv2vr_cfd (u,v,lat,lon, 3)
> copy_VarMeta(u,vr)
> vr at long_name = "vorticity"
> vr at units = "per second"
> ;***********************************************
> ; save to a netcdf file
> ;***********************************************
> ncdf = addfile("vort_700hPa.nc","c")
> fAtt = True
> fAtt at title = "Vorticity at 700hPa"
> fAtt at source_file = "daily winds from NCEP-NCAR Reanaysis"
> fAtt at Conventions = "None"
> fAtt at creation_date = systemfunc("date")
> fileattdef(ncdf,fAtt) ; copy file attributes
> filedimdef(ncdf,"time",-1,True)
> ncdf->vr = vr
> end
>
> *_Lyndz_*
>
>
> _______________________________________________
> 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/20170426/ebbc4bf3/attachment.html
More information about the ncl-talk
mailing list