Comportement de getThumbURL

Oct 14 2020

Sur Google Earth Engine, j'essaie de télécharger des images d'affichage en utilisant la méthode image.getThumbURL. L'image apparaît bien Map.addLayer, mais quand je la passe, getThumbURLje n'obtiens qu'une image vierge. Voici un exemple de ce comportement:

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

Qu'est-ce que je fais mal?

Réponses

6 KevinReid Oct 13 2020 at 22:59

Vous n'avez pas spécifié d'échelle et fourni une région dont le système de coordonnées est en degrés. Ainsi, vous obtenez une très petite image (2 × 1 pixels).

Si vous spécifiez une échelle, vous obtiendrez une image:

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

Vous pouvez également spécifier des dimensions explicites, mais cela peut vous donner une image déformée si les dimensions ne correspondent pas aux proportions de la région:

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

Une autre option qui pourrait vous intéresser est crsd'utiliser la projection de l'image (ou n'importe quelle projection) au lieu de la projection de la région:

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

Cette version n'a pas de bord droit incliné car le rectangle de l'image exportée utilise le même système de coordonnées que (au moins une) les images d'origine.

C'est aussi généralement une bonne idée d'utiliser une projection destinée à la cartographie (que ce soit la projection de l'image ou une autre), plutôt que les degrés de longitude et de latitude que vous utilisez pour votre région (ce que Earth Engine a utilisé par défaut en l'absence d'un meilleure idée), qui aura des pixels déformés lorsque vous vous rapprochez des pôles. Notez que cette image est plus proche du rapport hauteur / largeur de votre rectangle d'origine sur la carte, tandis que la première qui spécifie uniquement l'échelle est étirée plus large qu'elle ne devrait l'être.