[ncl-talk] Adding time coordinate
Dennis Shea
shea at ucar.edu
Wed Jan 13 09:57:36 MST 2021
What to say .....
Here are two lines at beginning of the file.
yyyy-mm-dd
hh:mn:sc
????????? lat
lon value
2015-01-25 00:04:34;239963527;-18.3521115;-59.866315;18
2015-01-25 00:04:34;568370796;-15.2493556;-58.7402566;-18
As you can see the yyyy-mm-dd-hh-mb-sc are identical. Hence, as noted in
a previous email the calculated times are identical. Hence, 'time' in not
monotonic.
I ***speculate*** that the ????????? is actually a fractional part of the
second.
%> ncl vanucia.dup_time_example.ncl | less
Is that correct?
It is the user's responsibility to know about and explore the data.
On Wed, Jan 13, 2021 at 6:44 AM Vanúcia Schumacher <
vanucia-schumacher at hotmail.com> wrote:
> I detailed the attached script better with comments on each step.
> The script's job is to take the data from the ascii file and create a
> regular grid with 1 km of spatial resolution.
> The variable (new_data) varies with values above 1 at some grid points.
> However, what I need to include in this script and I am not succeeding, is
> to include the hh and mn information for each variable in the grid point,
> when there are no missing values. If I have a value above 1 at the grid
> point, I want to know the hour and minute of that information.
>
> I made the corrections that Dennis suggested (attachment)
>
> I appreciate the progress
> Thanks
> ------------------------------
> *De:* Dennis Shea <shea at ucar.edu>
> *Enviado:* quarta-feira, 13 de janeiro de 2021 02:14
> *Para:* Dave Allured - NOAA Affiliate <dave.allured at noaa.gov>
> *Cc:* Vanúcia Schumacher <vanucia-schumacher at hotmail.com>; Ncl-talk <
> ncl-talk at ucar.edu>
> *Assunto:* Re: [ncl-talk] Adding time coordinate
>
> I agree with DaveA.
>
> I , also, do not understand your code. You must do a better job of
> explaining the objective.
>
> [1] Do you just want to convert the text file to a netCDF file?
>
> [2] Some sort of grid???
>
> You define a grid style variable "new_data"
> new_data = new((/nlat,mlon,ntimes/),"float")
>
> new_data!0 = "lat2"
> new_data!1 = "lon2"
> new_data!2 = "time"
>
> new_data&lat2 = lat2
> new_data&lon2 = lon2
> new_data&time = time
>
> To me, it looks like you are trying to directly place the raw values into
> the 'new_data' array.
>
> In fact, because each time is unique, there will be ntime=dimsizes(time)=
> *6024 * grids with one value per grid.
>
> ;;;;new_data({lat(i)},{lon(i)},{time(i)}) =
> new_data({LAT(i)},{LON(i)},{time(i)})+(/var(i)/)
>
> ---
> Also, the way you are accessing the various fields is wrong.
>
> NCL is confusing the - delimeter embedded with thh yyyy-mm-dd with a
> numeric minus sign.
>
> 2015-02-19 00:01:27;733939380;-18.4340369;-56.829563;-28
> ^ ^
> ===================================================
>
> datas := asciiread(pthasc(j),-1,"string")
> nline = dimsizes(datas)
> print("nline="+nline)
>
> ; NCL code is confusing the - delimeter with a minus sign
> ; Change delimeter embedded with yyyy-mm-dd to yyyy mm dd
> ; There may be better ways but (1) converting string to character
> ; (2) converting - character to : character
> ; (3) change : character to : string
>
> datac := tochar(datas) ; (nline,:)
> datac(:,4) = tochar(":")
> datac(:,7) = tochar(":")
> datas = tostring(datac) ; overwrite original
> ;;print(datas)
> nfld = str_fields_count(datas(0), delim) ; look at 1st line only
> print("nfld="+nfld)
>
> yyyy := toint(str_get_field(datas, 1, delim) )
> mm := toint(str_get_field(datas, 2, delim) )
> dd := toint(str_get_field(datas, 3, delim) )
> hh := toint(str_get_field(datas, 4, delim) )
> mn := toint(str_get_field(datas, 5, delim) )
> sc := toint(str_get_field(datas, 6, delim) )
>
> time := cd_inv_calendar(yyyy,mm,dd,hh,mn,sc,tunits, 0)
> time!0 = "time"
> ntimes = dimsizes(time)
> printVarSummary(time)
> LAT := todouble( str_get_field(datas, 8, delin) ) ; fields
> count starts at 1
> LON := todouble( str_get_field(datas, 9, delim) )
> VAL := todouble( str_get_field(datas,10, delim) )
> print("time="+time+" yyyy="+yyyy+" mm="+mm+" dd="+dd+" hh="+hh \
> +" mn="+mn+" sc="+sc+" LAT="+LAT+" LON="+LON+" VAL="+VAL)
>
>
>
>
>
> On Tue, Jan 12, 2021 at 7:58 PM Dave Allured - NOAA Affiliate via ncl-talk
> <ncl-talk at mailman.ucar.edu> wrote:
>
> Sure, one netcdf file per day, 1 km grid. But simple application of the
> cd_inv_calendar function only gets you a long 1-D array of exact times. It
> is not sufficient to determine the structure of the desired result file.
>
> This still leaves the question of how you want to carry the time-of-day
> information inside that one file. The related questions are, do you want a
> 2-D or 3-D array in the file, and what are the times of day on the third
> dimension. If the array is 3-D, then that means multiple grids within a
> single day. There are many examples of multiple grids per day in other
> data sets, and they are almost always regularly spaced over time, such as
> one grid per hour.
>
> It is even possible to have a single data grid, and a companion grid that
> has exact time of day at each grid point. This would be unusual, but not
> difficult. Also, for this you would need to decide what to do about
> multiple obs at the same grid point.
>
> So forget the details of NCL for a minute. Please describe specifically
> the grid or grids that you would like, and their spacing across time of
> day. This will work any way you like, as long as you can fully describe
> the shape of the desired end product.
>
>
> On Tue, Jan 12, 2021 at 4:17 PM Vanúcia Schumacher <
> vanucia-schumacher at hotmail.com> wrote:
>
> So, in fact what I need is just the hour and minute information, but the
> easiest way I found was to use the cd_inv_calendar function.
> How do you suggest that I can attach this information to the new_data
> variable?
> The purpose of the script is to spatialize the input data to a regular 1km
> grid.
> The input data is just one example of several data in which I use to
> generate a netcdf file per day with this script.
>
>
> ------------------------------
> *De:* Dave Allured - NOAA Affiliate <dave.allured at noaa.gov>
> *Enviado:* terça-feira, 12 de janeiro de 2021 16:39
> *Para:* Vanúcia Schumacher <vanucia-schumacher at hotmail.com>
> *Cc:* ncl-talk at ucar.edu <ncl-talk at ucar.edu>
> *Assunto:* Re: [ncl-talk] Adding time coordinate
>
> Okay. It looks like your original dates and times are not regularly
> spaced, and you are trying to make a new set of time coordinates by setting
> seconds = 0. This results in more irregular time values with some
> duplicate values, which are not legal for coordinate subscripting. This is
> the error "Non-monotonic coordinate value".
>
> It looks like your input file spans all 24 hours in one day. Can you
> please explain exactly what you want the new time coordinates to look
> like? Are they regularly spaced or irregular? Start and end times?
>
>
> On Tue, Jan 12, 2021 at 4:51 AM Vanúcia Schumacher <
> vanucia-schumacher at hotmail.com> wrote:
>
> Using your sugestion:
> ntimes = dimsizes(time)
> new_data = new((/nlat,mlon,ntimes/),"float")
> I got this error:
> 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 89 in
> file test.ncl
> The line 89: new_data({lat(i)},{lon(i)},{time(i)}) =
> new_data({lat(i)},{lon(i)},{time(i)})+(/var(i)/)
>
> Using this:
> ntimes = dimsizes(time(1))
> new_data = new((/nlat,mlon,ntimes/),"float")
> I got this error:
> fatal:Coordinate variables must be the same dimension as their dimension
> fatal:No coordinate variable exists for dimension (time) in variable
> (new_data)
> fatal:["Execute.c":8637]:Execute: Error occurred at or near line 86 in
> file test.ncl
> The line 86: new_data&time = time
>
> Attached is the script and a test data.
> Thanks
> ------------------------------
> *De:* Dave Allured - NOAA Affiliate <dave.allured at noaa.gov>
> *Enviado:* segunda-feira, 11 de janeiro de 2021 22:55
> *Para:* Vanúcia Schumacher <vanucia-schumacher at hotmail.com>
> *Cc:* ncl-talk at ucar.edu <ncl-talk at ucar.edu>
> *Assunto:* Re: [ncl-talk] Adding time coordinate
>
> Please show the complete text for line 75, the complete error message, and
> printVarSummary for the array new_data, just before line 75 is executed.
> Also please attach the current version of your script. Thank you.
>
>
> On Mon, Jan 11, 2021 at 5:39 PM Vanúcia Schumacher <
> vanucia-schumacher at hotmail.com> wrote:
>
> Thanks for the help, but the error persists in the line 75
>
> PrintVarSummary:
>
> Variable: nlat
> Type: integer
> Total Size: 4 bytes
> 1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
>
> Variable: mlon
> Type: integer
> Total Size: 4 bytes
> 1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
>
> Variable: ntimes
> Type: integer
> Total Size: 4 bytes
> 1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) 6024
>
> *De:* Dave Allured - NOAA Affiliate <dave.allured at noaa.gov>
> *Enviado:* segunda-feira, 11 de janeiro de 2021 20:27
> *Para:* Vanúcia Schumacher <vanucia-schumacher at hotmail.com>
> *Cc:* ncl-talk at ucar.edu <ncl-talk at ucar.edu>
> *Assunto:* Re: [ncl-talk] Adding time coordinate
>
> Your script looks pretty good so far. This does not look right:
> new_data = new((/nlat,mlon,toint(time(1))/),"float")
>
> Try this:
> ntimes = dimsizes (time)
> new_data = new((/nlat,mlon,ntimes/),"float")
>
> Always use printVarSummary when you are having problems with arrays; and
> look at dimensions, coordinates, attributes, and such.
>
> Also, in the future, please show the *first* error received, and be sure
> to show exactly which line it occurs on. Usually the first error causes
> more problems later, and it is harder to sort out. I am not sure what
> happened this time, but that does not matter now. Good luck.
>
>
> On Mon, Jan 11, 2021 at 2:51 PM Vanúcia Schumacher via ncl-talk <
> ncl-talk at mailman.ucar.edu> wrote:
>
> Hi users,
>
> I need to add the time information (preference in hh and mn) extracted
> from an ascii file to a new variable (new_data from script), but I am not
> having success.
> Attached is the script I am trying using the function cd_inv_calendar and
> the error obtained:
> fatal:No coordinate variable exists for dimension (time) in variable
> (new_data)
>
> I appreciate some help to attach this information to my new variable
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at mailman.ucar.edu
> List instructions, subscriber options, unsubscribe:
> https://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210113/22af34bb/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vanucia.dup_time_example.ncl
Type: application/octet-stream
Size: 2402 bytes
Desc: not available
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210113/22af34bb/attachment.obj>
More information about the ncl-talk
mailing list