Issue using reduce_time after a select_time on two dates.
Opened this issue · 0 comments
I am using the gdalcubes project to do some work with ice concentration data and I want to get a difference between two dates.
My initial cube object output looks like this:
A data cube proxy object
Dimensions:
low high count pixel_size chunk_size
t 2016-09-19 2024-05-29 2810 P1D 1
y 75 79 40 0.1 256
x -102 -76 260 0.1 256
Bands:
name offset scale nodata unit
1 Ice_Concentration 0 1 NaN
I am applying the following functions to the cube to get what I want:
trend_function = function(x) {
(x["Ice_Concentration",][2] - x["Ice_Concentration",][1])
}
select = select_time(result, c("2024-05-13", "2024-05-20"))
trend.cube = reduce_time(select, names="Ice_Concentration_Trend", FUN=trend_function)
After the functions are applied I get the following datacube output.
A data cube proxy object
Dimensions:
low high count pixel_size chunk_size values
t 2024-05-13 2024-05-13 1 P0D 1 2024-05-13
y 75 79 40 0.1 256
x -102 -76 260 0.1 256
Bands:
name offset scale nodata unit
1 Ice_Concentration_Trend 0 1 NaN
Then attempting to write the output of the cube as a tif with the following code:
write_tif(trend.cube, dir=tempdir())
Gets me this error:
/usr/include/c++/11/bits/stl_vector.h:1045: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = gdalcubes::datetime; _Alloc = std::allocatorgdalcubes::datetime; std::vector<_Tp, _Alloc>::reference = gdalcubes::datetime&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__n < this->size()' failed.
/usr/include/c++/11/bits/stl_vector.h:1045: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = gdalcubes::datetime; _Alloc = std::allocatorgdalcubes::datetime; std::vector<_Tp, _Alloc>::reference = gdalcubes::datetime&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__n < this->size()' failed.
[ERROR] worker process #0 returned 134
[ERROR] worker process #1 returned 134
Any idea on how to approach this or what I'm doing wrong.