目录

  • 1.sentinel卫星数据介绍
  • 1.1 sentinel1
  • 1.2 sentinel2
  • 1.3 sentinel3
  • 2.sentinel卫星数据预处理
  • 2.1 snap软件下载
  • 2.2 sentinel2 数据下载
  • 3.sentinel卫星数据应用-surface water


1.sentinel卫星数据介绍

1.1 sentinel1

哨兵一号(Sentinel-1)是由两颗极轨卫星组成的,通过C波段合成孔径雷达成像仪,不受天气影响情况下获取图像。它是欧空局为哥白尼计划开发的五个任务中的第一个卫星计划。

1.2 sentinel2

参考:
哨兵二号(Sentinel-2)也是由两颗极轨卫星组成的星座,两颗卫星在同一太阳同步轨道上,主要任务是监控陆地地表变化。幅宽是290km²,两颗卫星在无云条件下重访中纬度地区需要2~3天时间。

两颗卫星Sentinel-2A和Sentinel-2B在相同视角条件下,每5天重访陆地地表的大部分区域。由于相邻轨道的不同条带会重叠,重访部分区域的周期在不同视角条件下会不相同,但最多不超过10天。

Sentinel 2是高分辨率多光谱成像卫星,搭载多光谱成像仪(MSI),由“双胞胎” Sentinel 2A 和Sentinel 2B 两颗卫星组成,它们的轨道彼此相差180º,覆盖13个工作波段,放置在地球的两端。图像采集时间分辨率是每颗卫星10 天,两颗就是5天。

sentinel2数据官网说明书:https://sentinel.esa.int/documents/247904/685211/Sentinel-2_User_Handbook 与其他卫星对比:见说明书

python哨兵一号 哨兵一号和哨兵二号_其他


sentinel2波段信息:

python哨兵一号 哨兵一号和哨兵二号_其他_02


sentinel2数据常见产品:

python哨兵一号 哨兵一号和哨兵二号_其他_03


(1)Level-1C:是经过正射校正和几何精校正的大气表观反射率产品,并没有进行大气校正。

(2)Level-2A:主要包含经过大气校正的大气底层反射率数据(Bottom-of-Atmosphere corrected reflectance),但这个L2A数据需要用户根据需求自行生产,为此,ESA发布了专门生产L2A级数据的插件Sen2cor。

安装sen2cor插件:

1)sen2cor解压,复制到C:\Users\目录下;

2)快捷方式win+R,输入cmd,打开代码编辑器,输入:cd C:\Users\文件名

3)输入:L2A_Process.bat –help

python哨兵一号 哨兵一号和哨兵二号_数据_04


表示可以使用。

4)使用插件进行大气校正:https://zhuanlan.zhihu.com/p/399484626

1.3 sentinel3

哨兵三号(Sentinel-3)是有欧空局和欧洲气象组织联合运营,提供可操作的海洋和陆地观测服务,主要目标是以高精度和可靠性测量海面地形、海陆表面温度和海陆表面颜色,以支持海洋预报系统、环境监测和气候监测。在哨兵三号卫星上通过海洋和陆地彩色仪器(OLCI)、海洋和陆地表面温度辐射计(SLSTR)、合成孔径雷达高度计(SRAL)、微波辐射计(MWR)和精密定轨(POD)仪器获得图像。

2.sentinel卫星数据预处理

https://zhuanlan.zhihu.com/p/399484626

2.1 snap软件下载

下载链接:

http://step.esa.int/main/download/snap-download/ 根据自己电脑进行选择:

python哨兵一号 哨兵一号和哨兵二号_其他_05


snap软件下载参考:

2.2 sentinel2 数据下载

(1)USGS下载https://earthexplorer.usgs.gov/ 1)打开网站,登陆账号;如何注册账号

2)设置日期、感兴趣区、云量等条件;

3)选择数据类型sentinel2;

python哨兵一号 哨兵一号和哨兵二号_其他_06


4)下载。

(2)欧空局官网下载https://scihub.copernicus.eu/dhus/#/home 下载教程:

(3)利用GEE批量下载

1)导入兴趣区

var district = ee.FeatureCollection("users/Data/Serbug");

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

var district_geometry = district.geometry();

Map.centerObject(district_geometry,7);
Map.addLayer(district);

2)查询sentinel2数据

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).divide(10000);
}


// Map the function over one year of data.
// Load Sentinel-2 TOA reflectance data.
var dataset = ee.ImageCollection('COPERNICUS/S2')
                  .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');

显示结果:

python哨兵一号 哨兵一号和哨兵二号_数据_07


3)导出影像

//export data
var exportdataset =  ee.ImageCollection('COPERNICUS/S2')
                  .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)
                  .select(['B4', 'B3', 'B2']);
                  
  var mosaic = exportdataset.mosaic();
  
  Export.image.toDrive({
      image:mosaic,
      description:'S2_lakes',
      scale:10,
      maxPixels: 1e13,
      region:district_geometry,
      fileFormat: 'GeoTIFF',
      formatOptions: {
        cloudOptimized: true
      }
    });

代码来源:

下载数据代码:

3.sentinel卫星数据应用-surface water

(1)提取水体
利用水体指数NDWI提取水体,即 Normalized Difference Water Index,(归一化水指数),计算方法如下:NDWI =(p(Green)-p(NIR))/(p(Green)+p(NIR))
即:NDWI = (band3 - band8) / (band3 + band8)

GEE中sentinel2数据:

python哨兵一号 哨兵一号和哨兵二号_python哨兵一号_08


sentinel2计算NDWI:var ndwi = s2_nocloud.map(s2_ndwi).select("NDWI").reduce(ee.Reducer.mean()); 具体代码可参考:https://zhuanlan.zhihu.com/p/29706090(2)水体指数

python哨兵一号 哨兵一号和哨兵二号_其他_09


python哨兵一号 哨兵一号和哨兵二号_其他_10


sentinel2波段空间分辨率:

python哨兵一号 哨兵一号和哨兵二号_python哨兵一号_11


图片来源:https://www.tandfonline.com/doi/pdf/10.1080/22797254.2017.1297540 各遥感卫星计算NDWI,所需波段:

python哨兵一号 哨兵一号和哨兵二号_软件下载_12


取值说明:大于0.5的指标值通常对应于水体。植被通常对应的值要小得多,建成区对应的值在0到0.2之间。

(3)Github上相关的项目
利用L2A Sentinel 2数据产品提取水体:https://github.com/cordmaur/WaterDetect