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