Comportamento de getThumbURL

Oct 14 2020

No Google Earth Engine, estou tentando baixar algumas imagens de exibição usando o método image.getThumbURL. A imagem mostra bem em Map.addLayer, mas quando passo por ela getThumbURLsó obtenho uma imagem em branco. Aqui está um exemplo desse comportamento:

var point = ee.Geometry.Point([11.300422012780208, 44.50570009326473])
var pngArea =
    ee.Geometry.Polygon(
        [[[10.966712295983333, 44.65340259358304],
          [10.966712295983333, 44.24754759759594],
          [11.738501846764583, 44.24754759759594],
          [11.738501846764583, 44.65340259358304]]], null, false)

var s2coll = ee.ImageCollection("COPERNICUS/S2")
s2coll = s2coll.filterBounds(point)
        .filterDate('2018-07-15', '2018-07-30')
print(s2coll)
var img = s2coll.mosaic()
print(img)
var visualization = {
  min: 0.0,
  max: 2000,
  bands: ['B4', 'B3', 'B2'],
}
var outImg = img.visualize(visualization)
Map.addLayer(outImg)

print(outImg.getThumbURL({region: pngArea, format: 'png'}))

https://code.earthengine.google.com/89afe6e672f63d2245ef438288f78f55

O que estou fazendo de errado?

Respostas

6 KevinReid Oct 13 2020 at 22:59

Você não especificou uma escala e forneceu uma região cujo sistema de coordenadas está em graus. Assim, você obteve uma imagem muito pequena (2 × 1 pixels).

Se você especificar uma escala, obterá uma imagem:

print(outImg.getThumbURL({region: pngArea, scale: 200, format: 'png'}));

Você também pode especificar dimensões explícitas, mas isso pode resultar em uma imagem distorcida se as dimensões não corresponderem à proporção da região:

print(outImg.getThumbURL({
  region: pngArea,
  dimensions: '150x150',
  format: 'png',
}))

Outra opção que pode ser do seu interesse é crsusar a projeção da imagem (ou qualquer projeção) em vez da projeção da região:

print(outImg.getThumbURL({
  region: pngArea,
  crs: s2coll.first().select('B4').projection(),
  scale: 200,
  format: 'png',
}))

Esta versão não tem uma borda direita inclinada porque o retângulo da imagem exportada está usando o mesmo sistema de coordenadas que (pelo menos uma das) imagens originais.

Geralmente também é uma boa ideia usar uma projeção destinada ao mapeamento (seja a projeção da imagem ou outra), em vez dos graus de longitude e latitude que você está usando para sua região (que é o padrão do Earth Engine na ausência de um melhor ideia), que terá pixels distorcidos conforme você se aproxima dos pólos. Observe que esta imagem está mais próxima da proporção do retângulo original no mapa, enquanto a primeira, que apenas especifica a escala, é ampliada mais do que deveria.