-
主要功能
将影像按照设定的行列数目分块导出
-
主要流程
在GEE线上的Code Editor编写JavaScript代码实现相关功能,以哨兵二为例:传入范围,筛选出符合条件的数据之后,定义可视化参数在线输出,分块导出
-
代码实现
1、获取影像
定义矢量面geometry(可手动借助GEE画图工具或者上传shp)、时间范围start和finish、选择的波 段bandlist,得到云量低于20的影像集合dataset;mean函数均值合成得到示例影像image
var geometry =
ee.Geometry.Polygon(
[[[122.0882232789087, 40.750323126160055],
[122.0882232789087, 40.64308053105867],
[122.29078370371339, 40.64308053105867],
[122.29078370371339, 40.750323126160055]]], null, false);
var year=2020
var start = ee.Date(year+'-4-01');
var finish = ee.Date(year+'-5-1');
var bandlist=['B2','B3','B4','B5','B6','B7','B8','B8A','B11','B12']
var dataset = ee.ImageCollection('COPERNICUS/S2_SR')
.filterDate(start, finish)
.filterBounds(geometry)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.map(maskS2clouds)
.select(bandlist);
function maskS2clouds(image) {
var qa = image.select('QA60');
// Bits 10 and 11 are clouds and cirrus, respectively.
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
// Both flags should be set to zero, indicating clear conditions.
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0));
return image.updateMask(mask).clip(geometry);
}
var image=dataset.mean();
2、可视化在线显示
var rgbVis = {
min: 0.0,
max: 3000,
bands: ['B4', 'B3', 'B2'],
};
Map.centerObject(geometry)
Map.addLayer(image, rgbVis, 'RGB');
3、分块导出
引用Export.image.toDrive导出到谷歌云盘,参数设置基本与通常情况下导出一幅影像相同(附录参数介绍),特别的是shardSize:GEE分块计算此图像的块的大小(以像素为单位),默认为256。fileDimensions:以像素为单位设置每个图像文件的尺寸。可以指定单个数字来表示正方形,或指定二维数组来表示(宽度、高度)。请注意,图像仍将被裁剪到整体图像尺寸。必须是上一个参数shardSize的倍数,不然会报错。
Export.image.toDrive({
image: image,
description: "image3",
folder: 'S2SR103',
shardSize:100,
fileDimensions:[100,200],
region: geometry,
scale: 10,
maxPixels: 1e13
});
-
结果处理——合并&分割
数据命名为:“文件名”+“左上角行数”+“左上角列数”
下载到本地查看像元行列数 为设定好的100*200
合并&分割主要在本地借助python进行:将图像合并为一个整体&拆分为其他尺寸
可参阅【Python笔记】遥感影像合并与分块