[ncl-talk] CMORPH Rainfall
Dennis Shea
shea at ucar.edu
Mon Dec 21 11:22:07 MST 2015
Please ... *Carefully READ* the documentation for fbindirread.
Note the rec_num argument
https://www.ncl.ucar.edu/Document/Functions/Built-in/fbindirread.shtml
rf_a = fbindirread("test.bin",0,(/nlat,nlon/),"ubyte") ; 1st record
time_a = fbindirread("test.bin",1,(/nlat,nlon/),"ubyte")
id_a = fbindirread("test.bin",2,(/nlat,nlon/),"ubyte")
rf_b = fbindirread("test.bin",3,(/nlat,nlon/),"ubyte") ; 4th
time_b = fbindirread("test.bin",4,(/nlat,nlon/),"ubyte")
id_b = fbindirread("test.bin",5,(/nlat,nlon/),"ubyte")
Use printMinMax afet each so you can see range.
On Mon, Dec 21, 2015 at 10:33 AM, Geeta Geeta <geetag54 at yahoo.com> wrote:
> Thanks Rick and Dennis for your help..
>
> So the Rf values are now being wriiten properly. how to see the 1st and 2nd
> records.
>
> nlat = 1649
> nlon = 4948
> ;--------------------------------------------------
>
> lat = 59.963614 + ispan(0,nlat-1,1)*0.072771377
> lat!0 = "latitude"
> lat at units = "degrees_north"
> printVarSummary(lat)
>
> lon = 0.036378335 + ispan(0,nlon-1,1)*0.072756669
> lon!0 = "longitude"
> lon at units = "degrees_east"
> printVarSummary(lon)
>
>
> ; Reading File-----------------
> rf = fbindirread("test.bin",0,(/nlat,nlon/),"ubyte")
> ; res1 = fbindirread("test.bin",1,-1,"float")
> asciiwrite("rf.txt",rf)
> ; print(res1)
> printVarSummary(rf)
>
> ;rf at _FillValue= 255
>
> cmorrf = where(rf.eq.255,255,rf*0.2)
> asciiwrite("crf.txt",cmorrf)
> cmorrf at _FillValue = 255
> cmorrf at units = "mm"
> printVarSummary(cmorrf)
>
> This doc mentions that there are 6 records. ;; Each file contains 6 records.
> The 1st 3 records pertain to the top half
>
> ;; of the hour (00-29 minus after the hour) and the last 3 records are for
> the
> ;; bottom half of the hour. Within each group:
> ;;
> ;; - the 1st record contains the CMORPH precipitation estimates
> ;;
> ;; - the 2nd record contains the time (in half hour units) since the most
> ;; recent microwave pass. Note that since we do both a forward &
> ;; backward interpolation in time, the nearest time may be prior to
> ;; the file time stamp or after it.
> ;;
> ;; - the 3rd record contains an ID that tells the satellite from which
> the last
> ;; microwave observation was made which can be interpretted by the
> following
> ;; table (as of the time of the last update of this documentation):
> ;;
>
>
> How should I see the rest of them??
>
>
>
> On Monday, 21 December 2015 8:03 PM, Dennis Shea <shea at ucar.edu> wrote:
>
>
> Also ... *you* must read the documentation carefully. The documentation
> states:
> "Each direct access record is a 4948 x 1649 CHARACTER*1"
>
> [1]
> You are using 'fbinrecread' which is for fortran sequential records.
> You should use 'fbindirread' which is for direct access records.
>
> [2]
> Ypu have 'lat' going from South-to-North. The documentation states the
> data are N->S.
>
> [3]
> Since the max byte is 255, I think unsigned byte type should be used.
>
>
> http://www.ncl.ucar.edu/Applications/
> Under 'Datasets' ... Click 'High Res Precipitation'
>
> Minor modifications to existing CMORPH examples resulted in cmorph_4.ncl
>
>
> On Mon, Dec 21, 2015 at 6:46 AM, Rick Brownrigg <brownrig at ucar.edu> wrote:
>> Hi,
>>
>> According to the docs at:
>>
>>
>> ftp://ftp.cpc.ncep.noaa.gov/precip/global_CMORPH/README.cmorph.8km_30minute
>>
>> the data are given as unsigned bytes, not floats. This would explain the
>> warning about file size. By the comments in the GRADS definition, you
>> multiply the cmorph values by 0.2 to get mm/hr. With that in mind, I
>> *think*
>> you need something like (untested!):
>>
>> cmorrf_ubytes = fbinrecread("test.bin",0,(/nlat,nlon/),"ubyte")
>>
>> cmorrf_ubytes at _FillValue = 255B
>>
>> cmorrf = cmorrf_ubytes * 0.2 ; convert to floats, units are mm/hr
>>
>>
>> As a side note, since its byte data, the setfileoption(...) is
>> superfluous.
>>
>> Hope that helps..
>>
>> Rick
>>
>>
>> On Sun, Dec 20, 2015 at 4:39 AM, Geeta Geeta <geetag54 at yahoo.com> wrote:
>>>
>>> I have to plot 8km_30minutes resolution CMORPH rainfall.
>>> The data is binary format. and has 24 files of each hour.
>>>
>>> -rw-r--r-- 1 aditya aditya 48955512 Dec 1 19:33
>>> CMORPH_8KM-30MIN_2015113021
>>> -rw-r--r-- 1 aditya aditya 48955512 Dec 1 19:33
>>> CMORPH_8KM-30MIN_2015113022
>>> -rw-r--r-- 1 aditya aditya 48955512 Dec 1 19:33
>>> CMORPH_8KM-30MIN_2015113023
>>>
>>> As per the documentation of this data from
>>>
>>> (ftp://ftp.cpc.ncep.noaa.gov/precip/global_CMORPH/CMORPH_8km-30-minute.ctl)
>>>
>>> DSET
>>>
>>> /your-data-set-path/advt-8km-intrp-prim-sat-spat-2lag-2.5+5dovlp8kmIR-%y4%m2%d2%h2
>>> OPTIONS yrev big_endian template
>>> UNDEF 255
>>> TITLE correlation estimates
>>> XDEF 4948 LINEAR 0.036378335 0.072756669
>>> YDEF 1649 LINEAR -59.963614 0.072771377
>>> ZDEF 01 LEVELS 1
>>> TDEF 99999 LINEAR 00z21dec2002 30mn
>>> VARS 3
>>> cmorph 1 -1,40,1,-1 xxxxxx yyyyy (mult. by 0.2 to get mm/hr units)
>>> time 1 -1,40,1,-1 xxxxxx yyyyy
>>> satid 1 -1,40,1,-1 xxxxxx yyyyy
>>> ENDVARS
>>>
>>> there are 3 records, 1st record being the desired parameter.
>>>
>>> (ftp://ftp.cpc.ncep.noaa.gov/precip/global_CMORPH/README.cmorph.8km_30minute).
>>>
>>> I have to plot each hourly file and then get 24 hrs rainfall for a day.
>>>
>>> ;;;;;;;Code;
>>>
>>> print(isbigendian)
>>>
>>> ; ----Defining for Once -----
>>>
>>> wks = gsn_open_wks("ps","CMO-v1")
>>> gsn_define_colormap(wks,"prcp_2")
>>>
>>> nlat = 1649
>>> nlon = 4948
>>> ;--------------------------------------------------
>>>
>>> lat = -59.963614 + ispan(0,nlat-1,1)*0.072771377
>>> ; print(lat)
>>> lon = 0.036378335 + ispan(0,nlon-1,1)*0.072756669
>>> ; print(lon)
>>>
>>> setfileoption("bin","ReadByteOrder","BigEndian")
>>>
>>> ; cmorrf = fbinrecread("test.bin",0,(/nlat,nlon/),"float") ; print
>>> 0th record.
>>>
>>>
>>> cmorrf = fbinrecread("test.bin",0,-1,"float") ; print 0th record.
>>>
>>> print("Sizeof rf ="+dimsizes(cmorrf))
>>> ; print(cmorrf)
>>> asciiwrite("rf.txt",cmorrf)
>>>
>>> When I run this,
>>>
>>> See http://www.ncl.ucar.edu/ for more details.
>>> (0) False
>>> warning:fbinrecread: size specified is greater than record size, filling
>>> with missing values
>>> (0) Sizeof rf =1649
>>> (1) Sizeof rf =4948
>>>
>>> when I use -1 in line defining cmorphh, I get this output.
>>>
>>> aditya at agniilap:~/geeta/ncl/CMORPH$ See http://www.ncl.ucar.edu/ for
>>> more
>>> details.
>>> (0) False
>>> (0) Sizeof rf =0
>>>
>>>
>>> no rainfall is written to the file.
>>> Also the 1st and 2nd records are not being shown.
>>>
>>> Pls suggest.
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>>>
>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>
>
More information about the ncl-talk
mailing list