Capítulo 10 Anexos
10.1 Código Realizado (JavaScript)
El siguiente código fue realizado en el editor de código de la plataforma Google Earth Engine. Los puntos de entrenamiento para su recreación lo pueden adquirir en el siguiente link:
//Explorando ImageCollection
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR")
.filterDate('2018-01-01', '2018-12-31')
.filterBounds(roi)
.sort('CLOUD_COVER')
.first();
print('Collection: ', l8);
var visParamsTrue = {bands :['B3', 'B2', 'B1'], min:0, max:3000, gamma:1.4};
var image = ee.Image("LANDSAT/LT05/C01/T1_SR/LT05_003069_20040814")
var image2004 = image.clip(roi)
Map.addLayer(image2004, visParamsTrue, "Img_2004");
Map.centerObject(roi);
//Data-training
var label = 'CLASS'
var bands = ['B1', 'B2', 'B3', 'B4', 'B5', 'B7']
var input = image2004.select(bands);
var entrenamiento = damage_forest.merge(water).merge(forest);
print(entrenamiento);
//Points into image -> training
var trainImage = input.sampleRegions({
collection: entrenamiento,
properties: [label],
scale: 30
});
print("Imagen Entrenada con Bandas",trainImage);
var trainingData = trainImage.randomColumn();
var trainSet = trainingData.filter(ee.Filter.lessThan('random', 0.8));
var testSet = trainingData.filter(ee.Filter.greaterThanOrEquals('random', 0.8));
//Modelo Classify "Random Forest" -> Aprendizaje basado en árboles de decisión
var algoritmo = ee.Classifier.smileRandomForest(10).train(trainSet, label, bands);
//Imagen clasification
var clasificacion = input.classify(algoritmo);
print("Clasificación (RandomForest):", clasificacion.getInfo())
//colors representation
var paleta = [
'#3182bd', //water(0)
'#31a354', //forest(1)
'#de2d26', //damage_forest(2)
];
Map.addLayer(clasificacion, {palette: paleta, min:0, max:2}, 'classification')
//Overall Accuracy
var conf = ee.ConfusionMatrix(testSet.classify(algoritmo)
.errorMatrix({
actual : 'CLASS',
predicted : 'classification'
}));
print('Matriz de Confusión:', conf);
print('Overall Accuracy:', conf.accuracy());
print('Índice Kappa:', conf.kappa());
print('Producers Accuracy:', conf.producersAccuracy());
print('Users Accuracy:', conf.consumersAccuracy());
//Area classified
var nombre = ['water','forest', 'damage_forest']
var renombre = clasificacion.eq([0,1,2]).rename(nombre)
var area = renombre.multiply(ee.Image.pixelArea().divide(1e6));
var areaclase = area.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: image2004.geometry(),
crs: 'EPSG:32619',
scale: 30,
maxPixels: 1E16
});
var areatotal = ee.Number(areaclase)
print('Área km^2:',areatotal)
//Descarga img classified
Export.image.toDrive({
image: clasificacion,
description: 'Landsat8_CART_2018',
scale: 30,
region: image2004.geometry(),
maxPixels: 1E10
});