Diego García Díaz
GIS & Remote Sensing. Python & Statistics. Surf & MTB :)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Javier Bustamante Díaz
Responsable científico
(Investigador Científico)
Ricardo Díaz-Delgado Hernández
Dr. Biología
Isabel Afán Asencio
Responsable Técnico
Dra. Biología
David Aragonés Borrego
Ingeniero Forestal
Diego García Díaz
Geógrafo
Pedro Gómez Giráldez
Dr. Ingeniería de Montes
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección
DTM y Escalas
Modelo Matemático
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
{
"_id" : "20140812l8oli202_34",
"Info" : {
"Iniciada" : "Tue Nov 24 01:08:18 2015",
"Pasos" : {
"rad" : {
"Fecha" : "Tue Nov 24 01:17:22 2015",
"Kl-Values" : {
"b4" : NumberInt(5762),
"b5" : NumberInt(4674),
"b6" : NumberInt(4203),
"b7" : NumberInt(4453),
"b1" : NumberInt(9125),
"b2" : NumberInt(8083),
"b3" : NumberInt(6664),
"b9" : NumberInt(4968)
},
"Corrad" : "True"
},
"geo" : {
"Georef" : "True",
"Fecha" : "Tue Nov 24 01:14:02 2015"
},
"nor" : {
"Normalize" : "True",
"Fecha" : "Tue Nov 24 01:18:01 2015",
"Nor-Values" : {
"b4" : {
"Parametros" : {
"slope" : 1.119179679624905,
"r" : 0.9946001583686911,
"intercept" : -0.818075379766352,
"iter" : NumberInt(1),
"N" : NumberInt(56020)
},
"Tipo_Area" : {
"Arena" : NumberInt(711),
"Embalses" : NumberInt(2222),
"Mineria" : NumberInt(163),
"Mar" : NumberInt(49501),
"Urbano-1" : NumberInt(628),
"Urbano-2" : NumberInt(817),
"Aeropuertos" : NumberInt(354),
"Pastizales" : NumberInt(113),
"Pinar" : NumberInt(1511)
}
},
"b5" : {
"Parametros" : {
"slope" : 1.4735184393927765,
"r" : 0.9944821925427072,
"intercept" : -8.002146493486533,
"iter" : NumberInt(1),
"N" : NumberInt(54093)
},
"Tipo_Area" : {
"Arena" : NumberInt(206),
"Embalses" : NumberInt(1487),
"Mineria" : NumberInt(180),
"Mar" : NumberInt(49500),
"Urbano-1" : NumberInt(424),
"Urbano-2" : NumberInt(671),
"Aeropuertos" : NumberInt(287),
"Pastizales" : NumberInt(121),
"Pinar" : NumberInt(1217)
}
},
"b6" : {
"Parametros" : {
"slope" : 1.3603867421884617,
"r" : 0.9971326638449448,
"intercept" : -5.338541949997632,
"iter" : NumberInt(1),
"N" : NumberInt(55311)
},
"Tipo_Area" : {
"Arena" : NumberInt(698),
"Embalses" : NumberInt(1953),
"Mineria" : NumberInt(194),
"Mar" : NumberInt(49501),
"Urbano-1" : NumberInt(599),
"Urbano-2" : NumberInt(741),
"Aeropuertos" : NumberInt(332),
"Pastizales" : NumberInt(117),
"Pinar" : NumberInt(1176)
}
},
"b7" : {
"Parametros" : {
"slope" : 1.5470858289888685,
"r" : 0.9961333630704381,
"intercept" : -1.4178915745814127,
"iter" : NumberInt(1),
"N" : NumberInt(55864)
},
"Tipo_Area" : {
"Arena" : NumberInt(683),
"Embalses" : NumberInt(2284),
"Mineria" : NumberInt(200),
"Mar" : NumberInt(49501),
"Urbano-1" : NumberInt(555),
"Urbano-2" : NumberInt(713),
"Aeropuertos" : NumberInt(398),
"Pastizales" : NumberInt(108),
"Pinar" : NumberInt(1422)
}
},
"b2" : {
"Parametros" : {
"slope" : 1.897435537990908,
"r" : 0.9796848721026005,
"intercept" : 0.931654933456219,
"iter" : NumberInt(1),
"N" : NumberInt(53180)
},
"Tipo_Area" : {
"Arena" : NumberInt(662),
"Embalses" : NumberInt(1590),
"Mineria" : NumberInt(80),
"Mar" : NumberInt(47729),
"Urbano-1" : NumberInt(489),
"Urbano-2" : NumberInt(726),
"Aeropuertos" : NumberInt(238),
"Pastizales" : NumberInt(85),
"Pinar" : NumberInt(1581)
}
},
"b3" : {
"Parametros" : {
"slope" : 1.4573014972232725,
"r" : 0.9910393887505663,
"intercept" : -2.521427924507977,
"iter" : NumberInt(1),
"N" : NumberInt(55643)
},
"Tipo_Area" : {
"Arena" : NumberInt(571),
"Embalses" : NumberInt(2111),
"Mineria" : NumberInt(125),
"Mar" : NumberInt(49499),
"Urbano-1" : NumberInt(532),
"Urbano-2" : NumberInt(810),
"Aeropuertos" : NumberInt(287),
"Pastizales" : NumberInt(115),
"Pinar" : NumberInt(1593)
}
}
}
}
},
"Tecnico" : "LAST-EBD Auto",
"Finalizada" : "Tue Nov 24 01:18:04 2015"
},
"Clouds" : {
"cloud_scene" : 0.1,
"umbral" : NumberInt(50),
"cloud_PN" : 0.0
},
"usgs_id" : "LC82020342014224LGN00"
}
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Toda esta metodología es transferible a otras escenas.
Solo se necesitan una imagen de referencia y unas PIAs de la misma. Lo cual podría llegar a ser un proceso automático.
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Algoritmo
de bandas
Cuerpos de agua poligonizados e interpolados (DTM)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Hidroperiodo
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Máscaras de agua ciclo 2008/09
Escenas 202/34 & 202/35
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
1. Restauración Sotos 2. Depuradora del Rocío 3. Restauración del Arroyo del Partido 4. Restauración Marisma Gallega 5. Recuperación Caño Guadiamar 6. Recuperación Caño Travieso 7. Recuperación Brazo de la Torre 8. Permeabilización de la marisma frente al río, Brazo de la Torre y Entremuros
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
¡SERVIDOR DE IMÁGENES SATÉLITE!
¿Que es Google Earth Engine?
Respuesta Rápida:
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
TimeLapses
Datasets
API
Code Editor
Study Cases
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
TimeLapses
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Datasets
Visualización y apertura en code-editor
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Datasets
Visualización y descarga en Explorer
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
API
Se trata de la sección desde la que buscar toda la ayuda y las explicaciones sobre como programar para obtener el resultado que queremos
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Study Cases
Global Forest Change
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Study Cases
Global Water Occurence
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Study Cases
Digital Earth Australia (DEA) Shorelines & bathymetry
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Code Editor
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Scripts
// Esto es un comentario de una línea
print('Hello world!');
/*
Esto es la apertura de un comentario multilinea
var saludo = 'Hello GEE world!';
print(saludo);
Esto es el cierre de un comentario multilinea
*/
var number = 99;
print('El número es ' + number);
var lista = [0,1,2,3,4,5];
print('La lista es: ', lista);
var lista2 = [6, 7, 8, 9, 10];
var lista3 = lista.concat(lista2);
lista.forEach(function(i) {
print(i + 1)
});
print(lista3);
var Objeto = {
name: 'Diego',
notaMental: 'puh',
edad: 43,
hobbies: ['Mountain Bike', 'surf', 'llorar']
};
print('Dict:', Objeto);
// Function
var greet = function(name) {
return 'Hello ' + name;
};
print(greet('World'));
Javascript Basico
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Scripts
var huelva_buffer = huelva.buffer(50000)
var sevilla_buffer = sevilla.buffer(50000)
var marisma_buffer = marisma.buffer(25000)
Map.addLayer(huelva_buffer, {color:'red'})
Map.addLayer(sevilla_buffer, {color:'blue'})
// Compute the intersection, display it in green.
var intersection = huelva_buffer.intersection(sevilla_buffer);
Map.addLayer(intersection, {color: '00FF00'}, 'intersection');
// Compute the union, display it in magenta.
var union = huelva_buffer.union(sevilla_buffer, ee.ErrorMargin(1));
Map.addLayer(union, {color: 'FF00FF'}, 'union');
// Compute the difference, display in yellow.
var diff1 = huelva_buffer.difference(sevilla_buffer, ee.ErrorMargin(1));
Map.addLayer(diff1, {color: 'FFFF00'}, 'diff1');
// Compute symmetric difference, display in black.
var symDiff = huelva_buffer.symmetricDifference(sevilla_buffer).symmetricDifference(marisma_buffer, ee.ErrorMargin(1));
Map.addLayer(symDiff, {color: '000000'}, 'symmetric difference');
print('El area de la marisma es', marisma.area())
print('El centroide se encuentra en', marisma.centroid())
Map.addLayer(marisma.centroid(), {}, 'Centroide')
Geometries
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Scripts
//cargamos el datset como variable
var dataset = ee.Image('CGIAR/SRTM90_V4');
//seleccionamos la banda 'elevation'
var elevation = dataset.select('elevation');
//usamos las herramientas slope y aspect de la api disponibles en ee.Terrain (buscar en Docs)
var slope = ee.Terrain.slope(elevation);
var aspect = ee.Terrain.aspect(elevation);
//Añadimos el mapa y cargamos los rasters con su visualización. Cuidado de cargar la capa que es y cambiar los máximos y mínimos
Map.setCenter(-5.8598, 36.8841, 10);
Map.addLayer(elevation, {min: 0, max: 3000, palette: ['green', 'yellow', 'orange', 'brown', 'white']}, 'elevation');
Map.addLayer(slope, {min: 0, max: 45, palette: ['white', 'red']}, 'slope');
Map.addLayer(aspect, {min: 0, max: 360, palette: ['yellow', 'red', 'green', 'purple']}, 'aspect');
Terrain
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
// IMPORTS
//Aquí tenemos que crear un polígono como geometría al que llamaremos roi para hacer el Zona Statistics (lineas 23-29) var roi: "poligono"
//También tenemos que importar el shapefile de Andalucía, al que llamremos andalucia (linea 35). Está en mis assets, se llamaría así: var andalucia: 'users/digdgeografo/curso_GEE/Andalucia'
//Es interesante ver como podemos compartir los datos/archivos que subamos simplemente con la id que tiene en nuestros assets
//cargamos el datset como variable
var dataset = ee.Image('CGIAR/SRTM90_V4');
//seleccionamos la banda 'elevation'
var elevation = dataset.select('elevation');
//usamos las herramientas slope y aspect de la api disponibles en ee.Terrain (buscar en Docs)
var slope = ee.Terrain.slope(elevation);
var aspect = ee.Terrain.aspect(elevation);
//creamos una imagen compuesta con las 3 variables
var full = ee.Image.cat([elevation, slope, aspect]);
//Añadimos el mapa y cargamos los rasters con su visualización. Cuidado de cargar la capa que es y cambiar los máximos y mínimos
Map.setCenter(-5.8598, 36.8841, 10);
//Map.addLayer(elevation, {min: 0, max: 3000, palette: ['green', 'yellow', 'orange', 'brown', 'white']}, 'elevation');
//Map.addLayer(slope, {min: 0, max: 45, palette: ['white', 'red']}, 'slope');
//Map.addLayer(aspect, {min: 0, max: 360, palette: ['yellow', 'red', 'green', 'purple']}, 'aspect');
Map.addLayer(full, {min: 0, max:40, bands:['slope'], palette:['white', 'red']}, 'full_terrain');
//ESTADISTICAS ZONALES A UN ROI
var roiStats = full.reduceRegion({
reducer: ee.Reducer.max(),
geometry: roi,
scale: 90,
maxPixels: 1e9
});
print(roiStats)
//Estadisticas zonales a un municipio
var Almonte = andalucia.filter("nombre == 'Almonte'");
Map.addLayer(Almonte, {color: 'green'}, 'Almonte');
var AlmonteStats = full.reduceRegion({
reducer: ee.Reducer.median(),
geometry: Almonte,
scale: 90,
maxPixels: 1e9
});
print(AlmonteStats);
//Estadísticas zonales a la selección
var filtro = ee.Filter.inList('nombre', ['Almonte', 'Monachil', 'Cazorla']);
var munis = andalucia.filter(filtro);
Map.addLayer(munis, {color: 'purple'}, 'Municipios selected');
var selStats = full.select('elevation').reduceRegions({
collection: munis.select(['nombre']),
reducer: ee.Reducer.mean(),
scale: 30})
print(selStats);
//con estas lineas vamos a visualizar todos los municipios sin relleno
var empty = ee.Image().byte();
// Paint all the polygon edges with the same number and width, display.
var outline = empty.paint({
featureCollection: andalucia,
//color: 5,
width: 2
});
Map.addLayer(outline, {palette: 'black'}, 'edges');
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
// IMPORTS
var geometry: Point (-6.21, 36.53) //Punto centrado en la facultad
//Aquí tenemos que crear un punto, lo usaremos para situarlo sobre la marisma (o la zona que queramos y que sea esa la que se cargue).
//Luego lo usaremos para hacer un buffer y un clip con el (lineas 8 y 54). Le dejaremos el nombre de geometry .
//Seleccionamos las imágenes Landsat en DNs (raw images) para aplicar el simpleComposite y reducir la colección de Landsat con la imagen más limpia del año
var landsat = ee.ImageCollection("LANDSAT/LC08/C01/T1")
.filterDate('2019-01-01', '2020-01-01')
.filterBounds(geometry)
var composite = ee.Algorithms.Landsat.simpleComposite({
collection: landsat,
asFloat: true
})
// Compute NDVI 3 ways.
// Method 1)
var b5 = composite.select("B5")
var b4 = composite.select("B4")
var ndvi_1 = b5.subtract(b4).divide(b5.add(b4))
// Method 2)
var ndvi_2 = composite.normalizedDifference(["B5", "B4"])
// Method 3)
var ndvi_3 = composite.expression("(b5 - b4) / (b5 + b4)", {
b5: composite.select("B5"),
b4: composite.select("B4")
})
//Aqui estamos calculando la diferencia entre 2 métodos para calcular el ndvi
var dif = ndvi_1.subtract(ndvi_2)
Map.addLayer(ndvi_1, {min:-0.2, max:0.8} , "NDVI")
Map.addLayer(dif, {min:-0.2, max:0.2} , "NDVI DIFF")
Map.centerObject(geometry, 10)
// Calculate Modified Normalized Difference Water Index (MNDWI)
var mndwi = composite.normalizedDifference(['B3', 'B6']).rename(['mndwi']);
// For more complex indices, you can use the expression() function
var savi = composite.expression(
'1.5 * ((NIR - RED) / (NIR + RED + 0.5))', {
'NIR': composite.select('B5'),
'RED': composite.select('B4'),
}).rename('savi');
//var rgbVis = {min: 0.0, max: 350, bands: ['B5', 'B4', 'B3']};
var ndviVis = {min:0, max:1, palette: ['white', 'green']}
var ndwiVis = {min:0, max:0.5, palette: ['white', 'blue']}
Map.addLayer(mndwi.clip(geometry.buffer(25000), ndwiVis, 'mndwi')) //en la misma linea añadimos el indice y le aplicamos la mascara y el recorte
Map.addLayer(savi, ndviVis, 'savi')
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
// IMPORTS
// Solo hay que crear un polígono con el área que queremos exportar. Le dejamos el nombre geometry (línea 37)
// Load an image collection, filtered so it's not too much data.
var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterDate('2021-01-01', '2021-12-31')
//Aqui filtraríamos por path y row
//.filter(ee.Filter.eq('WRS_PATH', 202))
//.filter(ee.Filter.eq('WRS_ROW', 32));
// Compute the median in each band, each pixel.
// Band names are B1_median, B2_median, etc.
var ndvi = collection.map(function(image) {
return image.select().addBands(image.normalizedDifference(['B5', 'B4']));
});
var median = ndvi.reduce(ee.Reducer.median());
var medianRGB = collection.reduce(ee.Reducer.median());
//paleta y parametros de visualización (diccionario) para el NDVI
var vis = {min: 0, max: 1, palette: [
'0000FF', 'F8ECE0', 'FCD163', '66A000', '207401',
'056201', '004C00', '023B01', '012E01', '011301'
]};
// The output is an Image. Add it to the map.
var vis_param = {min: 500, max: 4500, bands: ['B5_median', 'B4_median', 'B3_median'], 'vis':vis, gamma: 1.6};
Map.centerObject(geometry, 8);
Map.addLayer(median, vis);
Map.addLayer(medianRGB,vis_param, 'RGB');
//Export to Image Drive
Export.image.toDrive({
image: median,
description: 'NDVI_L8_2017_median',
scale: 30, //tamaño de pixel que queremos de salida.
region: geometry,
fileFormat: 'GeoTIFF',
crs: 'EPSG:25830', //CRS de salida, nos permite reproyectar
folder: 'Curso_GEE_UCA' //si la carpeta no existiera la crearía. También podríamos exportar a Google Cloud o los Assets
//maxPixels: 2000000000
});
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Vamos a realizar una composición de NDVI Multitemporal para ver la estacionalidad de los cultivos
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
// Solo hay que crear un polígono con el área que queremos analizar. Le dejamos el nombre geometry.
// la idea es elegir una zona con muchos cultivos. En el desierto se ve muy bonito.
//Año 2016
var inv_16 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2016-01-01', '2016-03-31')
.select('NDVI').max();
var prim_16 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2016-04-01', '2016-06-30')
.select('NDVI').max();
var ver_16 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2016-07-01', '2016-09-30')
.select('NDVI').max();
//Año 2017
var inv_17 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2017-01-01', '2017-03-31')
.select('NDVI').max();
var prim_17 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2017-04-01', '2017-06-30')
.select('NDVI').max();
var ver_17 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2017-07-01', '2017-09-30')
.select('NDVI').max();
//Año 2018
var inv_18 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2018-01-01', '2018-03-31')
.select('NDVI').max();
var prim_18 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2018-04-01', '2018-06-30')
.select('NDVI').max();
var ver_18 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2018-07-01', '2018-09-30')
.select('NDVI').max();
//Año 2019
var inv_19 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2019-01-01', '2019-03-31')
.select('NDVI').max()//.reduce(ee.Reducer.percentile([95]))
var prim_19 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2019-04-01', '2019-06-30')
.select('NDVI').max()//reduce(ee.Reducer.percentile([95]))
var ver_19 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2019-07-01', '2019-09-30')
.select('NDVI').max()//reduce(ee.Reducer.percentile([95]))
//Año 2020
var inv_20 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2020-01-01', '2020-03-31')
.select('NDVI').max()//.reduce(ee.Reducer.percentile([95]))
var prim_20 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2020-04-01', '2020-06-30')
.select('NDVI').max()//reduce(ee.Reducer.percentile([95]))
var ver_20 = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI')
.filterDate('2020-07-01', '2020-09-30')
.select('NDVI').max()//reduce(ee.Reducer.percentile([95]))
//Composite
var inv = ee.Image.cat(inv_16, inv_17, inv_18, inv_19, inv_20).reduce(ee.Reducer.median())
var prim = ee.Image.cat(prim_16, prim_17, prim_18, prim_19, prim_20).reduce(ee.Reducer.median())
var ver = ee.Image.cat(ver_16, ver_17, ver_18, ver_19, ver_20).reduce(ee.Reducer.median())
var compo = ee.Image.cat(inv, prim, ver)
var year16 = ee.Image.cat(inv_16, prim_16, ver_16).clip(geometry); //si no hacemos clip tenemos el mundo entero
var year17 = ee.Image.cat(inv_17, prim_17, ver_17).clip(geometry);
var year18 = ee.Image.cat(inv_18, prim_18, ver_18).clip(geometry);
//Aqui aplicamos un umbral a la de 2016 para que solo nos uestre los valores con el ndvi mayor de 0.25
var mean = year16.reduce(ee.Reducer.mean())
var mask = mean.gt(0.25);
var year_2016_masked = year16.mask(mask);
//var collection = ee.ImageCollection(year16).merge(year17).merge(year18).merge(year19);
Map.centerObject(geometry, 9);
Map.addLayer(year_2016_masked, {'min': 0.1, 'max': 0.7}, '2016');
//Map.addLayer(geometry, {opacity: 0.7}, 'geometria');
//Map.addLayer(year17, {'min': 0.1, 'max': 0.7}, '2017');
//Map.addLayer(year18, {'min': 0.1, 'max': 0.7}, '2018');
Map.addLayer(compo, {'min': 0.1, 'max': 0.7}, 'Composite');
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Vamos a combinar datos Sentinel 1 a lo largo de un periodo de tiempo largo para ver las rutas marítimas más utilizadas
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
//Aqui tan solo creamos una geometría con la zona a la que queremos que nos haga zoom el mapa
//Le dejamos el nombre geometry (linea 81)
//var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR");
// Function to cloud mask from the pixel_qa band of Landsat 8 SR data.
function maskL8sr(image) {
// Bits 3 and 5 are cloud shadow and cloud, respectively.
var cloudShadowBitMask = 1 << 3;
var cloudsBitMask = 1 << 5;
// Get the pixel QA band.
var qa = image.select('pixel_qa');
// Both flags should be set to zero, indicating clear conditions.
var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
.and(qa.bitwiseAnd(cloudsBitMask).eq(0));
// Return the masked image, scaled to reflectance, without the QA bands.
return image.updateMask(mask).divide(10000)
.select("B[0-9]*")
.copyProperties(image, ["system:time_start"]);
}
// Map the function over one year of data.
var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterDate('2020-01-01', '2020-12-31')
.map(maskL8sr)
var composite = collection.median();
// Display the results.
// Get the median over time, in each band, in each pixel.
//var median = l8.filterDate('2020-01-01', '2020-12-31').median();
// Make a handy variable of visualization parameters.
var visParams = {bands: ['B6', 'B5', 'B4'], min: 100, max: 3500};
// Load or import the Hansen et al. forest change dataset.
var hansenImage = ee.Image('UMD/hansen/global_forest_change_2015');
// Select the land/water mask.
var datamask = hansenImage.select('datamask');
// Create a binary mask.
var mask = datamask.eq(1);
//var mask = datamask.eq(1);
// Update the composite mask with the water mask.
var maskedComposite = composite.updateMask(mask);
//Map.addLayer(maskedComposite, visParams, 'masked');
// Make a water image out of the mask.
var water = mask.not();
var land = mask.eq(1);
// Mask water with itself to mask all the zeros (non-water).
water = water.mask(water);
land = land.mask(land);
// Load the Sentinel-1 ImageCollection.
var sentinel1 = ee.ImageCollection('COPERNICUS/S1_GRD');
// Filter by metadata properties.
var vh_2020 = sentinel1
// Filter to get images with VH polarization.
.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH'))
// Filter to get images collected in interferometric wide swath mode.
.filter(ee.Filter.eq('instrumentMode', 'IW'))
.filterDate("2020-01-01","2020-12-31");
// Filter to get images from different look angles.
var vhAscending = vh_2020.filter(ee.Filter.eq('orbitProperties_pass', 'ASCENDING'));
var vhDescending = vh_2020.filter(ee.Filter.eq('orbitProperties_pass', 'DESCENDING'));
var radar_2020 = vhAscending.select('VH').merge(vhDescending.select('VH')).max().mask(water);
// Map composite over the Channel
Map.centerObject(geometry, 12);
Map.addLayer(radar_2020, {min: -15, max: 0}, 'Radar Merge 2020');
composite = composite.mask(land);
Map.addLayer(composite, {bands: ['B5', 'B4', 'B3'], min: 0, max: 0.3}, 'Landsat composite');
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Librería de Python basada en la API de GEE y en la librería de mapas Leaflet
Teledetección y Calidad del Agua
Diego García Díaz
diegogarcia@ebd.csic.es
Curso de Doctorado. Universidad de Cádiz.
Facultad de Ciencias del Mar (6-10 de marzo de 2023)
Recursos sobre GEE y Python:
https://www.youtube.com/@giswqs
https://courses.spatialthoughts.com/end-to-end-gee.html
https://www.udemy.com/course/learn-google-earth-engine-gee/
By Diego García Díaz
GIS & Remote Sensing. Python & Statistics. Surf & MTB :)