[ncl-talk] SPI calculation

Dennis Shea shea at ucar.edu
Fri Nov 30 09:02:40 MST 2018


*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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181130/4e6d2ef6/attachment.html>


More information about the ncl-talk mailing list