clip()
不必要地使用会增加计算时间。clip()
除非对您的分析有必要,否则请避免 。如果您不确定,请不要剪辑。一个错误使用剪辑的例子:
坏- 不要不必要地剪辑输入!
var table = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); var l8sr = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR'); var chad = table.filter(ee.Filter.eq('country_na', 'Chad')).first(); // Do NOT clip unless you need to. var unnecessaryClip = l8sr .select('B4') // Good. .filterBounds(chad.geometry()) // Good.使用边界顾虑比较好 .filterDate('2019-01-01', '2019-12-31') // Good. .map(function(image) { return image.clip(chad.geometry()); // NO! Bad! Not necessary.这个操作非必要的 }) .median() .reduceRegion({ reducer: ee.Reducer.mean(), geometry: chad.geometry(), scale: 30, maxPixels: 1e10, }); print(unnecessaryClip); //对于clip()我们一般只是再导出结果的时候,或者自己的研究区数据的时候才会使用!
可以完全跳过剪切输入图像,因为在reduceRegion()
调用中指定了区域 :
好- 在输出上指定区域。
var noClipNeeded = l8sr .select('B4') // Good. .filterBounds(chad.geometry()) // Good. .filterDate('2019-01-01', '2019-12-31') // Good. .median() .reduceRegion({ reducer: ee.Reducer.mean(), geometry: chad.geometry(), // 这里可以代替,应为你的研究区就是这个所以放进来就好,另外你自己上传的矢量文件后面一定要加入.geometry()否则有可能会报错! scale: 30, maxPixels: 1e10, }); print(noClipNeeded);
如果您需要剪辑复杂的集合,请使用clipToCollection()
如果您确实需要剪辑某些内容,并且要用于剪辑的几何图形位于集合中,请使用clipToCollection()
:
var ecoregions = ee.FeatureCollection('RESOLVE/ECOREGIONS/2017'); var image = ee.Image('JAXA/ALOS/AW3D30_V1_1'); var complexCollection = ecoregions .filter(ee.Filter.eq('BIOME_NAME', 'Tropical & Subtropical Moist Broadleaf Forests')); Map.addLayer(complexCollection, {}, 'complexCollection'); var clippedTheRightWay = image.select('AVE')//这里在裁剪的时候一般都会提示让你选择波段,如果全部裁剪的化会加大计算量 .clipToCollection(complexCollection); Map.addLayer(clippedTheRightWay, {}, 'clippedTheRightWay', false);
不要在大型和/或复杂的集合上使用featureCollection.geometry()
或 featureCollection.union()
,这可能会占用更多内存。这一点就是如果你的矢量集合中有很多元素,那么会严重的占用内存
不要使用复杂的集合作为reducer的区域
如果您需要进行空间缩减,以便减速器汇集来自 a 中多个区域的输入FeatureCollection
,请不要 将其featureCollection.geometry()
作为geometry
输入提供给减速器。相反,使用clipToCollection()
一个足够大的区域来包含集合的边界。例如:
var ecoregions = ee.FeatureCollection('RESOLVE/ECOREGIONS/2017'); var image = ee.Image('JAXA/ALOS/AW3D30_V1_1'); var complexCollection = ecoregions .filter(ee.Filter.eq('BIOME_NAME', 'Tropical & Subtropical Moist Broadleaf Forests')); var clippedTheRightWay = image.select('AVE') .clipToCollection(complexCollection); Map.addLayer(clippedTheRightWay, {}, 'clippedTheRightWay'); //这里使用裁剪后的集合,而不是直接使用量很大的集合,这要那个有助于提高计算速度 var reduction = clippedTheRightWay.reduceRegion({ reducer: ee.Reducer.mean(), geometry: ee.Geometry.Rectangle({ coords: [-179.9, -50, 179.9, 50], // Almost global. geodesic: false }), scale: 30, maxPixels: 1e12 }); print(reduction); // If this times out, export it.