[ncl-talk] Time Vs Lat/Lon

Kunal Bali kunal.bali9 at gmail.com
Fri Nov 2 13:56:34 MDT 2018


I am not able to debug my query for re-gridding file. Otherwise the given
code is working fine with original file.

*###The file structure before gridding was#####*

#

# gridID 1

#

gridtype  = lonlat

gridsize  = 3408

xsize     = 48

ysize     = 71

xname     = lon

xlongname = "longitude"

xunits    = "degrees_east"

yname     = lat

ylongname = "latitude"

yunits    = "degrees_north"

xfirst    = 68.125

xinc      = 0.625

yfirst    = 5

yinc      = 0.5


*Variable: time_min*

Type: integer

Total Size: 13632 bytes

            3408 values

Number of Dimensions: 2

Dimensions and sizes: [lat | 71] x [lon | 48]

Coordinates:

            lat: [   5..  40]

            lon: [68.125..97.5]

Number Of Attributes: 3

  tag : dim_minind

  long_name : index of 1st  min value

  _FillValue : -99

(0) index of 1st  min value : min=0   max=23


*Variable: gg*

Type: integer

Total Size: 4 bytes

            1 values

Number of Dimensions: 1

Dimensions and sizes: [1]

Coordinates:




*### **The file structure after gridding **is ######*


# gridID 1

#

gridtype  = lonlat

gridsize  = 4057152

xsize     = 1921

ysize     = 2112

xname     = lon

xlongname = "longitude"

xunits    = "degrees_east"

yname     = lat

ylongname = "latitude"

yunits    = "degrees_north"

xfirst    = 68

xinc      = 0.015625

yfirst    = 5.0078125

yinc      = 0.015625


*Variable: time_min*

Type: integer

Total Size: 16228608 bytes

            4057152 values

Number of Dimensions: 2

Dimensions and sizes: [lat | 2112] x [lon | 1921]

Coordinates:

            lat: [5.0078125..37.9921875]

            lon: [  68..  98]

Number Of Attributes: 3

  tag : dim_minind

  long_name : index of 1st  min value

  _FillValue : -99

(0) index of 1st  min value : min=0   max=23


*Variable: gg*

Type: integer

Total Size: 4 bytes

            1 values

Number of Dimensions: 1

Dimensions and sizes: [1]

Coordinates:


fatal:Subscript out of range, error in subscript #0

fatal:An error occurred reading time

fatal:["Execute.c":8640]:Execute: Error occurred at or near line 43 in file
hour.ncl


script os attached herewith, please provide some solution for that.

---
Kunal Bali






On Fri, Nov 2, 2018 at 3:46 AM Adam Phillips <asphilli at ucar.edu> wrote:

> Kunal,
> Again, the error message is telling you what the issue is.
>
> Subscript out of range, error in subscript #0
> at the line
> time_min(gg,hh)  = (/ toint(time(arr_min(gg,hh))) /)
>
> That is saying that you are trying to put a single value from the right
> hand side of the equation into time_min(gg,hh), but that the first index of
> the time_min array is smaller than the value (=gg) that you are specifying.
> Add a printVarSummary(time_min) before the double do loop, and then print
> out the gg value at every iteration to see what is going on. Please try to
> debug your issues on your own before posting back to ncl-talk.
> Adam
>
>
> On Thu, Nov 1, 2018 at 3:23 PM Kunal Bali <kunal.bali9 at gmail.com> wrote:
>
>> I am sorry for that sir. It was by mistake.
>>
>> Just one more question,
>>
>> The given file was in 0.5x0.6 resolution. I regrid the data into 0.015
>> resolution. Also, I masked the data within Indian region. And then I run
>> the same code for the updated file. then it starts giving error as
>> Subscript out of range, error in subscript #0
>> at the line
>> time_min(gg,hh)  = (/ toint(time(arr_min(gg,hh))) /)
>>
>>
>> the new regrinding str is
>> #
>> # gridID 1
>> #
>> gridtype  = lonlat
>> gridsize  = 5273664
>> xsize     = 2497
>> ysize     = 2112
>> xname     = lon
>> xlongname = "longitude"
>> xunits    = "degrees_east"
>> yname     = lat
>> ylongname = "latitude"
>> yunits    = "degrees_north"
>> xfirst    = 59
>> xinc      = 0.015625
>> yfirst    = 5.0078125
>> yinc      = 0.015625
>>
>>
>> ---
>> Kunal Bali
>>
>>
>>
>>
>>
>>
>> On Fri, Nov 2, 2018 at 2:32 AM Adam Phillips <asphilli at ucar.edu> wrote:
>>
>>> Kunal,
>>> Please do not respond offline unless asked to do so. That way others can
>>> assist.
>>>
>>> You stated that you got your script working but you doubt the results of
>>> the plot you sent. There is no way for me to know if the plot is correct
>>> either, as it is not my data. Did you check a particular grid point by eye
>>> by printing out the values and seeing what time the min/max values shown in
>>> the plot correspond to?  This is on  you to verify. It is also up to
>>> you to check each step in your script, and that you understand what each
>>> line is doing.  A simple test here run using your test data and your script
>>> looks correct to my eye:
>>>
>>> print(arr(:,15,25)+" "+time)
>>> (0) 59.5347 0
>>> (1) 59.6354 1
>>> (2) 59.6364 2
>>> (3) 59.5533 3
>>> (4) 59.3888 4
>>> (5) 59.1312 5
>>> (6) 60.0777 6
>>> (7) 59.7301 7
>>> (8) 59.4031 8
>>> (9) 58.9967 9
>>> (10) 58.7585 10
>>> (11) 58.5871 11
>>> (12) 58.4265 12
>>> (13) 58.3271 13
>>> (14) 58.3062 14
>>> (15) 58.3219 15
>>> (16) 58.3644 16
>>> (17) 58.3926 17
>>> (18) 58.4276 18
>>> print(time_min(15,25)+"  "+time_max(15,25))
>>> (0) 14  6
>>>
>>> Adam
>>>
>>> On Thu, Nov 1, 2018 at 1:30 PM Kunal Bali <kunal.bali9 at gmail.com> wrote:
>>>
>>>> Dear Phillips Sir,
>>>> Thanks for all the suggestions.
>>>> I tried your suggestion but still not sorted out.
>>>> and
>>>> according to the given link
>>>> https://www.ncl.ucar.edu/Document/Language/error_messages.shtml#AssignMismatch
>>>>
>>>> it's a common error and can be remove using reassignment operator, or *delete
>>>> <https://www.ncl.ucar.edu/Document/Functions/Built-in/delete.shtml> *
>>>>  So, I tried this but still getting the same error.
>>>>
>>>> ---
>>>> Kunal Bali
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Nov 2, 2018 at 12:20 AM Adam Phillips <asphilli at ucar.edu>
>>>> wrote:
>>>>
>>>>> Hi Kunal,
>>>>> The error message is telling you what the issue is.
>>>>> Assignment type mismatch, right hand side can't be coerced to type of
>>>>> left hand side.
>>>>> Looking at the offending line: time_min(gg,hh)  = time(arr_min(gg,hh))
>>>>> the error message is saying you are attempting to pass (say) a double
>>>>> value from the right side into an array of type float on the left hand
>>>>> side.
>>>>>
>>>>> To fix this sort of thing you can use the to* functions, so taking my
>>>>> example above:
>>>>> time_min(gg,hh)  = (/ tofloat(time(arr_min(gg,hh))) /)
>>>>>
>>>>> Note though that you will have to look at your own data and verify
>>>>> what the situation is for each array.
>>>>> Adam
>>>>>
>>>>> On Thu, Nov 1, 2018 at 12:06 PM Kunal Bali <kunal.bali9 at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> I tried as
>>>>>>
>>>>>>     arr_min = *dim_minind* ( arr(time|:, lat|:, lon|:),0 )
>>>>>>     printVarSummary(arr_min)
>>>>>>     printMinMax(arr_min,0)
>>>>>>
>>>>>>     arr_max = *dim_minind* ( arr(time|:, lat|:, lon|:),0 )
>>>>>>     printVarSummary(arr_max)
>>>>>>     printMinMax(arr_max,0)
>>>>>>
>>>>>>     time_min = arr_min    ; arr_min contains the indices that were
>>>>>> the minimum at each lat/lon point
>>>>>>     time_max = arr_max
>>>>>>     printVarSummary(time_max)
>>>>>>     do gg = 0,dimsizes(arr_min&lat)-1
>>>>>>      do hh = 0,dimsizes(arr_min&lon)-1
>>>>>>           time_min(gg,hh)  = time(arr_min(gg,hh))
>>>>>>           time_max(gg,hh)  = time(arr_max(gg,hh))
>>>>>>       end do
>>>>>>     end do
>>>>>>
>>>>>> error comes at red line
>>>>>>
>>>>>> Assignment type mismatch, right hand side can't be coerced to type of
>>>>>> left hand side
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> Kunal Bali
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Nov 1, 2018 at 9:13 PM Adam Phillips <asphilli at ucar.edu>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Kunal,
>>>>>>> In NCL v6.5.0 you can specify -4 as the 2nd option in cd_calendar.
>>>>>>> It returns results that are the same as if you specify 0, so try specifying
>>>>>>> 0.
>>>>>>>
>>>>>>> Again, you need to use dim_minind
>>>>>>> <https://www.ncl.ucar.edu/Document/Functions/Contributed/dim_minind.shtml>
>>>>>>> and dim_maxind
>>>>>>> <https://www.ncl.ucar.edu/Document/Functions/Contributed/dim_maxind.shtml> to
>>>>>>> return the index of the minimum (/maximum) value, and not dim_max/dim_min.
>>>>>>> The latter two functions return the minimum and maximum values. You the
>>>>>>> indices to plug them into your time array within the double do loop I sent
>>>>>>> earlier.
>>>>>>> Adam
>>>>>>>
>>>>>>> On Thu, Nov 1, 2018 at 12:31 AM Kunal Bali <kunal.bali9 at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I tried this but not working
>>>>>>>>
>>>>>>>>     arr    = a->BCSMASS
>>>>>>>>     lat    = a->lat
>>>>>>>>     lon    = a->lon
>>>>>>>>
>>>>>>>>     printVarSummary(arr)
>>>>>>>>     timeT = cd_calendar(arr&time,-4)   [==> *getting a warning*:cd_calendar:
>>>>>>>> Unknown option, defaulting to 0.]
>>>>>>>>     time = timeT(:,3)
>>>>>>>>
>>>>>>>>     ;arr_min = dim_min( arr(lat|:, lon|:, time|:) )
>>>>>>>>     ;printVarSummary(arr_min)
>>>>>>>>     ;printMinMax(arr_min,0)
>>>>>>>>
>>>>>>>>     ;arr_max = dim_max( arr(lat|:, lon|:, time|:) )
>>>>>>>>     ;printVarSummary(arr_max)
>>>>>>>>     ;printMinMax(arr_max,0)
>>>>>>>>
>>>>>>>>     ;time_min = arr_min    ; arr_min contains the indices that were
>>>>>>>> the minimum at each lat/lon point
>>>>>>>>     ;time_max = arr_max
>>>>>>>>     ;printVarSummary(time_max)
>>>>>>>>     do gg = 0,dimsizes(arr_min&lat)-1
>>>>>>>>      do hh = 0,dimsizes(arr_min&lon)-1
>>>>>>>>           time_min(gg,hh) = time(arr_min(gg,hh))
>>>>>>>>           time_max(gg,hh) = time(arr_max(gg,hh))
>>>>>>>>       end do
>>>>>>>>     end do
>>>>>>>>
>>>>>>>> ---
>>>>>>>> Kunal Bali
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Nov 1, 2018 at 3:05 AM Adam Phillips <asphilli at ucar.edu>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi Kunal,
>>>>>>>>> Note that I recommended using dim_minind/dim_maxind, and not
>>>>>>>>> minind/maxind. Looking at the file you attached, you would pass your
>>>>>>>>> BCSMASS array into those two functions, and operate on the time (0)
>>>>>>>>> dimension. As previously stated, that will return a 2D array dimensioned
>>>>>>>>> lat x lon containing the desired indices. Then you would apply the double
>>>>>>>>> do loop coding I sent to form arrays of the times themselves.  Again, the
>>>>>>>>> time array in my example coding needs to be set to something that is easily
>>>>>>>>> plotted, say the Hour. You can set up an hour array for your data like this:
>>>>>>>>> a = addfile("hourmean.nc","r")
>>>>>>>>> arr = a->BCSMASS
>>>>>>>>> timeT = cd_calendar(arr&time,-4)
>>>>>>>>> time = timeT(:,3)
>>>>>>>>>
>>>>>>>>> Adam
>>>>>>>>>
>>>>>>>>> On Tue, Oct 30, 2018 at 12:02 PM Kunal Bali <kunal.bali9 at gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Thanks for this informations.
>>>>>>>>>>
>>>>>>>>>> I tried to get min mad max by using the link which you mentioned,
>>>>>>>>>> but the error comes with fatal:Argument type mismatch on
>>>>>>>>>> argument (0) of (maxind) can not coerce
>>>>>>>>>>
>>>>>>>>>> I also tried the code given below but facing the same error here.
>>>>>>>>>> (version-NCL 6.4.0)
>>>>>>>>>>
>>>>>>>>>> dims = *dimsizes* <https://www.ncl.ucar.edu/Document/Functions/Built-in/dimsizes.shtml>(X)
>>>>>>>>>>   x1d = *ndtooned* <https://www.ncl.ucar.edu/Document/Functions/Built-in/ndtooned.shtml>(X)      ; convert 2D array to 1D for use in maxind
>>>>>>>>>>   inds = *ind_resolve* <https://www.ncl.ucar.edu/Document/Functions/Built-in/ind_resolve.shtml>(*maxind* (x1d), dims)    ; convert 1D array back to 2D
>>>>>>>>>>   ilat = inds(0,0)        ; select the latitude index where the X array is at its' maximum
>>>>>>>>>>   ilon = inds(0,1)        ; select the longitude index where the X array is at its' maximum
>>>>>>>>>>   lat_max = X&lat(ilat)   ; insert the latitude index into the lat coordinate variable
>>>>>>>>>>   lon_max = X&lon(ilon)   ; insert the longitude index into the lon coordinate variable
>>>>>>>>>>   *print* <https://www.ncl.ucar.edu/Document/Functions/Built-in/print.shtml>("Maximum value located at "+lat_max+", "+lon_max)
>>>>>>>>>>
>>>>>>>>>> I also attached one sample file, in case if you need it.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ---
>>>>>>>>>> Kunal Bali
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Oct 30, 2018 at 2:47 AM Adam Phillips <asphilli at ucar.edu>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Kunal,
>>>>>>>>>>> If I understand correctly what you are after, you'd like to plot
>>>>>>>>>>> the time (at each grid point) where the maximum (or minimum) value occurs.
>>>>>>>>>>> This will likely take some trial and error on your part. Here's
>>>>>>>>>>> what I think you need to do:
>>>>>>>>>>> 1) Use dim_minind and dim_maxind to isolate the index where the
>>>>>>>>>>> grid point value is at its min/max.
>>>>>>>>>>>
>>>>>>>>>>> https://www.ncl.ucar.edu/Document/Functions/Contributed/dim_maxind.shtml
>>>>>>>>>>>
>>>>>>>>>>> https://www.ncl.ucar.edu/Document/Functions/Contributed/dim_minind.shtml
>>>>>>>>>>>
>>>>>>>>>>> This will result in a 2-D array (dimensioned lat x lon)
>>>>>>>>>>> containing the minimum indices, and the same type of array containing the
>>>>>>>>>>> maximum indices.
>>>>>>>>>>>
>>>>>>>>>>> 2)  There might be a more elegant way to map the indexes onto
>>>>>>>>>>> the correct times, but the following double do loop over the lat/lon
>>>>>>>>>>> dimensions will work:
>>>>>>>>>>>
>>>>>>>>>>> ; time is an array of your times
>>>>>>>>>>> time_min = arr_min    ; arr_min contains the indices that were
>>>>>>>>>>> the minimum at each lat/lon point
>>>>>>>>>>> time_max = arr_max
>>>>>>>>>>> do gg = 0,dimsizes(arr_min&lat)-1
>>>>>>>>>>>      do hh = 0,dimsizes(arr_min&lon)-1
>>>>>>>>>>>           time_min(gg,hh) = time(arr_min(gg,hh))
>>>>>>>>>>>           time_max(gg,hh) = time(arr_max(gg,hh))
>>>>>>>>>>>      end do
>>>>>>>>>>> end do
>>>>>>>>>>>
>>>>>>>>>>> You will want to make sure that your time array is in a format
>>>>>>>>>>> that is conducive to being plotted. (18:30 doesn't work for instance, but
>>>>>>>>>>> 1830 would.)
>>>>>>>>>>> I think that's it. Try starting with the above suggestions and
>>>>>>>>>>> see if you can get things to work. If you have further questions about this
>>>>>>>>>>> subject please reply to the ncl-talk email list.
>>>>>>>>>>> Adam
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Oct 29, 2018 at 6:57 AM Kunal Bali <
>>>>>>>>>>> kunal.bali9 at gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Dear NCL users,
>>>>>>>>>>>>
>>>>>>>>>>>> I have one file (2000-2017) with time, latitude, longitude and
>>>>>>>>>>>> variable. The time is given in hours(00:30 to 18:30). I need to plot a
>>>>>>>>>>>> spatial map of hours values at each grid cells, the contour map of hours
>>>>>>>>>>>> values should correspond to the variable values. So that I can see which
>>>>>>>>>>>> hour has high and low-value on the map. Some examples are given for time vs
>>>>>>>>>>>> latitude and time vs longitude, I don't need that.  I need to plot time vs
>>>>>>>>>>>> latitude longitude.
>>>>>>>>>>>>
>>>>>>>>>>>> I hope you got my point.
>>>>>>>>>>>> Any information on that?
>>>>>>>>>>>>
>>>>>>>>>>>> Thank You
>>>>>>>>>>>> ---
>>>>>>>>>>>> Kunal Bali
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> ncl-talk mailing list
>>>>>>>>>>>> ncl-talk at ucar.edu
>>>>>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Adam Phillips
>>>>>>>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory,
>>>>>>>>>>> NCAR
>>>>>>>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>>>>>>>>>
>>>>>>>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> ncl-talk mailing list
>>>>>>>>>> ncl-talk at ucar.edu
>>>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Adam Phillips
>>>>>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>>>>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>>>>>>>
>>>>>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> ncl-talk mailing list
>>>>>>>> ncl-talk at ucar.edu
>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Adam Phillips
>>>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>>>>>
>>>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> ncl-talk mailing list
>>>>>> ncl-talk at ucar.edu
>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Adam Phillips
>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>>>
>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> ncl-talk at ucar.edu
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>
>>>
>>> --
>>> Adam Phillips
>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>
>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>
>
> --
> Adam Phillips
> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>
> <http://www.cgd.ucar.edu/staff/asphilli>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181103/463cf241/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hour.ncl
Type: application/octet-stream
Size: 5376 bytes
Desc: not available
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181103/463cf241/attachment.obj>


More information about the ncl-talk mailing list