Soy muy nuevo en GEE y tengo el siguiente Problema: Tengo que crear series temporales de NDVI (con índices de vegetación MODIS) y comparar el valor medio mensual entre 2001 y 2021 con la media mensual en 2022.
Todo funcionaba bien, después de calcular la media mensual tenía dos ImageCollections con 12 imágenes cada una. Luego intenté restar la serie temporal de 2022 de la otra para obtener la diferencia de NDVI. La resta funciona, pero el orden de las imágenes está roto.
Ordenar antes de restar: 0, 1, 2, 3, .... 10, 11
Orden después de restar: 0, 1, 10, 11, 2, 3, ...
No se como solucionarlo porque quizás no entiendo muy bien como funciona la estructura de datos de los objetos/imágenes en GEE. Tampoco entiendo por qué las ImageCollections antes de restarlas estaban ordenadas correctamente incluso si no había ningún cero inicial en system:index (las etiquetas de las series temporales son las mismas en el inspector) pero después de restar esto(?) de repente era un problema.
Ya he intentado crear una nueva propiedad con el valor de system:index e insertar un cero inicial a los índices 0-9 pero parece que el valor no es ni una cadena normal ni un número por lo que no hace lo que quiero.
var ndviReference = ee.ImageCollection("MODIS/061/MOD13A2").filterDate('2001-01-01', '2021-12-31').select('NDVI')
var ndvi2022 = ee.ImageCollection("MODIS/061/MOD13A2").filterDate('2022-01-01', '2022-12-31').select('NDVI')
var months = ee.List.sequence(1, 12);
var ndvi2022byMonth = ee.ImageCollection.fromImages(
months.map(function (m) {
return ndvi2022.filter(ee.Filter.calendarRange(m, m, 'month'))
.select(0).median()
.set('month', m);
}));
var ndviReferencebyMonth = ee.ImageCollection.fromImages(
months.map(function (m) {
return ndviReference.filter(ee.Filter.calendarRange(m, m, 'month'))
.select(0).median()
.set('month', m);
var ndviDiffboth = ndvi2022byMonth.combine(ndviReferencebyMonth)
var ndviDiffsubtracted = ndviDiffboth.map(function(img){
var ndvi = img.select(0).subtract(img.select(1))
return ee.Image([ndvi])
})