2 votos

Número de píxeles dentro de un polígono en Google Earth Engine

Estoy tratando de saber cuántos píxeles se encuentran dentro de mi polígono cuando calculo la media (y otras estadísticas) utilizando el reductor "count". Supongo que muchas cosas influyen en esto: lo que hace GEE con los píxeles que están divididos, la elección correcta de la escala, etc. Leí en algún lugar que un píxel se considerará en un cálculo cuando más del 50% de él esté incluido en el polígono. Estoy tratando de entender qué está pasando con el siguiente código:

https://code.earthengine.google.com/6144ac3715d195827378795c98994139

Tengo dos polígonos, polígono 1 y 2 que están dentro del píxel correspondiente. El polígono 1 tiene un área de 316 m2 y el polígono 2 un área de 360 m2, sin embargo, cuando uso el reductor de "count" obtengo un valor de 0 para el primero y un valor de 1 para el segundo. ¿Cuál es la regla aquí? Además, aún obtengo un valor para la media aunque el recuento sea cero. ¿Qué estoy haciendo mal?

Estaba tratando de leer la documentación de escala sobre esto, pero no logro entender qué está pasando.

3voto

Jeyanth Kumar Puntos 142

Las entradas al reductor de conteo no están ponderadas. Un píxel está dentro o fuera. Si está dentro, el centroide del píxel debe estar en la región. De lo contrario, está afuera. La media está ponderada por área, por lo que obtienes una respuesta basada en la fracción del píxel que intersecta con la región.

Editar:

Como sugirió Noel, puedes usar el reductor sum() en la máscara de imagen para obtener tanto píxeles fraccionarios como área. Continuando con el ejemplo del OP,

var mask = image.select(0).mask().rename('mask');
var area = ee.Image.pixelArea().multiply(mask).rename('area');

var sumDictionarypolygon1 = mask.addBands(area).reduceRegion({
  reducer: ee.Reducer.sum(),
  geometry: polygon1.geometry(),
  scale: 30,
  maxPixels: 1e9
});
print('suma para máscara de pol 1, escala=30', sumDictionarypolygon1);

Ten en cuenta que puedes obtener un área más precisa (que coincida con polygon1.area()) aumentando la escala.

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