Поведение getThumbURL

Oct 14 2020

В Google Earth Engine я пытаюсь загрузить несколько отображаемых изображений, используя этот метод image.getThumbURL. Изображение хорошо видно Map.addLayer, но когда я пропускаю его, getThumbURLя получаю только пустое изображение. Вот пример такого поведения:

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

Что я делаю не так?

Ответы

6 KevinReid Oct 13 2020 at 22:59

Вы не указали масштаб и указали область, система координат которой указана в градусах. Таким образом, у вас получилось очень маленькое изображение (2 × 1 пиксель).

Если вы укажете масштаб, вы получите изображение:

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

Вы также можете указать явные размеры, но это может привести к искажению изображения, если размеры не соответствуют соотношению сторон региона:

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

Другой вариант, который может вас заинтересовать, - crsиспользовать проекцию изображения (или любую проекцию) вместо проекции области:

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

Эта версия не имеет наклонного правого края, потому что прямоугольник экспортированного изображения использует ту же систему координат, что и (по крайней мере, одно из) исходное изображение.

Также, как правило, неплохо использовать проекцию, предназначенную для картографии (будь то проекция изображения или другая), а не градусы долготы и широты, которые вы используете для своего региона (это то, что Earth Engine по умолчанию использует при отсутствии Лучшая идея), пиксели которого будут искажаться по мере приближения к полюсам. Обратите внимание, что это изображение ближе к соотношению сторон исходного прямоугольника на карте, тогда как первое изображение, которое указывает только масштаб, растянуто шире, чем должно быть.