Agora que você sabe como carregar e mostrar uma imagem, é hora de aplicar um cálculo a ela.
Por exemplo, é possível calcular a inclinação do terreno transmitindo a imagem de elevação do SRTM ao
método slope
do ee.Terrain
package.
Editor de código (JavaScript)
// Load the SRTM image. var srtm = ee.Image('CGIAR/SRTM90_V4'); // Apply an algorithm to an image. var slope = ee.Terrain.slope(srtm); // Display the result. Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon. Map.addLayer(slope, {min: 0, max :60}, 'slope');
No código ee.Terrain.slope(srtm)
, a imagem srtm
é fornecida como um argumento para o algoritmo de inclinação. O resultado será parecido com a Figura 3.

Cálculo com imagens
Há também métodos na classe ee.Image
que podem ser invocados em um objeto de imagem. Por exemplo, suponha que você queira fazer alguns cálculos usando bandas de imagem (às vezes chamadas de matemática de banda ou álgebra de mapa). Por exemplo, talvez você tenha interesse em operações trigonométricas em uma imagem de aspecto. Para isso, primeiro converta uma imagem de
aspecto em radianos e chame sin()
nela. Reutilizando nossa imagem srtm
,
Editor de código (JavaScript)
// Get the aspect (in degrees). var aspect = ee.Terrain.aspect(srtm); // Convert to radians, compute the sin of the aspect. var sinImage = aspect.divide(180).multiply(Math.PI).sin(); // Display the result. Map.addLayer(sinImage, {min: -1, max: 1}, 'sin');
O resultado será parecido com a Figura 4. Vale a pena analisar melhor o código aspect.divide(180).multiply(Math.PI).sin()
. Ao encadear vários métodos
assim, o código diz: "divida o aspecto por 180, multiplique o resultado por
π e, por fim, pegue o seno". É possível realizar operações matemáticas complexas em imagens combinando métodos dessa maneira. Consulte os
documentos do Image
para ver uma lista completa de operações
matemáticas, add()
, subtract()
, multiply()
etc.

Estatísticas de imagens
Outra classe útil de operações em imagens envolve o cálculo de estatísticas de pixels em regiões de imagens ou sobreposições raster-vetor. Para calcular estatísticas no Earth Engine, use um redutor, representado por classes no pacote ee.Reducer
. Por exemplo, suponha que você tenha interesse na média de elevação em alguma região. Você pode definir uma região desenhando um polígono com as ferramentas de desenho de geometria.
Para desenhar uma região de forma interativa, use a ferramenta de desenho de polígonos
(), digitalize um polígono sobre a
área de interesse e clique em Sair quando terminar. O objeto
ee.Geometry
resultante é nomeado automaticamente como geometry
e adicionado como uma importação na parte de cima do script. Clique no nome da variável nas importações e digite o novo nome para renomear como "polygon".
Em seguida, extraia o valor médio do pixel no polígono usando o seguinte código:
Editor de código (JavaScript)
// Compute the mean elevation in the polygon. var meanDict = srtm.reduceRegion({ reducer: ee.Reducer.mean(), geometry: polygon, scale: 90 }); // Get the mean from the dictionary and print it. var mean = meanDict.get('elevation'); print('Mean elevation', mean);
Há várias coisas a serem observadas aqui. Primeiro, observe que reduceRegion()
é um método disponível para objetos Image
. Saiba mais sobre como reduzir regiões aqui. Segundo, os argumentos do método são fornecidos em um objeto JavaScript transmitido como um único argumento. Especificamente, as chaves do objeto são os nomes dos parâmetros do método. Os valores são os argumentos do método. Em terceiro lugar, o parâmetro reducer
especifica o tipo de estatística a ser calculada, e o parâmetro geometry
especifica a região em que a estatística será calculada. O parâmetro scale
é o tamanho do pixel em metros a ser usado. Para evitar ambiguidade, sempre especifique a escala ao fazer reduções, já que o Earth Engine pode não conseguir determinar automaticamente a escala adequada com base nas entradas.
Saiba mais sobre a escala no Earth Engine.
Por fim, o valor de retorno de reduceRegion()
é um dicionário em que as chaves são nomes de bandas e os valores são as estatísticas de pixels das bandas. O método
get()
em um dicionário retorna o valor correspondente à chave
fornecida como um argumento. Nesse caso, a imagem srtm
tem uma banda, "elevation". Portanto, o código de exemplo recebe essa estatística do dicionário e a imprime.
Ao executar esse código, se você receber um erro semelhante a:
Não se preocupe! Há várias coisas que você pode fazer para resolver o erro. O método reduceRegion()
tem uma verificação para garantir que você considere se realmente quer incluir tantos pixels no cálculo. Isso evita que você faça algo por acidente, como tentar calcular a média de todos os pixels de um metro do mundo (não faça isso). Para resolver o erro, defina o parâmetro bestEffort
como true
adicionando bestEffort: true
ao dicionário de parâmetros ou defina o parâmetro maxPixels
com um valor maior que o padrão de 10 milhões de pixels, ou ambos. Se bestEffort
for verdadeiro, o Earth Engine vai recalcular automaticamente a escala para que maxPixels
não seja excedido.
Digressão: escala no Earth Engine
No exemplo anterior, scale
é definido como aproximadamente a resolução nativa da imagem SRTM. Para descobrir a resolução nativa de uma imagem, faça o seguinte:
Editor de código (JavaScript)
var scale = srtm.projection().nominalScale(); print('SRTM scale in meters', scale);
Se você especificar uma escala menor que a resolução nativa, o Earth Engine vai reamostrar a imagem de entrada usando o vizinho mais próximo e incluir todos esses pixels menores no cálculo. Se você definir uma escala maior, o Earth Engine vai usar pixels de entrada de uma versão agregada da entrada (ou seja, vai receber pixels de um nível mais alto da pirâmide de imagens). Saiba mais sobre como o Earth Engine lida com o escalonamento neste documento.
Até agora, você trabalhou com uma única imagem com uma única banda. Na próxima página, você vai aprender sobre imagens multibanda e coleções de imagens.