Export
中间结果
假设您的目标是从相对复杂的计算图像中取样。通常Export
对图像更有效toAsset()
,加载导出的图像,然后采样。例如:
var image = ee.Image('UMD/hansen/global_forest_change_2018_v1_6'); var geometry = ee.Geometry.Polygon( [[[-76.64069800085349, 5.511777325802095], [-76.64069800085349, -20.483938229362376], [-35.15632300085349, -20.483938229362376], [-35.15632300085349, 5.511777325802095]]], null, false); var testRegion = ee.Geometry.Polygon( [[[-48.86726050085349, -3.0475996402515717], [-48.86726050085349, -3.9248707849303295], [-47.46101050085349, -3.9248707849303295], [-47.46101050085349, -3.0475996402515717]]], null, false); // 2016 年森林损失,对样本进行分层。 var loss = image.select('lossyear'); var loss16 = loss.eq(16).rename('loss16'); // 除云函数 function maskL8sr(image) { var cloudShadowBitMask = 1 << 3; var cloudsBitMask = 1 << 5; var qa = image.select('pixel_qa'); var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0) .and(qa.bitwiseAnd(cloudsBitMask).eq(0)); return image.updateMask(mask).divide(10000) .select("B[0-9]*") .copyProperties(image, ["system:time_start"]); } var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR') .map(maskL8sr); // 创建两个年度无云复合影像。 var composite1 = collection.filterDate('2015-01-01', '2015-12-31').median(); var composite2 = collection.filterDate('2017-01-01', '2017-12-31').median(); // 我们想要这个堆栈的分层样本 var stack = composite1.addBands(composite2) .float(); // 导出尽可能小的尺寸。 // 导出图像。由于导出已完成,因此对该块进行了注释。 /* var link = '0b8023b0af6c1b0ac7b5be649b54db06' var desc = 'Logistic_regression_stack_' + link; Export.image.toAsset({ image: stack, description: desc, assetId: desc, region: geometry, scale: 30, maxPixels: 1e10 }) */ // 加载导出的图像。 var exportedStack = ee.Image( 'projects/google/Logistic_regression_stack_0b8023b0af6c1b0ac7b5be649b54db06'); // 先取一个很小的样本,进行调试。 var testSample = exportedStack.addBands(loss16).stratifiedSample({ numPoints: 1, classBand: 'loss16', region: testRegion, scale: 30, geometries: true }); print(testSample); // Check this in the console. // 取一个大样本。 var sample = exportedStack.addBands(loss16).stratifiedSample({ numPoints: 10000, classBand: 'loss16', region: geometry, scale: 30, }); // 导出大样本...
在此示例中,请注意图像导出为浮点数。除非绝对必要,否则不要以双精度导出。执行此导出时,请注意代码编辑器链接(在导出前立即获得)嵌入在文件名中以实现可复制性。
导出完成后,重新加载资产并继续从中采样。请注意,首先在非常小的测试区域上运行非常小的样本,以进行调试。当证明成功时,获取更大的样本并将其导出。如此大的样本通常需要出口。不要期望这些样本在print()
没有先导出它们的情况下可以交互地(例如通过)或可用(例如作为分类器的输入)。