[ncl-talk] SPI calculation

Oluwaseun Ilori wilseun at gmail.com
Mon Dec 17 02:43:19 MST 2018


I've been using this example and it works but the date(month) for the
calculated SPI were missing in the generated netcdf file.
How could I solve this problem.

On Fri, Nov 30, 2018, 5:03 PM Dennis Shea <shea at ucar.edu wrote:

> *Please* read the File IO on netCDF. As noted in the documentation, the
> following is the most commonly used approach.
>
>   http://www.ncl.ucar.edu/Applications/method_1.shtml
>
> ===
>
>        *system* <http://www.ncl.ucar.edu/Document/Functions/Built-in/system.shtml>("/bin/rm -f SPI.nc")   ; remove any pre-existing file
>        ncdf = *addfile* <http://www.ncl.ucar.edu/Document/Functions/Built-in/addfile.shtml>("SPI.nc" ,"c")  ; open output netCDF file
>
>     ;===================================================================
>     ; create global attributes of the file (optional)
>     ;===================================================================
>        fAtt               = True            ; assign file attributes
>        fAtt at title         = "Standardized Precipitation Index"
>        fAtt at Conventions   = "None"
>        fAtt at creation_date = *systemfunc* <http://www.ncl.ucar.edu/Document/Functions/Built-in/systemfunc.shtml> ("date")
>        *fileattdef* <http://www.ncl.ucar.edu/Document/Functions/Built-in/fileattdef.shtml>( ncdf, fAtt )            ; copy file attributes
>
>     ;===================================================================
>     ; output variables directly; NCL will call appropriate functions
>     ; to write the meta data associated with each variable
>     ;===================================================================
>        ncdf->SPI  = spi    ; (len,time,lat,lon)
>
>
> On Thu, Nov 29, 2018 at 10:29 PM Soma Roy <somaroy892 at gmail.com> wrote:
>
>> Hello Mary,
>>
>> I just want to know that what is the more efficient way to save the
>> variable "spi" as a netcdf for multiple runlen?
>>
>> Say 3,6,9 and 12 or 12 and 24 as mentioned in the spi_2.ncl script.
>>
>> I want to save all runlen in a single netcdf file in single run time.
>>
>> Please kindly inform me.
>>
>> Thanking you,
>> Soma
>>
>> On Thu, Nov 29, 2018, 20:12 Dennis Shea <shea at ucar.edu wrote:
>>
>>> I do not understand: *"197207 with 3 month running avg"*
>>>
>>>
>>> If you used:
>>>
>>>
>>>
>>> *runlen = (/ 12, 24 /)  *
>>>
>>> and your source array is dimensioned:
>>> *(time,lat,lon) ==> (492,129,135)*then your SPI variable should be
>>>
>>>
>>>
>>> *[len | 2] x [time | 492] x [lat | 129] x [lon | 135]*and your source array is dimensioned:
>>> * (time,lon,lat) ==> (492,135,129)*then your SPI variable should be
>>>
>>>
>>>
>>>
>>>
>>>
>>> *[len | 2] x [time | 492] x [lon | 135] x [lat | 129]  ---     0            1             2             3---*
>>>
>>>  *IF* you want to perform a 3-month running average of the 12 and 24 run-lengths
>>>
>>> nrun = 3
>>> opt  = ?   ; read documentation
>>> tdim = 1   ; time dimension
>>> spi3= *runave_n_Wrap* <http://www.ncl.ucar.edu/Document/Functions/Contributed/runave_n_Wrap.shtml> (spi, nrun, tdim, opt)
>>>
>>> *printVarSummary*(spi3)
>>>
>>> ========
>>>
>>>
>>>
>>>
>>>
>>> On Thu, Nov 29, 2018 at 1:15 AM Soma Roy <somaroy892 at gmail.com> wrote:
>>>
>>>> Hello Mary,
>>>>
>>>> I save the data of 'spi' as netcdf file.
>>>>
>>>> Where dimension of the data is like below;
>>>> spi(135x129x492) ; (lon, lat, spi values)
>>>>
>>>> Now my question is if I want to select 197207 with 3 month running avg.
>>>> Then how to select those indices from 3rd dimension of the matrix "spi"?
>>>>
>>>> Start yr is 1970.
>>>>
>>>> Please kindly inform me.
>>>>
>>>> Thanking you,
>>>> Soma
>>>>
>>>> On Thu, Nov 29, 2018, 12:39 Oluwaseun Ilori <wilseun at gmail.com wrote:
>>>>
>>>>> Good day, please could you assist with the correct script of the spi
>>>>> calculation, I'm having problem listing the result of the one I'm doing to
>>>>> text file for further analysis on ArcGis.
>>>>>
>>>>> Thanks
>>>>>
>>>>> On Thu, Nov 29, 2018, 7:47 AM Soma Roy <somaroy892 at gmail.com wrote:
>>>>>
>>>>>> I fixed the issue. Please ignore my last mail.
>>>>>>
>>>>>> Soma
>>>>>>
>>>>>> On Thu, Nov 29, 2018, 11:07 Soma Roy <somaroy892 at gmail.com wrote:
>>>>>>
>>>>>>> Hello Mary,
>>>>>>>
>>>>>>> I am using the attached script. Modified it as per your hints. But
>>>>>>> getting some errors at run time.
>>>>>>>
>>>>>>> printVarSummary of the data is as follows;
>>>>>>> Variable: prc
>>>>>>> Type: double
>>>>>>> Total Size: 73560960 bytes
>>>>>>>             9195120 values
>>>>>>> Number of Dimensions: 3
>>>>>>> Dimensions and sizes:   [time | 528] x [lat | 129] x [lon | 135]
>>>>>>> Coordinates:
>>>>>>>             time: [ 360..1068]
>>>>>>>             lat: [ 6.5..38.5]
>>>>>>>             lon: [66.5.. 100]
>>>>>>> Number Of Attributes: 3
>>>>>>>   _FillValue :  -999
>>>>>>>   long_name :   GRIDDED RAINFALL
>>>>>>>   missing_value :       -999
>>>>>>>  : min=0   max=222.9121398925781
>>>>>>>
>>>>>>> I am getting the following errors;
>>>>>>> fatal:Dimension sizes of left hand side and right hand side of
>>>>>>> assignment do not match
>>>>>>> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 47
>>>>>>> in file spi_2.ncl
>>>>>>>
>>>>>>> fatal:NclOneDValGetClosestIndex: Non-monotonic coordinate value
>>>>>>> being used, can't complete coordinate subscript
>>>>>>> fatal:Could not obtain coordinate indexes, unable to perform
>>>>>>> subscript
>>>>>>> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 82
>>>>>>> in file spi_2.ncl
>>>>>>>
>>>>>>> Please kindly inform me how to correct it.
>>>>>>>
>>>>>>> Thanking you,
>>>>>>> Soma
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Nov 29, 2018 at 9:51 AM Soma Roy <somaroy892 at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Thank you very much.
>>>>>>>>
>>>>>>>> Soma
>>>>>>>>
>>>>>>>> On Thu, Nov 29, 2018, 02:28 Mary Haley <haley at ucar.edu wrote:
>>>>>>>>
>>>>>>>>> Soma,
>>>>>>>>>
>>>>>>>>> The spi_2.ncl script shows you how to calculate the yyyymm
>>>>>>>>> variable:
>>>>>>>>>
>>>>>>>>>   year    = yyyymm/100
>>>>>>>>>   yrStrt  = year(0)
>>>>>>>>>   yrLast  = year(ntim-1)
>>>>>>>>>   nyear   = yrLast-yrStrt+1
>>>>>>>>>   yyyymm  = yyyymm_time(yrStrt, yrLast, "integer")
>>>>>>>>>
>>>>>>>>> You don't need the "date" or "yyyymm" arrays, because you already
>>>>>>>>> have the year information. Use ispan to generate the "year" array and now
>>>>>>>>> you can get your yyyymm and yrfac values as needed:
>>>>>>>>>
>>>>>>>>>   year    = ispan(1970,2010,1)
>>>>>>>>>   ntim    = dimsizes(year)
>>>>>>>>>   yrStrt  = year(0)
>>>>>>>>>   yrLast  = year(ntim-1)
>>>>>>>>>   nyear   = yrLast-yrStrt+1
>>>>>>>>>   yyyymm  = yyyymm_time(yrStrt, yrLast, "integer")
>>>>>>>>>   yrfrac  = (/ yyyymm_to_yyyyfrac(yyyymm, 0.0) /)
>>>>>>>>>
>>>>>>>>> --Mary
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Nov 28, 2018 at 1:05 PM Soma Roy <somaroy892 at gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Thank you very much for the hint.
>>>>>>>>>> I will check it.
>>>>>>>>>>
>>>>>>>>>> But mannualy we can't set the "date" range in the script without
>>>>>>>>>> using CDO?
>>>>>>>>>>
>>>>>>>>>> Please kindly inform me.
>>>>>>>>>>
>>>>>>>>>> Thanking you,
>>>>>>>>>> Soma
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, Nov 29, 2018, 01:28 Guilherme Martins <
>>>>>>>>>> jgmsantos at gmail.com wrote:
>>>>>>>>>>
>>>>>>>>>>> I don't know if you use climate data operators or cdo software.
>>>>>>>>>>>
>>>>>>>>>>> You can set the data in your file.
>>>>>>>>>>>
>>>>>>>>>>> Exemple
>>>>>>>>>>>
>>>>>>>>>>> cdo settaxis,1970-01-01,00:00:00,1mon input.nc output.nc
>>>>>>>>>>>
>>>>>>>>>>> Guilherme.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Em qua, 28 de nov de 2018 16:35, Soma Roy <somaroy892 at gmail.com
>>>>>>>>>>> escreveu:
>>>>>>>>>>>
>>>>>>>>>>>> Hello,
>>>>>>>>>>>>
>>>>>>>>>>>> I am trying to calculate standadize precipitation index using
>>>>>>>>>>>> monthly gridded dataset.
>>>>>>>>>>>>
>>>>>>>>>>>> Dimension of data is like below;
>>>>>>>>>>>> Rainfall(12x41) (months x years).
>>>>>>>>>>>>
>>>>>>>>>>>> I am using the script from the below link;
>>>>>>>>>>>> https://www.ncl.ucar.edu/Applications/Scripts/spi_2.ncl
>>>>>>>>>>>>
>>>>>>>>>>>> But in my dataset there is no variable as "date".
>>>>>>>>>>>>
>>>>>>>>>>>> Can we manually set the date range inside the script?
>>>>>>>>>>>>
>>>>>>>>>>>> I am using rainfall dataset for 1970-2010.
>>>>>>>>>>>>
>>>>>>>>>>>> Please kindly inform me how we can modify it over the same
>>>>>>>>>>>> script.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanking you,
>>>>>>>>>>>> Soma
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> 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
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>> 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
>>>>
>>> _______________________________________________
>> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181217/8c2253d4/attachment.html>


More information about the ncl-talk mailing list