1 votos

L7 problema con la clasificación del uso del suelo en Earth Engine

Estoy intentando clasificar el uso del suelo en Earth Engine con imágenes L7, sin embargo una parte de la región de interés se está quedando fuera como se ve en la imagen.

land use classification not generating properly using L7 imagery in Earth Engine

El código se encuentra en aquí :

//Set map centre
Map.setCenter(160.0348, -9.4573, 12)

//Import Landsat 7 imagery
var selection = L7.filterBounds(roi)
  .filterDate("1999-01-01", "2001-01-01")
  .filterMetadata("CLOUD_COVER", "less_than", 15)
  .mean()
  .clip(roi);

// Map.addLayer(selection);

// This example demonstrates the use of the Landsat 4, 5, 7 Collection 2,
// Level 2 QA_PIXEL band (CFMask) to mask unwanted pixels.

function maskL457sr(image) {
  // Bit 0 - Fill
  // Bit 1 - Dilated Cloud
  // Bit 2 - Unused
  // Bit 3 - Cloud
  // Bit 4 - Cloud Shadow
  var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);
  var saturationMask = image.select('QA_RADSAT').eq(0);

  // Apply the scaling factors to the appropriate bands.
  var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
  var thermalBand = image.select('ST_B6').multiply(0.00341802).add(149.0);

  // Replace the original bands with the scaled ones and apply the masks.
  return image.addBands(opticalBands, null, true)
      .addBands(thermalBand, null, true)
      .updateMask(qaMask)
      .updateMask(saturationMask);
}

// Map the function over one year of data.
var collection = ee.ImageCollection("LANDSAT/LE07/C02/T1_L2")
                     .filterDate('1999-01-01', '2004-01-01')
                     .map(maskL457sr);

var composite = collection.median().clip(roi);

// Display the results.
Map.setCenter(160.0348, -9.4573, 12);
Map.addLayer(composite, {bands: ['SR_B3', 'SR_B2', 'SR_B1'], min: 0, max: 0.3}, 'masked');

var training_points = Water.merge(BuiltUp_Urban).merge(ShrubGrass_Vegetation).merge(Dense_Vegetation).merge(Bare);
print(training_points,'training points');

var training_data = composite.sampleRegions({
  collection:training_points,
  properties: ['LC'],
  scale: 30})

print(training_data,'training data');

var classifier = ee.Classifier.smileCart()
var classifier = classifier.train({features: training_data,
classProperty: "LC",
inputProperties: ["SR_B1","SR_B2","SR_B3","SR_B4","SR_B5","ST_B6","SR_B7"]});

var classified_image = composite.classify(classifier); 

Map.addLayer(classified_image, {min: 0, max: 4},
'classified image');

e incluye todos los datos de entrenamiento para el clasificador. No estoy seguro de si esto es un problema con las lagunas L7 o algo no relacionado.

2voto

Gordon Morehouse Puntos 13

Esto se debe a que la parte que queda fuera es la región enmascarada para la banda "ST_B6".

enter image description here

Y al clasificar se incluye esa banda para que la imagen final elimine la parte enmascarada durante la clssificación. Si desea utilizar la banda "ST_B6" para la región que contiene su valor, voy a asignar un valor por defecto en lugar de la región enmascarada utilizando ee.Image.unmask(value, sameFootprint) o puede eliminar completamente esa banda para obtener la clasificación.

enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X