[GRASS-dev] Microseconds in timestamps in abstract_space_time_dataset.py

Sören Gebbert soerengebbert at googlemail.com
Sat Oct 21 08:04:55 PDT 2017


Please try r71573 from grass_trunk, test your case and report any problems.

Best regards
Sören

2017-10-21 10:08 GMT+02:00 Nikos Alexandris <nik at nikosalexandris.net>:
> Dear Soeren & Co,
>
> the following stumbles in timestamps with microseconds. See:
>
> t.info lst -g
>
> id=lst at lst
> ..
> creator=nik
> temporal_type=absolute
> creation_time=2017-10-16 09:10:15.689554
> modification_time=2017-10-16 09:47:01.646840
> semantic_type=mean
> start_time=2013-04-13 10:00:09.935625
> end_time=2017-04-24 09:57:43.257139
> granularity=1 second
> ..
>
>
> First item is:
>
> t.rast.list lst -u column=name,start_time |head -1
> lst_LC81920282013103LGN01|2013-04-13 10:00:09.935625
>
>
> The error:
>
> ```
> t.rast.aggregate input=lst output=lst_yearly basename=lst_yearly suffix=gran
> granularity="1 year" method=average --o
> 0..20..40..60..80..100
> 0..100
> 0..Traceback (most recent call last):
>  File "/osgeo/grass72/dist.x86_64-pc-linux-gnu/scripts/t.rast.aggregate",
> line 213, in <module>
>    main()
>  File "/osgeo/grass72/dist.x86_64-pc-linux-gnu/scripts/t.rast.aggregate",
> line 203, in main
>    sp.get_relative_time_unit(),  dbif)
>  File
> "/osgeo/grass72/dist.x86_64-pc-linux-gnu/etc/python/grass/temporal/register.py",
> line 499, in register_map_object_list
>    file=filename, dbif=dbif)
>  File
> "/osgeo/grass72/dist.x86_64-pc-linux-gnu/etc/python/grass/temporal/register.py",
> line 341, in register_maps_in_space_time_dataset
>    sp.update_from_registered_maps(dbif)
>  File
> "/osgeo/grass72/dist.x86_64-pc-linux-gnu/etc/python/grass/temporal/abstract_space_time_dataset.py",
> line 2376, in update_from_registered_maps
>    tstring, time_format)
>  File "/usr/lib64/python2.7/_strptime.py", line 335, in _strptime
>    data_string[found.end():])
> ValueError: unconverted data remains: .935625
> ```
>
> Two possible updates. Remove microseconds altogether:
>
> Index: abstract_space_time_dataset.py
> ===================================================================
> --- abstract_space_time_dataset.py      (revision 71469)
> +++ abstract_space_time_dataset.py      (working copy)
> @@ -2368,6 +2368,8 @@
>                     # Convert the unicode string into the datetime format
>                     if self.is_time_absolute():
>                         if tstring.find(":") > 0:
> +                            if tstring.find('.') > 0:
> +                                tstring = tstring.split('.')[0]
>                             time_format = "%Y-%m-%d %H:%M:%S"
>                         else:
>                             time_format = "%Y-%m-%d"
>
> Or, retain them:
>
> Index: abstract_space_time_dataset.py
> ===================================================================
> --- abstract_space_time_dataset.py      (revision 71469)
> +++ abstract_space_time_dataset.py      (working copy)
> @@ -2367,7 +2367,9 @@
>                     tstring = row[0]
>                     # Convert the unicode string into the datetime format
>                     if self.is_time_absolute():
> -                        if tstring.find(":") > 0:
> +                        if tstring.find(":") and tstring.find(".") > 0:
> +                            time_format = "%Y-%m-%d %H:%M:%S.%f"
> +                        elif tstring.find(":") > 0:
>                             time_format = "%Y-%m-%d %H:%M:%S"
>                         else:
>                             time_format = "%Y-%m-%d"
>
>
> As ignorant as I am, I'd prefer the second. Would this cause problems to
> t.* operations?
>
> Thanks, Nikos
>
> _______________________________________________
> grass-dev mailing list
> grass-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/grass-dev


More information about the grass-dev mailing list