【问题标题】:Get image from ee.reduceRegion Google Earth Engine Python从 ee.reduceRegion Google Earth Engine Python 获取图像
【发布时间】:2020-06-03 22:32:12
【问题描述】:

正如函数documentation 所建议的那样,我们知道reduceRegion() 函数在由于服务器限制而出现“像素过多”错误时会派上用场。我目前正在使用 Google Colab,我的代码如下:

image = ee.Image('LANDSAT/LE7_TOA_5YEAR/2008_2012')
aoi = getPolygon((55.2708, 25.2048), 0.15) 

# Reduce the region. The region parameter is the Feature geometry.
meanDictionary = image.reduceRegion(reducer=ee.Reducer.mean(), geometry=aoi, scale=90, maxPixels=262144)

我打印meanDictionary.getInfo()后自然得到的结果是一个不同波段值的字典:

{'B1': 48.80214808618162,
 'B2': 50.636738705868815,
 'B3': 53.1672805851419,
 'B4': 58.36716764069926,
 'B5': 56.440968073087255,
 'B6_VCID_2': 209.51128253916946,
 'B7': 43.215088529918695}

我的问题是,在使用其各自的参数调用 reduceRegion() 后,我如何将实际缩小的图像作为 ee.image.Image 对象,因为它只返回一个字典。我可能会偏离轨道,如果是这样,请提供一些正确方向的指导!

【问题讨论】:

    标签: python-3.x gis google-colaboratory gdal google-earth-engine


    【解决方案1】:

    没有“缩小图像”,或者更确切地说,reduceRegion 的作用是将大量像素转换为 一个 数字或其他值(每个波段)。输出不是图像,因为不再有空间信息 - 整个缩减结果都在该字典中描述。

    有关“像素太多”错误的文档是指当它太大时如何进行缩减工作。 reduceRegion 是可能有这些错误的东西,而不是解决它们的方法。

    【讨论】:

    • 给定作为输出的单波段值字典,我将其转换为一个数值,感谢您对此的澄清。有什么方法可以让我得到一个 scaled 版本的图像作为输出,从而摆脱“像素太多”的错误?
    • @HibaJamal 添加单独步骤来缩放图像不是必需的,并且会导致更差的结果。如果您使用的算法会产生“像素过多”错误,那么该操作将具有scalemaxPixels 参数。你可以使用scale 来选择它进行的分辨率,如果你真的想做一个缓慢的高分辨率操作,你可以增加maxPixels(这是一个健全的检查,而不是一个硬限制)。
    • 感谢您在查找这些参数方面的领导,但我只使用 image.sampleRectangle 来获取特定的波段值数组,Geometry.Polygon 来指定一个区域,现在已经尝试使用 image.reproject它的 scale 参数。只有最后一个提供了比例参数,并且要么给出黑色图像(因为带范围外的蒙版像素的默认值为 0),要么给出白色图像(仍在尝试弄清楚)。
    • @HibaJamal 啊,如果您使用的是sampleRectangle(),请注意它说它在乐队的投影中采样。要更改它,请使用具有相同 crs 和不同比例的 reproject()
    • 是的,使用band_arrs = img.reproject(crs=img.projection().crs(), scale=sclx).sampleRectangle(region=aoi, defaultValue=0),如果sclx 太高,您认为输出图像(我在提取波段值数组后使用 pyplot 绘制)会出现错误吗?
    猜你喜欢
    • 2019-03-29
    • 2021-07-21
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多