使用GEE下载哨兵2号影像(初学者版)

目录

写在前面

一、代码参考

1. 加载矢量边界

2. 搜索数据

3. 保存到谷歌云端硬盘

二、保存到谷歌云端硬盘并查看

三、哨兵数据详解

四、代码详解

1. district.geometry()

2. Map的一系列操作

3. image.select('QA60')

 4. <<及去云操作

5. dataset.median()

6. dataset.mosaic()


写在前面

       最近需要使用GEE大批量下载满足要求的哨兵2号影像,由于之前没有学习过GEE和java,在学习过程中一直摸爬滚打。此篇博文主要对网上的现有资料进行搬运,记录自己的学习过程。

一、代码参考

GEE 01 -Sentinel2A 哨兵数据下载_gee下载哨兵数据-CSDN博客

1. 加载矢量边界

// 1. load shp
var district = ee.FeatureCollection("users/xxx/xxx");

// var dsize = district.size();
// print(dsize);   // 1

var district_geometry = district.geometry();   //geometry the image

Map.centerObject(district_geometry, 12);   // the level of scale
Map.addLayer(district);

2. 搜索数据

// 2. find data
function maskS2clouds(image) {
  var qa = image.select('QA60');   // using QA band to wipe off the cloud

  // Bits 10 and 11 are clouds and cirrus, respectively.
  var cloudBitMask = 1 << 10;   // amplify the varity
  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).divide(10000);
  return image.updateMask(mask);
}


// Map the function over one year of data.
// Load Sentinel-2 TOA reflectance data.
var dataset = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
                  .filterBounds(district_geometry)
                  .filterDate('2017-01-01', '2021-01-01')
                  // Pre-filter to get less cloudy granules.
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
                  .map(maskS2clouds);
                  
                

var rgbVis = {
  min: 0.0,
  max: 0.3,
  bands: ['B4', 'B3', 'B2'],
};

Map.addLayer(dataset.median(), rgbVis, 'RGB');

3. 保存到谷歌云端硬盘

// 3. export to drive
var exportdataset =  ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
                  .filterBounds(district_geometry)
                  .filterDate('2020-01-01', '2021-01-01')
                  // Pre-filter to get less cloudy granules.
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
                  .map(maskS2clouds)
                  .select(['B4', 'B3', 'B2']);
                  
  var mosaic = exportdataset.mosaic();
  
  Export.image.toDrive({
      image:mosaic,
      description:'maolan_20',
      scale:10,
      maxPixels: 1e13,
      region:district_geometry,
      fileFormat: 'GeoTIFF',
      formatOptions: {
        cloudOptimized: true
      }
    });

二、保存到谷歌云端硬盘并查看

谷歌云端硬盘链接:Google 云端硬盘

GEE批量下载处理遥感数据教程及代码分享_哔哩哔哩_bilibili

三、哨兵数据详解

哨兵2号(Sentinel-2)介绍、下载、预处理及批处理-CSDN博客

四、代码详解

       该部分主要是对第一部分代码的解释,以及究竟为什么要这么写(超级适合新手)。

1. district.geometry()

GEE(Google Earth Engine)——将集合的几何图形绘制到图像上 - 知乎

2. Map的一系列操作

       在代码中主要包括Map.centerObject、Map.addLayer

GEE必须会教程—Map工具的使用_gee map.addlayer-CSDN博客

3. image.select('QA60')

       使用QA60波段标记实现去云(QA60为哨兵数据提供的用于cloud mask的影像控制波段),下面是GEE中对QA60的介绍:

GEE学习笔记 九十二:Sentinel-2 最新去云方法总结 - 知乎

4. <<及去云操作

       对哨兵2A数据10、11波段的操作用到了<<,<<为左移运算符,将这两个波段对应的变量1分别变为了原来的2的10次方和2的11次方,即1024和2048。

Java中的 << , >> , 和 >>>所代表的含义_java <<-CSDN博客

       对该部分的整体理解请看这里:

GEE常用的除云函数及如何理解并运用#Landsat#Sentinel_gee中divide函数-CSDN博客

       经过处理后,像元值为0的像元表示无云像元,像元值为1的像元表示有云像元。

5. dataset.median()

       dataset.median()对一段时间内的影像取中位数,关于中位数与平均数的选择可以参考下面的博文:

Google Earth Engine(GEE)——对于我们正确使用mean()和median()来使影像进行聚合_gee中的.median()什么意思-CSDN博客

6. dataset.mosaic()

       将GEE中的影像集合拼接为单张影像:

GEE学习笔记 五十九:GEE中mosaic、qualityMosaic、max区别 - 知乎

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值