[GRASS-user] error in t.rast.accdetect

Sören Gebbert soerengebbert at googlemail.com
Thu Apr 27 12:03:35 PDT 2017


Hi Vero,
this seems to be a bug introduced 14 month ago by someone who
implemented the time suffix. The indicator maps should have added
"_indicator" to their name to distinguish between occurrence and
indicator maps. I will fix this in trunk.

Ciao
Sören

2017-04-27 20:27 GMT+02:00 Veronica Andreo <veroandreo at gmail.com>:
> An update:
>
> I investigated outputs a bit more... The output maps that are registered in
> the occurrence strds contain the range of values that is described for
> indicator strds (from 1 to 3), and are in fact generated by something like
> this: if(isnull(eip1_2005_09_28), if(isnull(eip1_2005_09_29), null(), 1),
> if(isnull(eip1_2005_09_29), null(), 2)) <<-- that seems to be the indicator.
> The occurrence maps that are supposed to store the time in days from the
> beginning of the cycle, are not there (or they are overwritten at some
> point, dunno).
>
> In summary, the indicator maps are generated and registered in the
> occurrence strds. The occurrence maps are not created (or they are
> overwritten, dunno) and indicator strds is empty.
>
> My question would however, if the output are two strds, wouldn't we need to
> provide two basenames??
>
> best,
> Vero
>
> 2017-04-27 19:22 GMT+02:00 Veronica Andreo <veroandreo at gmail.com>:
>>
>> Hello list,
>>
>> I have accumulated a daily time series of temperatures with BEDD method by
>> means of t.rast.accumulate, and now, I need to identify where do the cycles
>> occur and how much do they last. However, when I run t.rast.accdetect, all
>> goes fine until I get this error:
>>
>> Traceback (most recent call last):
>>   File
>> "/home/veroandreo/software/grass7_trunk/dist.x86_64-pc-linux-gnu/scripts/t.rast.accdetect",
>> line 592, in <module>
>> ERROR: Unable to execute transaction:
>> INSERT INTO raster_base ( name ,creator ,mapset     ,creation_timemain()
>>
>> ,temporal_type ,id   File
>> "/home/veroandreo/software/grass7_trunk/dist.x86_64-pc-linux-gnu/scripts/t.rast.accdetect",
>> line 437, in main
>> ) VALUES ('eip2_2003_08_01' ,'veroandreo' ,'lst'
>> ,'2017-04-27 18:55:42.175407' ,'absolute' ,'eip2_2003_08_01 at lst') ;
>> INSERT INTO raster_absolute_time ( start_time ,id ,end_time ) VALUES
>> ('2003-08-01 00:00:00' ,'eip2_2003_08_01 at lst' ,'2003-08-02 00:00:00') ;
>> INSERT     register_null, empty_maps, dbif)
>> INTO  File
>> "/home/veroandreo/software/grass7_trunk/dist.x86_64-pc-linux-gnu/scripts/t.rast.accdetect",
>> line 479, in create_strds_register_maps
>>  raster_spatial_extent ( north ,bottom ,west ,top ,proj ,east
>> ,id ,south ) VALUES (2428000.000000 ,0.000000 ,4821000.000000 ,0.000000
>> ,'XY' ,6309000.000000 ,'eip2_2003_08_01 at lst' ,1312000.000000) ;
>> INSERT INTO raster_metadata     (map.insert(dbif)
>>  max  File
>> "/home/veroandreo/software/grass7_trunk/dist.x86_64-pc-linux-gnu/etc/python/grass/temporal/abstract_map_dataset.py",
>> line 283, in insert
>>  ,rows ,min ,datatype ,number_of_cells
>> ,cols ,ewres ,nsres ,id ) VALUES (3.000000 ,1488 ,1.000000 ,'CELL'
>> ,1660608
>> ,1116     return AbstractDataset.insert(self, dbif=dbif, execute=execute)
>> ,1000.000000   File
>> "/home/veroandreo/software/grass7_trunk/dist.x86_64-pc-linux-gnu/etc/python/grass/temporal/abstract_dataset.py",
>> line 403, in insert
>> ,1000.000000 ,'eip2_2003_08_01 at lst') ;
>> INSERT INTO raster_stds_register ( id ,registered_stds ) VALUES
>> ('eip2_2003_08_01 at lst' ,NULL) ;
>>     dbif.execute_transaction(statement)
>>   File
>> "/home/veroandreo/software/grass7_trunk/dist.x86_64-pc-linux-gnu/etc/python/grass/temporal/core.py",
>> line 1020, in execute_transaction
>>     return self.connections[mapset].execute_transaction(statement)
>>   File
>> "/home/veroandreo/software/grass7_trunk/dist.x86_64-pc-linux-gnu/etc/python/grass/temporal/core.py",
>> line 1314, in execute_transaction
>>     self.cursor.executescript(statement)
>> sqlite3.IntegrityError: UNIQUE constraint failed: raster_base.id
>>
>> I have no clue of what is wrong... Here are the commands I'm using (I'm
>> following the example in t.rast.accumulate manual page)
>>
>> # accumulation
>> t.rast.accumulate -n input=reconstructed_lst output=daily_bedd \
>>  start="2003-04-01" stop="2005-09-30" \
>>  cycle="6 months" offset="6 months" granularity="1 day" \
>>  basename=daily_bedd suffix=gran method=bedd limits=14,32 \
>>  scale=0.02 shift=-273.15 --o
>>
>> # detect cycle 1:
>> t.rast.accdetect input=daily_bedd \
>>   occurrence=occurrence_eip1 start="2003-04-01" stop="2005-09-30" \
>>   cycle="6 months" offset="6 months" range=109,218 \
>>   basename=eip1 indicator=indicator_eip1
>>
>> The maps are created (basename=eip1) and they contain data, the occurrence
>> strds is also created and contains the eip1 maps, but the indicator strds is
>> empty. And this one (the indicator strds) is the one needed to identify
>> where do the target cycles occur.
>>
>> I would really appreciate any help and advice... please :)
>>
>> Thanks much
>> Vero
>
>
>
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/grass-user


More information about the grass-user mailing list