giovedì 12 febbraio 2026

Anomalie in NDVI con algoritmo Continuous Change Detection (CCDC)

Attenzione: questo plugin non funziona su Debian 13 per delle dipendenze non risolte. Funziona in modo corretto su  Debian 12 con QGis 3.22 LTS

Attenzione 2 : la funzione CCDC e' presente su Google Earth Engine solo sui profili a pagamento...per questo motivo ho usato la versione di QGis...Aggiornamento: a quanto sembra non e' necessario il profilo a pagamento ma che lo script sia collegato ad un progetto di Google Cloud ed autorizzato (un progetto autorizzato si riconosce dall'icona in alto a destra)

Progetto autorizzato

Progetto non autorizzato

 

 Questo plugin usa l'algorimo Continous Change Detection che si basa su una funzione armonica per evidenziare brusche variazioni del parametro analizzato




Questo e' lo script per Google Earth Engine

// 1. DEFINIZIONE ROI

var areaOfInterest = 
    /* color: #d63000 */
    /* displayProperties: [
      {
        "type": "rectangle"
      }
    ] */
    ee.Geometry.Polygon(
        [[[10.896754172154326, 43.02122523564496],
          [10.896754172154326, 43.002271538414895],
          [10.935463812657256, 43.002271538414895],
          [10.935463812657256, 43.02122523564496]]], null, false);


Map.centerObject(areaOfInterest, 15);

// 2. PREPARAZIONE DATI
var prepareData = function(image) {
  var optical = image.multiply(0.0000275).add(-0.2);
  var ndvi = optical.normalizedDifference(['SR_B4', 'SR_B3']).rename('NDVI');
  return image.addBands(ndvi).select('NDVI');
};

var collection = ee.ImageCollection("LANDSAT/LT04/C02/T1_L2")
  .merge(ee.ImageCollection("LANDSAT/LT05/C02/T1_L2"))
  .merge(ee.ImageCollection("LANDSAT/LE07/C02/T1_L2"))
  .filterBounds(areaOfInterest)
  .map(prepareData)
  .sort('system:time_start');

// 3. ESECUZIONE CCDC CON GESTIONE ERRORI
// Proviamo a chiamare l'algoritmo nativo in modo più "protetto"
var ccdc;
try {
  ccdc = ee.Algorithms.TemporalSegmentation.ccdc({
    collection: collection,
    breakThreshold: 1.0,
    minObservationsForSegment: 6
  });
  print('CCDC eseguito con successo:', ccdc);
} catch (e) {
  print('Errore critico: Il tuo account non ha accesso a CCDC tramite API diretta.', e);
  print('Soluzione: Assicurati che lo script sia collegato a un Cloud Project (in alto a destra).');
}

// 4. SE CCDC HA FUNZIONATO, VISUALIZZA
if (ccdc) {
  var magnitude = ccdc.select('NDVI_magnitude').arrayGet([0]);
  var tBreak = ccdc.select('tBreak').arrayGet([0]);

  var magViz = {min: -0.5, max: 0.5, palette: ['#d73027', '#f4a582', '#f7f7f7', '#d9f0d3', '#1a9850']};
  var dateViz = {min: 1984, max: 2024, palette: ['#0000ff', '#00ffff', '#ffff00', '#ff0000']};

  Map.addLayer(magnitude.clip(areaOfInterest), magViz, 'Magnitudo Cambiamento');
  Map.addLayer(tBreak.clip(areaOfInterest), dateViz, 'Anno del Cambiamento');
}

Nessun commento:

Posta un commento

Anomalie in NDVI con algoritmo Continuous Change Detection (CCDC)

Attenzione: questo plugin non funziona su Debian 13 per delle dipendenze non risolte. Funziona in modo corretto su  Debian 12 con QGis 3.22 ...